<?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>238066</bug_id>
          
          <creation_ts>2022-03-17 23:47:34 -0700</creation_ts>
          <short_desc>[GPU Process] [GraphicsContextState 2/] Make GraphicsContextState keep track of changes till they are applied</short_desc>
          <delta_ts>2022-03-22 16:49:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237728</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852622</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-17 23:47:34 -0700</bug_when>
    <thetext>A member of type GraphicsContextState::ChangeFlags will be added to GraphicsContextState to keep track of what has changes since it was last applied. We will eliminate the struct GraphicsContextStateChange.

We will have to have a single member for every GraphicsContextState::Change. 

1. We will combine the color, the pattern, the gradient and the gradient space transform in one class called SourceBrush.
2. We will combine the shadow offset, the shadow blurRadius, the show color and the radius mode in one struct called DropShadow
3. We will combine the CompositeOperator and the BledMode in one struct called CompositeMode.

GraphicsContextStateChange will handle setting its members, its encoding and decoding and its streaming to text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852624</commentid>
    <comment_count>1</comment_count>
      <attachid>455069</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-17 23:54:53 -0700</bug_when>
    <thetext>Created attachment 455069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852626</commentid>
    <comment_count>2</comment_count>
      <attachid>455070</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-18 00:00:16 -0700</bug_when>
    <thetext>Created attachment 455070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852642</commentid>
    <comment_count>3</comment_count>
      <attachid>455075</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-18 01:05:53 -0700</bug_when>
    <thetext>Created attachment 455075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852650</commentid>
    <comment_count>4</comment_count>
      <attachid>455077</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-18 01:32:14 -0700</bug_when>
    <thetext>Created attachment 455077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852660</commentid>
    <comment_count>5</comment_count>
      <attachid>455079</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-18 02:02:43 -0700</bug_when>
    <thetext>Created attachment 455079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852860</commentid>
    <comment_count>6</comment_count>
      <attachid>455143</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-18 15:25:44 -0700</bug_when>
    <thetext>Created attachment 455143
Investigate Cairo failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852861</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-03-18 15:27:12 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852905</commentid>
    <comment_count>8</comment_count>
      <attachid>455154</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-18 17:26:21 -0700</bug_when>
    <thetext>Created attachment 455154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853048</commentid>
    <comment_count>9</comment_count>
      <attachid>455190</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-20 00:26:46 -0700</bug_when>
    <thetext>Created attachment 455190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853050</commentid>
    <comment_count>10</comment_count>
      <attachid>455192</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-20 02:27:18 -0700</bug_when>
    <thetext>Created attachment 455192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853101</commentid>
    <comment_count>11</comment_count>
      <attachid>455211</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-20 19:28:23 -0700</bug_when>
    <thetext>Created attachment 455211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853260</commentid>
    <comment_count>12</comment_count>
      <attachid>455211</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-21 11:10:36 -0700</bug_when>
    <thetext>Comment on attachment 455211
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContextState.cpp:89
&gt; +#if USE(CG)

Ideally this would be in GraphicsContextCG somewhere.

&gt; Source/WebCore/platform/graphics/GraphicsContextState.cpp:100
&gt; +#if USE(CG)
&gt; +    // CGContextBeginTransparencyLayer() sets the CG global alpha to 1. Resore our alpha now.
&gt; +    alpha = originalOpacity;
&gt; +#else

Ditto

&gt; Source/WebCore/platform/graphics/GraphicsContextState.cpp:136
&gt; +    unsigned index = static_cast&lt;unsigned&gt;(log2(mask));
&gt; +    return stateChangeNames[index];

I think a switch would be preferable. It&apos;s too easy for this to get out of sync.

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:162
&gt; +        ts &lt;&lt; &quot;DO-NOT-INTERPOLATE&quot;;

lowercase please

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:171
&gt; +        ts &lt;&lt; &quot;HEIGH&quot;;

spelling

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:227
&gt; +        ts &lt;&lt; &quot;NO-STROKE&quot;;

lowercase please

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:252
&gt; +        ts &lt;&lt; &quot;FILL&quot;;

lowercase

&gt; Source/WebCore/platform/graphics/SourceBrush.h:66
&gt; +    bool isPrimitive() const { return !m_brush &amp;&amp; m_color.tryGetAsSRGBABytes(); }

It&apos;s not clear what &quot;primitive&quot; means here. Seems like it&apos;s asking if it&apos;s a inline sRGB color.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:597
&gt; +    bool shouldFill = context.fillPattern() || context.fillColor().isVisible();

Should this be calling a function on the SourceBrush? From reading this, it&apos;s not clear if a gradient fill will return true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853294</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-21 12:31:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/90585183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853411</commentid>
    <comment_count>14</comment_count>
      <attachid>455298</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-21 16:43:42 -0700</bug_when>
    <thetext>Created attachment 455298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853456</commentid>
    <comment_count>15</comment_count>
      <attachid>455211</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-21 18:08:03 -0700</bug_when>
    <thetext>Comment on attachment 455211
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContextState.cpp:89
&gt;&gt; +#if USE(CG)
&gt; 
&gt; Ideally this would be in GraphicsContextCG somewhere.

But this is also called by DisplayList::Recorder.

&gt;&gt; Source/WebCore/platform/graphics/SourceBrush.h:66
&gt;&gt; +    bool isPrimitive() const { return !m_brush &amp;&amp; m_color.tryGetAsSRGBABytes(); }
&gt; 
&gt; It&apos;s not clear what &quot;primitive&quot; means here. Seems like it&apos;s asking if it&apos;s a inline sRGB color.

I called it isInlineColor().

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:597
&gt;&gt; +    bool shouldFill = context.fillPattern() || context.fillColor().isVisible();
&gt; 
&gt; Should this be calling a function on the SourceBrush? From reading this, it&apos;s not clear if a gradient fill will return true.

I added the function SourceBrush::isVisible() to replace these checks. And it is okay to check or not check the gradient because the only caller to this function (i.e. drawPath()) handles the gradient case separately before calling this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853506</commentid>
    <comment_count>16</comment_count>
      <attachid>455326</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-21 20:52:06 -0700</bug_when>
    <thetext>Created attachment 455326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853532</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-21 22:27:38 -0700</bug_when>
    <thetext>Committed r291604 (248697@main): &lt;https://commits.webkit.org/248697@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455326.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853874</commentid>
    <comment_count>18</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-22 13:07:42 -0700</bug_when>
    <thetext>*** Bug 236919 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854003</commentid>
    <comment_count>19</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-22 16:48:28 -0700</bug_when>
    <thetext>*** Bug 237685 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854007</commentid>
    <comment_count>20</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-22 16:49:20 -0700</bug_when>
    <thetext>*** Bug 237686 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455069</attachid>
            <date>2022-03-17 23:54:53 -0700</date>
            <delta_ts>2022-03-18 00:00:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220317235452.patch</filename>
            <type>text/plain</type>
            <size>173421</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmNjEyZTEwYjhiN2Iz
ZGIzNDRmMWY2NDE5YmE0MzQzYzI3ZmJiMy4uMDE1OTM5YjViYjNiNTY1ZTIzYjA1MzBiYmQ2OGUw
ODE5ZWZmYmQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0xNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENHOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpjYWxj
dWxhdGVEcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
ZHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0dTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dENHOjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2gpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTSk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dJc0NsZWFyZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFn
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hhbmdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250
ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmV4dGVudEZy
b21Mb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlU3Ryb2tlU3R5
bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQXBwbGUgUGF5XSB2ZXJzaW9uIHZhbHVlcyBhcmUgaW5jb3JyZWN0LCBj
YXVzaW5nIGluY29ycmVjdCBmZWF0dXJlIGRldGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NWZjYWJlMjU1
YzE2MTIxZDg1YmZlMzBkZTE5ZmRmMmJkMTJiNTY1Li5jZWQxMzc2MGM0ZmY3ZDRlMDY2ODI3NjBh
ZTY1Mjg4OGMyYTM2NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAzLTE3ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgdGlsbCB0
aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzgwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMy0xNiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgdXBkYXRlIGFz
c2VydGlvbiBzdGF0ZSBmb3IgZXhpc3RpbmcgZGVmYXVsdCBuZXR3b3JrIHByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDJkZWQwOTdjYWE2YTMxNGQ4NWRlNTMxMDhhODUwZGE1MThjNDg5ZmMu
LmViY2I1MzE3Y2Q3ZjM5YmJhYWU0MjMwYThlZjVkYjE2ZjMwNGFhNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTU3MSw2ICsxNTcxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaG91bGRM
b2NhbGl6ZUF4aXNOYW1lcy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUltYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDNjYzEyZjdjMjU5YTUwNjZmYjMz
MzlmZjhmMjI0ZWY2YTg2Y2ZiOS4uZWI3NmExODZkMzQ4ZDRiMzY4OWYyMzRmM2RiZjYyODJhYWFk
ZTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwODUsNiArMjA4NSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQx
MjcxNzBkYmQ3MDMyNDhkNWNiMWFlODk5YzU2ZmNkYTJiZjY4ZjEuLjNiMzQwZDI3ZGJkMDBkOTIw
ZTBiMDAxOTQ5ZjVkMWU4NjRmYzU2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNjMsNiArMjM2Myw3IEBACiAJCTcyRDcz
NjQ0Mjc4NDYxQTAwMDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZFRjggLyog
RmlsdGVyUmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0Rv
bWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJG
NjY3REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJGN0U3NDYyNzlC
OEY3NTAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkQzMEFBMjdFMzIxN0IwMDIzQ0RBQyAv
KiBTb3VyY2VCcnVzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rv
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTND
RkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLzsgfTsKIAkJ
NzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBDRTBCMzAwN0ZDMEFD
IC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyog
SlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NzkzRUM3MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oICovOyB9
OwpAQCAtMTE0MjYsNiArMTE0MjcsOCBAQAogCQk3MkZCMjM4NzIyNDk3QjE1MDA3RTVBQzcgLyog
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGQjIzODgyMjQ5N0IxNTAwN0U1QUM3IC8qIFNWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MkZCMjM5NjIyNEIwN0I5MDA3RTVBQzcgLyogU1ZHUGF0aFNlZ0ltcGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0ltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzJGRDMwQTkyN0UzMjE3QTAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUJydXNoLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFD
IC8qIFNvdXJjZUJydXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJj
ZUJydXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTNDRkU2MTA4RjQ3M0Yw
MEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc1NTNDRkU3MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU3OTNFODAwRDBD
RTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI5MTUwLDYgKzI5MTUzLDggQEAKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAg
LyogU2hhZG93Qmx1ci5jcHAgKi8sCiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNo
YWRvd0JsdXIuaCAqLywKIAkJCQkxQzREQjAyNDI3MzM5RTVFMDA3QjBBRDEgLyogU2hvdWxkTG9j
YWxpemVBeGlzTmFtZXMuaCAqLywKKwkJCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291
cmNlQnJ1c2guY3BwICovLAorCQkJCTcyRkQzMEFBMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VC
cnVzaC5oICovLAogCQkJCTFERDEyN0FDMjU2RTNBODcwMEIyMjdENyAvKiBTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcCAqLywKIAkJCQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZS5oICovLAogCQkJCUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LmggKi8sCkBAIC0zNzM3NCw2ICszNzM3OSw3IEBACiAJCQkJNTEw
RDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhh
bmRsZUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0QTgxRjNFMEZDN0RGRjAwMDk1NTMwMCAv
KiBTb3VyY2VBbHBoYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJGRDMwQUMyN0UzMjE3QjAwMjND
REFDIC8qIFNvdXJjZUJydXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk2MjE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk2NTE3
QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RGMTM1MDkyNEM5RkNBMzAwNDMyRTFFIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zNzk0NCw2ICszNzk1MCw3IEBACiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMz
RTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2
MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTYwNDkzMzI3NDNCMEU4MDBBODZGQTAgLyogVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAw
NzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzRkJDNEFGNDE4OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc5NTQsNyAr
Mzc5NjEsNiBAQAogCQkJCUNERTgzREIyMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNr
UXVhbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1MDMzQTgyNTJCRDM2ODAwRjcwQ0UzIC8q
IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1N0Ix
M0UyMTRBRTc5OTAwNzk0QjBEIC8qIFZpZGVvUHJlc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTYwNDkzMzI3NDNCMEU4MDBBODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RDOTM5QTgxRTlCREZCMTAwQkI3NjhEIC8qIFZpZGVvVG9vbGJveFNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTgyNzAyM0EyQTAwNjE3RUI2
IC8qIFZpZGVvVHJhY2tDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAppbmRleCAwZTc4MDYzZTNhNDFjYmM2OTBmMGQwY2NiNzg4MTE3ZGU2OTM4YTAyLi42YWU0NTQ4
MzYyMzRmZDkzMTkxOTQ2OGM3ZjRiOTI3YTJiNzM1OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cApAQCAtMjQzMiwxOSArMjQzMiwxNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogCiAgICAg
ICAgICAgICBGbG9hdFNpemUgb2Zmc2V0KDAsIDIgKiBtYXNrUmVjdC5oZWlnaHQoKSk7CiAKLSAg
ICAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgICAgICBmbG9hdCBzaGFk
b3dSYWRpdXM7Ci0gICAgICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICAgICAgICAgIGMt
PmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOworICAg
ICAgICAgICAgYXV0byBkcm9wU2hhZG93ID0gYy0+ZHJvcFNoYWRvdygpOwogCiAgICAgICAgICAg
ICBGbG9hdFJlY3Qgc2hhZG93UmVjdChtYXNrUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dSZWN0
LmluZmxhdGUoc2hhZG93UmFkaXVzICogMS40KTsKLSAgICAgICAgICAgIHNoYWRvd1JlY3QubW92
ZShzaGFkb3dPZmZzZXQgKiAtMSk7CisgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUoZHJv
cFNoYWRvdy5ibHVyUmFkaXVzICogMS40KTsKKyAgICAgICAgICAgIHNoYWRvd1JlY3QubW92ZShk
cm9wU2hhZG93Lm9mZnNldCAqIC0xKTsKICAgICAgICAgICAgIGMtPmNsaXAoc2hhZG93UmVjdCk7
CiAKLSAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CisgICAgICAgICAgICBkcm9w
U2hhZG93Lm9mZnNldCArPSBvZmZzZXQ7CiAKLSAgICAgICAgICAgIGMtPnNldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIFNoYWRvd1JhZGl1c01vZGU6Okxl
Z2FjeSk7CisgICAgICAgICAgICBjLT5zZXRTaGFkb3coZHJvcFNoYWRvdy5vZmZzZXQsIGRyb3BT
aGFkb3cuYmx1clJhZGl1cywgZHJvcFNoYWRvdy5jb2xvciwgU2hhZG93UmFkaXVzTW9kZTo6TGVn
YWN5KTsKIAogICAgICAgICAgICAgaWYgKGZpbGwpCiAgICAgICAgICAgICAgICAgYy0+c2V0Rmls
bENvbG9yKENvbG9yOjpibGFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDlm
ZDI1ZDgwYWQxMmRjOTFkZDExZjkxNTk4ZmM2YzhlZmE0Y2IyYTIuLjFiZDY3NTllODA5ZjNlN2U4
ODg2NWExNzkxZjk5Nzc1NWRiMDY4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBA
IC00MzAsMTMgKzQzMCwxNCBAQCBib29sIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnN1cHBv
cnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpbWFyeUNvbnRleHQuc3Vw
cG9ydHNJbnRlcm5hbExpbmtzKCk7CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dDo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dDo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKQogewogICAgIC8vIFRoaXMgY2FsbHMgdXBkYXRlU3RhdGUoKSBpbnN0ZWFkIG9mIGRpZFVw
ZGF0ZVN0YXRlKCkgc28gdGhhdCBjaGFuZ2VzCiAgICAgLy8gYXJlIGFsc28gYXBwbGllZCB0byBl
YWNoIGNvbnRleHQncyBHcmFwaGljc0NvbnRleHRTdGF0ZSwgc28gdGhhdCBjb2RlCiAgICAgLy8g
aW50ZXJuYWwgdG8gdGhlIGNoaWxkIGNvbnRleHRzIHRoYXQgcmVhZHMgZnJvbSB0aGUgc3RhdGUg
Z2V0cyB0aGUgcmlnaHQgdmFsdWVzLgotICAgIG1fcHJpbWFyeUNvbnRleHQudXBkYXRlU3RhdGUo
c3RhdGUsIGZsYWdzKTsKLSAgICBtX3NlY29uZGFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUs
IGZsYWdzKTsKKyAgICBtX3ByaW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBt
X3NlY29uZGFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5
Q2hhbmdlcygpOwogfQogCiAjaWYgT1MoV0lORE9XUykgJiYgIVVTRShDQUlSTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAppbmRleCBmNThiMzRjOTE0MzQyYjczNzc3MjdjMTFhNzNiNmQ4MjE4ZTE1
NTZmLi5hM2YwZDE5ODZmZjFlMzU4ZDc2MTRjODBjNDJlMzY3ZGQzN2YwMjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
dXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogCiAjaWYgT1MoV0lORE9XUykgJiYgIVVTRShDQUlSTykK
ICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGRlcHJlY2F0ZWRQcml2YXRlQ29u
dGV4dCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAyNWEzZDNmZTg3NzMzMWRkYTM5NTc4
MDExYjZkODkwZjIxMmM3MmU2Li5lYTY5MzViZDA2ODIyZjExM2RiYmIwNjE0MWUzMGRmOGEyMjU0
ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5
cGhzUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3
R2x5cGhzUmVjb3JkZXIuaApAQCAtODQsMTUgKzg0LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CiAg
ICAgdm9pZCBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogCi0gICAgdm9pZCB1cGRhdGVGaWxs
Q29sb3IoY29uc3QgQ29sb3ImLCBHcmFkaWVudCogPSBudWxscHRyLCBQYXR0ZXJuKiA9IG51bGxw
dHIpOwotICAgIHZvaWQgdXBkYXRlU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBHcmFkaWVudCog
PSBudWxscHRyLCBQYXR0ZXJuKiA9IG51bGxwdHIpOworICAgIHZvaWQgdXBkYXRlRmlsbEJydXNo
KGNvbnN0IFNvdXJjZUJydXNoJik7CisgICAgdm9pZCB1cGRhdGVTdHJva2VCcnVzaChjb25zdCBT
b3VyY2VCcnVzaCYpOwogICAgIHZvaWQgdXBkYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
OwogICAgIGVudW0gY2xhc3MgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgewogICAgICAgICBVbnNw
ZWNpZmllZCwKICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCB1cGRh
dGVTaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIs
IGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAg
IHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmLCBTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CiAKICNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQogICAgIHZvaWQg
dXBkYXRlU2hhZG93KENHU3R5bGVSZWYpOwpAQCAtMTExLDI3ICsxMTEsMTMgQEAgcHJpdmF0ZToK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9vcmlnaW5hbFRleHRNYXRyaXg7CiAKICAgICBzdHJ1Y3Qg
U3RhdGUgewotICAgICAgICBzdHJ1Y3QgU3R5bGUgewotICAgICAgICAgICAgQ29sb3IgY29sb3I7
Ci0gICAgICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OwotICAgICAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgICAgICAgICBSZWZQdHI8
UGF0dGVybj4gcGF0dGVybjsKLSAgICAgICAgfTsKLSAgICAgICAgU3R5bGUgZmlsbFN0eWxlOwot
ICAgICAgICBTdHlsZSBzdHJva2VTdHlsZTsKLQorICAgICAgICBTb3VyY2VCcnVzaCBmaWxsQnJ1
c2g7CisgICAgICAgIFNvdXJjZUJydXNoIHN0cm9rZUJydXNoOwogICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gY3RtOwotCi0gICAgICAgIHN0cnVjdCBTaGFkb3dTdGF0ZSB7Ci0gICAgICAgICAgICBG
bG9hdFNpemUgb2Zmc2V0OwotICAgICAgICAgICAgZmxvYXQgYmx1ciB7IDAgfTsKLSAgICAgICAg
ICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zIHsgZmFs
c2UgfTsKLSAgICAgICAgfTsKLSAgICAgICAgU2hhZG93U3RhdGUgc2hhZG93OworICAgICAgICBE
cm9wU2hhZG93IGRyb3BTaGFkb3c7CisgICAgICAgIGJvb2wgaWdub3JlVHJhbnNmb3JtcyB7IGZh
bHNlIH07CiAgICAgfTsKICAgICBTdGF0ZSBtX29yaWdpbmFsU3RhdGU7Ci0gICAgU3RhdGUgbV9j
dXJyZW50U3RhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAz
YzM3NGZkOWJhODI3Yzk0YjdmMzRiNzQ0NmE1ZjdhYmM4YTNlODYzLi4wMzEwMzAwYWE0ZTg5NDBk
ZmFhNzYzZTM0ZTFiMGJjOTJhYTNmZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQzLDYgKzQzLDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiBjaGFuZ2VGbGFncykKKyAg
ICA6IG1fc3RhdGUoY2hhbmdlRmxhZ3MpCit7Cit9CisKIEdyYXBoaWNzQ29udGV4dDo6fkdyYXBo
aWNzQ29udGV4dCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKQEAgLTcwLDEw
ICs3NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgICAgIG1fc3Rh
Y2suY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29u
dGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdl
cyhzdGF0ZSwgZmxhZ3MpOwotICAgIGRpZFVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAg
bV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOworICAgIGRpZFVw
ZGF0ZVN0YXRlKG1fc3RhdGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNl
ZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgZWxsaXBzZUNvbG9y
LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IpCkBAIC05Myw4NCArOTgsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgZWxsaQogICAgIHJlc3RvcmUoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBtX3N0YXRlLnN0cm9r
ZUNvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7Ci0g
ICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIFNoYWRvd1JhZGl1c01vZGUgcmFkaXVzTW9k
ZSkKLXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IG9mZnNldDsKLSAgICBtX3N0YXRlLnNo
YWRvd0JsdXIgPSBibHVyOwotICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBjb2xvcjsKLSAgICBt
X3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSByYWRpdXNNb2RlOwotICAgIGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQotewotICAgIG1fc3RhdGUuc2hhZG93T2Zm
c2V0ID0gRmxvYXRTaXplKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gMDsKLSAgICBtX3N0
YXRlLnNoYWRvd0NvbG9yID0gQ29sb3IoKTsKLSAgICBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUg
PSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0OwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotfQotCi1ib29sIEdyYXBoaWNz
Q29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3Im
IGNvbG9yKSBjb25zdAotewotICAgIG9mZnNldCA9IG1fc3RhdGUuc2hhZG93T2Zmc2V0OwotICAg
IGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7Ci0gICAgY29sb3IgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yOwotCi0gICAgcmV0dXJuIGhhc1NoYWRvdygpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBtX3N0YXRlLmZpbGxD
b2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBt
X3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKLXsK
LSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGll
bnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUocGF0dGVy
bik7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKLXsKLSAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IHsgfTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5m
aWxsUGF0dGVybiA9IFdURk1vdmUocGF0dGVybik7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVu
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKQot
ewotICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSA9IHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5z
dHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBt
X3N0YXRlLmZpbGxDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1v
dmUoZ3JhZGllbnQpOwotICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBm
aWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlKTsKLSAgICAvLyBGSVhNRTogYWxzbyBmaWxsIHBhdHRlcm4/Ci19
Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0KQog
ewogICAgICsrbV90cmFuc3BhcmVuY3lMYXllckNvdW50OwpAQCAtNDkxLDEzICs0MTgsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIHNldEZpbGxDb2xvcihvbGRGaWxsQ29sb3IpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKLXsKLSAg
ICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwotICAgIG1f
c3RhdGUuYmxlbmRNb2RlID0gYmxlbmRNb2RlOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotfQotCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9p
bnQmIHAxLCBGbG9hdFBvaW50JiBwMiwgZmxvYXQgc3Ryb2tlV2lkdGgsIFN0cm9rZVN0eWxlIHBl
blN0eWxlKQogewogICAgIC8vIEZvciBvZGQgd2lkdGhzLCB3ZSBhZGQgaW4gMC41IHRvIHRoZSBh
cHByb3ByaWF0ZSB4L3kgc28gdGhhdCB0aGUgZmxvYXQgYXJpdGhtZXRpYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAzOWYz
MDFkZTYwZmM1Mzk0YzJjYTE0NGVlNzUxMDhiM2ZjNmQzZmVmLi5mYjIzN2E1MGU5YjA1OTQyYzk5
Mjk1YzYxNjczOGJjZTRlZTUyNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNjQsOSArNjQsOCBAQCBzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6ICAgCi0KLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQo
KSA9IGRlZmF1bHQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdmlydHVhbCBi
b29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04MCw4
MyArNzksOTAgQEAgcHVibGljOgogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQogCi0gICAgdm9pZCBz
ZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKSB7IG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzID0gdGhpY2tuZXNzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKTsgfQotICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9Ci0KLSAgICB2b2lk
IHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc3Ryb2tlU3R5bGUg
PSBzdHlsZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVN0eWxlQ2hhbmdlKTsgfQotICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwotICAgIGNvbnN0IENvbG9yJiBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7Ci0gICAgUGF0
dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlUGF0dGVy
bi5nZXQoKTsgfQorICAgIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLmZpbGxCcnVzaC5jb2xvcigpOyB9CisgICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCk7IH0KKyAgICBQYXR0
ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLnBhdHRl
cm4oKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCk7IH0KKyAgICB2b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1
c2gpIHsgbV9zdGF0ZS5zZXRGaWxsQnJ1c2goYnJ1c2gpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQorICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0YXRl
LnNldEZpbGxDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9p
ZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3RhdGUuc2V0Rmls
bFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9Cisg
ICAgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7IG1fc3RhdGUuc2V0RmlsbEdy
YWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZUdyYWRpZW50
KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7Ci0gICAgR3Jh
ZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC5nZXQoKTsgfQotCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkg
eyBtX3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSk7IH0KICAgICBXaW5kUnVsZSBmaWxs
UnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7IH0KKyAgICB2b2lkIHNldEZp
bGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuc2V0RmlsbFJ1bGUoZmlsbFJ1bGUp
OyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorCisgICAgY29uc3QgQ29sb3ImIHN0cm9rZUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOyB9CisgICAg
R3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VC
cnVzaC5ncmFkaWVudCgpOyB9CisgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigpOyB9CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICB2b2lk
IHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRlLnNldFN0
cm9rZUJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNl
dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0YXRlLnNldFN0cm9rZUNvbG9y
KGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBtX3N0YXRlLnNldFN0cm9rZVBhdHRlcm4o
V1RGTW92ZShwYXR0ZXJuKSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBz
ZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRTdHJva2VHcmFkaWVu
dChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImKTsKLSAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5maWxsQ29sb3I7IH0KKyAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsgfQorICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNz
KGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3Mp
OyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7Ci0gICAgUGF0dGVybiogZmlsbFBhdHRlcm4o
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpOyB9CisgICAgU3Ryb2tl
U3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9
CisgICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRlLnNl
dFN0cm9rZVN0eWxlKHN0eWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKworICAgIGNv
bnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyb3BT
aGFkb3c7IH0KKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gZHJv
cFNoYWRvdygpLm9mZnNldDsgfQorICAgIGZsb2F0IHNoYWRvd0JsdXIoKSBjb25zdCB7IHJldHVy
biBkcm9wU2hhZG93KCkuYmx1clJhZGl1czsgfQorICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5jb2xvcjsgfQorICAgIHZvaWQgc2V0RHJv
cFNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KSB7IG1fc3RhdGUuc2V0RHJvcFNo
YWRvdyhkcm9wU2hhZG93KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNl
dFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1clJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNNb2RlIHNoYWRvd1JhZGl1c01vZGUgPSBTaGFkb3dS
YWRpdXNNb2RlOjpEZWZhdWx0KSB7IHNldERyb3BTaGFkb3coeyBvZmZzZXQsIGJsdXJSYWRpdXMs
IGNvbG9yLCBzaGFkb3dSYWRpdXNNb2RlIH0pOyB9CisgICAgdm9pZCBjbGVhclNoYWRvdygpIHsg
c2V0RHJvcFNoYWRvdyh7IH0pOyB9CisKKyAgICBib29sIGhhc1Zpc2libGVTaGFkb3coKSBjb25z
dCB7IHJldHVybiBkcm9wU2hhZG93KCkuaXNWaXNpYmxlKCk7IH0KKyAgICBib29sIGhhc0JsdXJy
ZWRTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaXNCbHVycmVkKCk7IH0KKyAg
ICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5oYXNPdXRzZXRz
KCk7IH0KKworICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuY29tcG9zaXRlTW9kZTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb247IH0K
KyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gY29tcG9zaXRlTW9kZSgp
LmJsZW5kTW9kZTsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNv
bXBvc2l0ZU1vZGUpIHsgbV9zdGF0ZS5zZXRDb21wb3NpdGVNb2RlKGNvbXBvc2l0ZU1vZGUpOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5k
TW9kZTo6Tm9ybWFsKSB7IHNldENvbXBvc2l0ZU1vZGUoeyBvcGVyYXRpb24sIGJsZW5kTW9kZSB9
KTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRp
ZW50PiYmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mID0geyB9KTsKLSAgICBHcmFkaWVudCogZmls
bEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCk7IH0K
KyAgICBmbG9hdCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYWxwaGE7IH0KKyAgICB2
b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuc2V0QWxwaGEoYWxwaGEpOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc3RhdGUuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
KTsgfQotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgVGV4dERyYXdpbmdNb2RlRmxh
Z3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01v
ZGU7IH0KKyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0
ZXh0RHJhd2luZ01vZGUpIHsgbV9zdGF0ZS5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdN
b2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICAKKyAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkpIHsgbV9zdGF0ZS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRT
aG91bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgbV9zdGF0ZS5zaG91bGRBbnRp
YWxpYXMgPSBzaG91bGRBbnRpYWxpYXM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRB
bnRpYWxpYXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZEFudGlhbGlhczsgfQorICAg
IHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3RhdGUu
c2V0U2hvdWxkQW50aWFsaWFzKHNob3VsZEFudGlhbGlhcyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUpOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3Ro
Rm9udHMpIHsgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IHNob3VsZFNtb290aEZvbnRzOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3Ro
Rm9udHNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290
aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTbW9vdGhG
b250cyhzaG91bGRTbW9vdGhGb250cyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKICAg
ICAvLyBOb3JtYWxseSBDRyBlbmFibGVzIHN1YnBpeGVsLXF1YW50aXphdGlvbiBiZWNhdXNlIGl0
IGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBvZiBhbGlnbmluZyBnbHlwaHMuCiAgICAgLy8gSW4g
c29tZSBjYXNlcyB3ZSBoYXZlIHRvIGRpc2FibGUgdG8gdG8gZW5zdXJlIGEgaGlnaC1xdWFsaXR5
IG91dHB1dCBvZiB0aGUgZ2x5cGhzLgotICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IG1fc3RhdGUuc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7
IH0KKyAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cykgeyBtX3N0YXRlLnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyhzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQogCi0gICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IHF1YWxpdHkpIHsgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0g
cXVhbGl0eTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpOyB9Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQotCi0gICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBo
YSkgeyBtX3N0YXRlLmFscGhhID0gYWxwaGE7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSk7IH0KLSAgICBmbG9hdCBhbHBoYSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuYWxwaGE7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGU6Ok5vcm1hbCk7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsgfQotICAgIEJsZW5kTW9k
ZSBibGVuZE1vZGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmJsZW5kTW9kZTsg
fQorICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc3RhdGUuc2V0U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRy
YXdMdW1pbmFuY2VNYXNrKSB7IG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2sgPSBkcmF3THVtaW5h
bmNlTWFzazsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRy
YXdMdW1pbmFuY2VNYXNrQ2hhbmdlKTsgfQogICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9Ci0KLSAgICB2b2lkIHNl
dFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKSB7IG1fc3RhdGUudGV4
dERyYXdpbmdNb2RlID0gbW9kZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSk7IH0KLSAgICBUZXh0RHJhd2luZ01vZGVG
bGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5n
TW9kZTsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRT
aXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBTaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93
UmFkaXVzTW9kZTo6RGVmYXVsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNs
ZWFyU2hhZG93KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXpl
JiwgZmxvYXQmLCBDb2xvciYpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNWaXNpYmxlU2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dDb2xvci5pc1Zpc2libGUoKTsgfQotICAgIGJv
b2wgaGFzU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIChtX3N0
YXRlLnNoYWRvd0JsdXIgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSB8fCBtX3N0YXRl
LnNoYWRvd09mZnNldC5oZWlnaHQoKSk7IH0KLSAgICBib29sIGhhc0JsdXJyZWRTaGFkb3coKSBj
b25zdCB7IHJldHVybiBoYXNWaXNpYmxlU2hhZG93KCkgJiYgbV9zdGF0ZS5zaGFkb3dCbHVyOyB9
CisgICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7
IG1fc3RhdGUuc2V0RHJhd0x1bWluYW5jZU1hc2soZHJhd0x1bWluYW5jZU1hc2spOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgbV9z
dGF0ZS51c2VEYXJrQXBwZWFyYW5jZSA9IHVzZURhcmtBcHBlYXJhbmNlOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2Up
OyB9CiAgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
dXNlRGFya0FwcGVhcmFuY2U7IH0KKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wg
dXNlRGFya0FwcGVhcmFuY2UpIHsgbV9zdGF0ZS5zZXRVc2VEYXJrQXBwZWFyYW5jZSh1c2VEYXJr
QXBwZWFyYW5jZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQorICAgIHZvaWQgbWVyZ2VTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRl
PiYgbGFzdERyYXdpbmdTdGF0ZSkgeyBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgbGFzdERy
YXdpbmdTdGF0ZSk7IH0KIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAg
dm9pZCB1cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIC8vIENhbGxlZCAqYWZ0ZXIqIGFueSBjaGFuZ2UgdG8gR3JhcGhpY3NDb250ZXh0
U3RhdGU7IGdlbmVyYWxseSB1c2VkIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzCiAgICAgLy8gdG8gdGhl
IHBsYXRmb3JtIGNvbnRleHQncyBzdGF0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFw
aGljc0NvbnRleHRTdGF0ZSYpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzYXZlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFN0YXRlLmNwcAppbmRleCA1MmNhZGQ2NDkxOTM1NDA4NjY0YzI3NmZjZTNkNTk5ZTYxNGY5
YWYzLi4xNTNhMWJmNmEzMWVmMmE3MzE2NWVlNDRhMDU3N2E1NzA3Yjk3ZjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
U3RhdGUuY3BwCkBAIC0yNiwzMDEgKzI2LDE0OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dFN0YXRlLmgiCiAKLSNpbmNsdWRlICJHcmFkaWVudC5oIgot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2Rl
ZmluZSBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShmbGFnLCBwcm9wZXJ0eSkgXAotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnKSAmJiAo
bV9zdGF0ZS5wcm9wZXJ0eSAhPSBzdGF0ZS5wcm9wZXJ0eSkpIFwKLSAgICAgICAgY2hhbmdlRmxh
Z3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnKTsKLQotR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICA6IHNob3VsZEFudGlhbGlhcyh0cnVlKQot
ICAgICwgc2hvdWxkU21vb3RoRm9udHModHJ1ZSkKLSAgICAsIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyh0cnVlKQotICAgICwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCi0gICAg
LCBkcmF3THVtaW5hbmNlTWFzayhmYWxzZSkKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZShjb25zdCBDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCisgICAgOiBjaGFu
Z2VGbGFncyhjaGFuZ2VGbGFncykKIHsKIH0KIAotR3JhcGhpY3NDb250ZXh0U3RhdGU6On5HcmFw
aGljc0NvbnRleHRTdGF0ZSgpID0gZGVmYXVsdDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gZGVmYXVsdDsK
LUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250
ZXh0U3RhdGU6Om9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gZGVmYXVs
dDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3BlcmF0b3I9
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0gZGVmYXVsdDsKLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCitib29sIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0CiB7Ci0gICAg
YXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zQW55KHN0cm9rZUZsYWdzKSkgewotICAgICAgICBzdHJva2VDb2xvciA9IHN0YXRlLnN0cm9r
ZUNvbG9yOwotICAgICAgICBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50Owot
ICAgICAgICBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAgICB9Ci0KLSAg
ICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55
KGZpbGxGbGFncykpIHsKLSAgICAgICAgZmlsbENvbG9yID0gc3RhdGUuZmlsbENvbG9yOwotICAg
ICAgICBmaWxsR3JhZGllbnQgPSBzdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAgICAgIGZpbGxQYXR0
ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHNoYWRvd09m
ZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgc2hhZG93Qmx1ciA9IHN0YXRlLnNo
YWRvd0JsdXI7Ci0gICAgICAgIHNoYWRvd0NvbG9yID0gc3RhdGUuc2hhZG93Q29sb3I7Ci0gICAg
ICAgIHNoYWRvd1JhZGl1c01vZGUgPSBzdGF0ZS5zaGFkb3dSYWRpdXNNb2RlOwotICAgIH0KLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tu
ZXNzQ2hhbmdlKSkKLSAgICAgICAgc3Ryb2tlVGhpY2tuZXNzID0gc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0
RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0ZXh0RHJhd2luZ01vZGUgPSBzdGF0ZS50ZXh0
RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgc3Ryb2tlU3R5bGUgPSBzdGF0ZS5zdHJv
a2VTdHlsZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBmaWxsUnVsZSA9IHN0YXRlLmZpbGxSdWxlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgQ2hhbmdlRmxhZ3MgcHJpbWl0aXZlQ2hhbmdlRmxhZ3MgeyBDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdlOjpGaWxsQnJ1
c2ggfTsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxw
aGFDaGFuZ2UpKQotICAgICAgICBhbHBoYSA9IHN0YXRlLmFscGhhOworICAgIGlmIChjaGFuZ2VG
bGFncyAhPSAoY2hhbmdlRmxhZ3MgJiBwcmltaXRpdmVDaGFuZ2VGbGFncykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UgfSkpIHsKLSAgICAgICAgY29tcG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5j
b21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgYmxlbmRNb2RlID0gc3RhdGUuYmxlbmRNb2RlOwot
ICAgIH0KKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpTdHJva2VCcnVzaCkg
JiYgIXN0cm9rZUJydXNoLmlzUHJpbWl0aXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFs
aWFzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFs
aWFzOworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OkZpbGxCcnVzaCkgJiYg
IWZpbGxCcnVzaC5pc1ByaW1pdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRz
Q2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0ZS5zaG91bGRTbW9vdGhG
b250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwotCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgZHJhd0x1
bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQotICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNo
YW5nZSkpCi0gICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5OworICAgIHJldHVybiB0cnVlOworfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdp
bmdTdGF0ZSkKK3sKKyAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1
dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAoIXN0YXRl
LmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnByb3BlcnR5ID09IHN0YXRl
Lipwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+KnByb3BlcnR5
ID0gc3RhdGUuKnByb3BlcnR5OworICAgICAgICBjaGFuZ2VGbGFncy5zZXQoY2hhbmdlLCAhbGFz
dERyYXdpbmdTdGF0ZSB8fCAoKmxhc3REcmF3aW5nU3RhdGUpLipwcm9wZXJ0eSAhPSB0aGlzLT4q
cHJvcGVydHkpOworICAgIH07CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxCcnVzaCwg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gpOwor
ICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnN0cm9rZUJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpOwor
ICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKworICAgIG1lcmdlQ2hhbmdlKENo
YW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmNvbXBvc2l0ZU1vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJvcFNoYWRvdywg
ICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOwor
CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Omlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6VGV4dERy
YXdpbmdNb2RlLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3
aW5nTW9kZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkRyYXdM
dW1pbmFuY2VNYXNrLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVt
aW5hbmNlTWFzayk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdl
KSkKLSAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBzdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIAot
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKSBjb25zdAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVu
Y3lMYXllcigpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
Y2hhbmdlRmxhZ3M7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFk
aWVudENoYW5nZSwgc3Ryb2tlR3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKFN0cm9rZVBhdHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKLSAgICBD
SEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4p
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNoYWRvd0NoYW5nZSkKLSAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRl
LnNoYWRvd09mZnNldAotICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRl
LnNoYWRvd0JsdXIKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUu
c2hhZG93Q29sb3IpKQotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSk7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VUaGlja25lc3NDaGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5H
RURfUFJPUEVSVFkoVGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOwotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xv
cik7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxs
Q29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdl
LCBzdHJva2VTdHlsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVD
aGFuZ2UsIGZpbGxSdWxlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNo
YW5nZSwgYWxwaGEpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yICE9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2Rl
ICE9IHN0YXRlLmJsZW5kTW9kZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAgICBjaGFuZ2VG
bGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7Ci0gICAgfQot
Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBz
aG91bGRBbnRpYWxpYXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNt
b290aEZvbnRzQ2hhbmdlLCBzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5H
RURfUFJPUEVSVFkoU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAg
Q0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdM
dW1pbmFuY2VNYXNrKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLQotI2lm
IEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKKyNpZiBVU0Uo
Q0cpCisgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhlIENH
IGdsb2JhbCBhbHBoYSB0byAxLgorICAgIGFscGhhID0gMTsKICNlbmRpZgotCi0gICAgcmV0dXJu
IGNoYW5nZUZsYWdzOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1
bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCitzdGF0aWMgY29uc3QgY2hhciogc3RhdGVD
aGFuZ2VOYW1lKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UgY2hhbmdlKQogewotICAgIG1f
c3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBmbGFncyk7Ci0KLSAgICBhdXRvIHN0cm9rZUZsYWdz
ID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxh
Z3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShzdHJva2VGbGFncyk7Ci0KLSAgICBh
dXRvIGZpbGxGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZp
bGxGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGZpbGxGbGFncyk7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHN0YXRlQ2hhbmdlTmFtZXNbXSA9IHsKKyAgICAgICAg
ImZpbGwtYnJ1c2giLAorICAgICAgICAiZmlsbC1ydWxlIiwKKworICAgICAgICAic3Ryb2tlLWJy
dXNoIiwKKyAgICAgICAgInN0cm9rZS10aGlja25lc3MiLAorICAgICAgICAic3Ryb2tlLXN0eWxl
IiwKKworICAgICAgICAiY29tcG9zaXRlLW1vZGUiLAorICAgICAgICAiZHJvcC1zaGFkb3ciLAor
CisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJpbWFnZS1pbnRlcnBvbGF0aW9uLXF1YWxpdHki
LAorICAgICAgICAidGV4dC1kcmF3aW5nLW1vZGUiLAorCisgICAgICAgICJzaG91bGQtYW50aWFs
aWFzIiwKKyAgICAgICAgInNob3VsZC1zbW9vdGgtZm9udHMiLAorICAgICAgICAic2hvdWxkLXN1
YnBpeGVsLXF1YW50aXplLWZvbnRzIiwKKyAgICAgICAgInNoYWRvd3MtaWdub3JlLXRyYW5zZm9y
bXMiLAorICAgICAgICAiZHJhdy1sdW1pbmFuY2UtbWFzayIKKyNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQorICAgICAgICAsICJ1c2UtZGFyay1hcHBlYXJhbmNlIgorI2VuZGlmCisgICAg
fTsKIAotICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShjb21wb3NpdGVPcGVy
YXRvckZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0
b3JGbGFncyk7CisgICAgdW5zaWduZWQgbWFzayA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGFu
Z2UpOworICAgIEFTU0VSVCghKChtYXNrIC0gMSkgJiBtYXNrKSk7CiAKLSAgICBtX2NoYW5nZUZs
YWdzLmFkZChmbGFncyk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obG9nMihtYXNrKSk7CisgICAgcmV0dXJuIHN0YXRlQ2hhbmdlTmFtZXNbaW5kZXhdOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CitUZXh0U3RyZWFtJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHVtcChU
ZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICBjb250
ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50LCBtX3N0YXRlLnN0
cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ryb2tlUGF0dGVybik7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdy
YWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKm1fc3RhdGUu
ZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKm1fc3RhdGUuZmls
bFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhtX3N0YXRlLnNo
YWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0
YXRlLnNoYWRvd1JhZGl1c01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJh
d2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShtX3N0
YXRlLnRleHREcmF3aW5nTW9kZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9yKTsKKyAgICBhdXRv
IGR1bXAgPSBbJl0oQ2hhbmdlIGNoYW5nZSwgYXV0byBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnBy
b3BlcnR5LCBjb25zdCBTdHJpbmcmIG5hbWUpIHsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkobmFtZSwgdGhpcy0+
KnByb3BlcnR5KTsKKyAgICB9OwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VTdHlsZShtX3N0YXRlLnN0cm9rZVN0eWxlKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNoYW5nZS1mbGFncyIsIGNoYW5nZUZsYWdzKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0gICAgICAgIGNv
bnRleHQuc2V0RmlsbFJ1bGUobV9zdGF0ZS5maWxsUnVsZSk7CisgICAgZHVtcChDaGFuZ2U6OkZp
bGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxC
cnVzaCwgICAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6RmlsbEJydXNo
KSk7CisgICAgZHVtcChDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgc3RhdGVDaGFu
Z2VOYW1lKENoYW5nZTo6RmlsbFJ1bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0QWxwaGEobV9zdGF0ZS5hbHBoYSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZUJydXNoLCAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCAgICAg
ICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlQnJ1c2gpKTsKKyAgICBk
dW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hh
bmdlOjpTdHJva2VUaGlja25lc3MpKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsICAgICAg
ICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpTdHJva2VTdHlsZSkpOwogCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hh
bmdlIH0pKQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3N0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yLCBtX3N0YXRlLmJsZW5kTW9kZSk7CisgICAgZHVtcChDaGFuZ2U6OkNv
bXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBv
c2l0ZU1vZGUsICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6Q29tcG9zaXRl
TW9kZSkpOworICAgIGR1bXAoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgIHN0YXRl
Q2hhbmdlTmFtZShDaGFuZ2U6OkRyb3BTaGFkb3cpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhtX3N0YXRlLnNob3VsZEFudGlhbGlh
cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZFNt
b290aEZvbnRzKG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLQotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNl
TWFza0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2sobV9zdGF0
ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShtX3N0YXRlLmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIGR1bXAoQ2hhbmdlOjpBbHBoYSwgICAgICAgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkFscGhhKSk7CisgICAgZHVtcChDaGFu
Z2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgIGR1bXAoQ2hhbmdlOjpUZXh0RHJhd2luZ01v
ZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUs
ICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSkpOwog
CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgc3RhdGVDaGFuZ2VO
YW1lKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFNt
b290aEZvbnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU21vb3RoRm9u
dHMpKTsKKyAgICBkdW1wKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCBzdGF0ZUNo
YW5nZU5hbWUoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKTsKKyAgICBkdW1w
KENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdl
OjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpOworICAgIGR1bXAoQ2hhbmdlOjpEcmF3THVtaW5h
bmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNl
TWFzaywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNr
KSk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldFVzZURhcmtBcHBlYXJhbmNlKG1fc3RhdGUudXNlRGFya0Fw
cGVhcmFuY2UpOworICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgIHN0
YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlKSk7CiAjZW5kaWYKKyAgICBy
ZXR1cm4gdHM7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICB0cy5kdW1wUHJv
cGVydHkoImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7Ci0KLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGll
bnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1f
c3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJu
LmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZp
bGwtZ3JhZGllbnQiLCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7Ci0KLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFu
Z2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmls
bFBhdHRlcm4uZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzaGFkb3ctYmx1ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7Ci0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic2hhZG93LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5z
aGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7Ci0gICAgfQotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNr
bmVzcyIsIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQot
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0
RHJhd2luZ01vZGUudG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInN0cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNo
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmls
bENvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ry
b2tlLXN0eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdG9yIiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdl
KSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1v
ZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hv
dWxkLWFudGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250
c0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIs
IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXpl
LWZvbnRzIiwgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWln
bm9yZS10cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1
bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5h
bmNlLW1hc2siLCBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJ1c2UtZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7
Ci0jZW5kaWYKKyAgICB0cyA8PCBzdGF0ZUNoYW5nZU5hbWUoY2hhbmdlKTsKKyAgICByZXR1cm4g
dHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkK
IHsKLSAgICBzdGF0ZUNoYW5nZS5kdW1wKHRzKTsKLSAgICByZXR1cm4gdHM7CisgICAgcmV0dXJu
IHN0YXRlLmR1bXAodHMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aAppbmRleCBmMzU1MTE5ZjY2OTk3ZDJjZmMwOWZmMWZkYmYwN2Y4YTU5NTk1OTY3Li5hOTIxMjc5
YTA4NWQxZDI3Mjg1YTZiMTdiYzRjYjEwMzQzYWM4N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKQEAgLTI1
LDExNiArMjUsMjMyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiU291cmNlQnJ1c2guaCIKICNpbmNsdWRl
ICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFkaWVudDsKLWNsYXNz
IFBhdHRlcm47Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhp
Y3NDb250ZXh0U3RhdGUoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3Rh
dGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
b3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYm
KTsKLQotICAgIGVudW0gQ2hhbmdlIDogdWludDMyX3QgewotICAgICAgICBTdHJva2VHcmFkaWVu
dENoYW5nZSAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIFN0cm9rZVBhdHRl
cm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKLSAgICAgICAgRmlsbEdyYWRp
ZW50Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAyLAotICAgICAgICBGaWxsUGF0
dGVybkNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCi0gICAgICAgIFN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKLSAgICAgICAgU3Ry
b2tlQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAotICAgICAgICBT
dHJva2VTdHlsZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYsCi0gICAgICAg
IEZpbGxDb2xvckNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNywKLSAgICAg
ICAgRmlsbFJ1bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAotICAg
ICAgICBTaGFkb3dDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDksCi0g
ICAgICAgIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTAs
Ci0gICAgICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTEsCi0gICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEg
PDwgMTIsCi0gICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMTMsCi0gICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMTQsCi0gICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMTUsCi0gICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTYsCi0gICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSAgICAgICA9IDEgPDwgMTcsCi0gICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAg
ICAgICAgICAgICAgICA9IDEgPDwgMTgsCi0gICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHlDaGFuZ2UgICAgICAgICA9IDEgPDwgMTksCisgICAgZW51bSBjbGFzcyBDaGFuZ2UgOiB1aW50
MzJfdCB7CisgICAgICAgIEZpbGxCcnVzaCAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAg
ICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorCisgICAgICAgIFN0
cm9rZUJydXNoICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgU3Ryb2tlVGhpY2tu
ZXNzICAgICAgICAgICAgID0gMSA8PCAzLAorICAgICAgICBTdHJva2VTdHlsZSAgICAgICAgICAg
ICAgICAgPSAxIDw8IDQsCisKKyAgICAgICAgQ29tcG9zaXRlTW9kZSAgICAgICAgICAgICAgID0g
MSA8PCA1LAorICAgICAgICBEcm9wU2hhZG93ICAgICAgICAgICAgICAgICAgPSAxIDw8IDYsCisK
KyAgICAgICAgQWxwaGEgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA3LAorICAgICAgICBU
ZXh0RHJhd2luZ01vZGUgICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgICAgIEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkgICA9IDEgPDwgOSwKKworICAgICAgICBTaG91bGRBbnRpYWxpYXMgICAg
ICAgICAgICAgPSAxIDw8IDEwLAorICAgICAgICBTaG91bGRTbW9vdGhGb250cyAgICAgICAgICAg
PSAxIDw8IDExLAorICAgICAgICBTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSAxIDw8IDEy
LAorICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAgICAgPSAxIDw8IDEzLAorICAgICAg
ICBEcmF3THVtaW5hbmNlTWFzayAgICAgICAgICAgPSAxIDw8IDE0LAogI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCi0gICAgICAgIFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlICAgICAgICAg
ICAgICAgICA9IDEgPDwgMjAsCisgICAgICAgIFVzZURhcmtBcHBlYXJhbmNlICAgICAgICAgICA9
IDEgPDwgMTUsCiAjZW5kaWYKICAgICB9OwotICAgIHVzaW5nIFN0YXRlQ2hhbmdlRmxhZ3MgPSBP
cHRpb25TZXQ8Q2hhbmdlPjsKKyAgICB1c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFu
Z2U+OworCisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hh
bmdlRmxhZ3MmID0geyB9KTsKKworICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBjaGFuZ2VGbGFnczsgfQorICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkgeyBjaGFuZ2VG
bGFncyA9IHsgfTsgfQorCisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gm
IGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbEJydXNoLCAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmZpbGxCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbEJydXNoLCAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmZpbGxCcnVzaCwgeyBjb2xvciB9KTsgfQorICAgIHZvaWQgc2V0RmlsbEdy
YWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBz
cGFjZVRyYW5zZm9ybSkgeyBmaWxsQnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShncmFkaWVudCks
IHNwYWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6RmlsbEJydXNoKTsgfQor
ICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBmaWxsQnJ1
c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6
RmlsbEJydXNoKTsgfQogCi0gICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAg
dm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxsUnVsZSk7IH0K
IAotICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRl
cm4+IHN0cm9rZVBhdHRlcm47CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VC
cnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VCcnVzaCwgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRTdHJva2VD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VCcnVz
aCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgeyBjb2xvciB9KTsgfQorICAg
IHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IHN0cm9rZUJydXNoLnNldEdyYWRpZW50
KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFkZChDaGFu
Z2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVy
bj4mJiBwYXR0ZXJuKSB7IHN0cm9rZUJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7
IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorCisgICAgdm9pZCBzZXRT
dHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlVGhpY2tuZXNzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVz
cywgc3Ryb2tlVGhpY2tuZXNzKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUpOyB9CisKKyAgICB2b2lk
IHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IHNldFByb3Bl
cnR5KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3Np
dGVNb2RlLCBjb21wb3NpdGVNb2RlKTsgfQorICAgIHZvaWQgc2V0RHJvcFNoYWRvdyhjb25zdCBE
cm9wU2hhZG93JiBkcm9wU2hhZG93KSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJvcFNoYWRvdywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93LCBkcm9wU2hhZG93KTsgfQorCisgICAg
dm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkFscGhhLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhLCBhbHBoYSk7IH0KKyAgICB2b2lkIHNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7IH0KKyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShU
ZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2Rl
LCB0ZXh0RHJhd2luZ01vZGUpOyB9CisKKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29s
IHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNob3VsZEFudGlhbGlhcyk7
IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9udHMpOyB9CisgICAgdm9p
ZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9CisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgfQorICAgIHZv
aWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRy
YXdMdW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KKyNpZiBIQVZFKE9TX0RBUktf
TU9ERV9TVVBQT1JUKQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJr
QXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VEYXJrQXBwZWFyYW5jZSk7
IH0KKyNlbmRpZgogICAgIAotICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRpZW50OwotICAg
IFJlZlB0cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKKyAgICBib29sIGhhc09ubHlQcmltaXRpdmVD
aGFuZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFz
dERyYXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBkaWRCZWdpblRyYW5zcGFy
ZW5jeUxheWVyKCk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAgIFdURjo6VGV4
dFN0cmVhbSYgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdDsKIAotICAgIENvbG9yIHN0cm9r
ZUNvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3IgZmlsbENvbG9yIHsgQ29sb3I6OmJs
YWNrIH07Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBkZWNvZGUoRGVj
b2RlciYpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zv
cm07Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworICAg
IENoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwogCisgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoIHsg
Q29sb3I6OmJsYWNrIH07CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVy
byB9OworICAgIAorICAgIFNvdXJjZUJydXNoIHN0cm9rZUJydXNoIHsgQ29sb3I6OmJsYWNrIH07
CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzIHsgMCB9OwotICAgIGZsb2F0IHNoYWRvd0JsdXIg
eyAwIH07Ci0gICAgZmxvYXQgYWxwaGEgeyAxIH07Ci0KICAgICBTdHJva2VTdHlsZSBzdHJva2VT
dHlsZSB7IFNvbGlkU3Ryb2tlIH07Ci0gICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6
Tm9uWmVybyB9OwotCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsg
VGV4dERyYXdpbmdNb2RlOjpGaWxsIH07Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciB9OwotICAgIEJsZW5kTW9k
ZSBibGVuZE1vZGUgeyBCbGVuZE1vZGU6Ok5vcm1hbCB9OworICAgIAorICAgIENvbXBvc2l0ZU1v
ZGUgY29tcG9zaXRlTW9kZSB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBCbGVuZE1v
ZGU6Ok5vcm1hbCB9OworICAgIERyb3BTaGFkb3cgZHJvcFNoYWRvdzsKKyAgICAKKyAgICBmbG9h
dCBhbHBoYSB7IDEgfTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQgfTsKLSAgICBTaGFkb3dS
YWRpdXNNb2RlIHNoYWRvd1JhZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07
CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdN
b2RlOjpGaWxsIH07CiAKLSAgICBib29sIHNob3VsZEFudGlhbGlhcyA6IDE7Ci0gICAgYm9vbCBz
aG91bGRTbW9vdGhGb250cyA6IDE7Ci0gICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMgOiAxOwotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgOiAxOwotICAgIGJvb2wg
ZHJhd0x1bWluYW5jZU1hc2sgOiAxOworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9
OworICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgeyB0cnVlIH07CisgICAgYm9vbCBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMgeyB0cnVlIH07CisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcyB7IGZhbHNlIH07CisgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzayB7IGZhbHNlIH07
CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURhcmtBcHBlYXJh
bmNlIDogMTsKKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2UgfTsKICNlbmRpZgot
fTsKKyAgICAKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNl
dFByb3BlcnR5KENoYW5nZSBjaGFuZ2UsIFQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0
eSwgY29uc3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBpZiAodGhpcy0+KnByb3BlcnR5ID09
IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSB2
YWx1ZTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CisgICAgfQogCi1zdHJ1Y3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlKCkgPSBkZWZhdWx0OwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKLSAgICAgICAgLCBtX2No
YW5nZUZsYWdzKGZsYWdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRQ
cm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHks
IFQmJiB2YWx1ZSkKICAgICB7CisgICAgICAgIGlmICh0aGlzLT4qcHJvcGVydHkgPT0gdmFsdWUp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IFdURk1vdmUo
dmFsdWUpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAgICB9Cit9OwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlc0Zyb21TdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGNvbnN0OwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGF1dG8gZW5jb2RlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoY2hhbmdlKSkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdGhpcy0+KnByb3BlcnR5
OworICAgIH07CiAKLSAgICB2b2lkIGFjY3VtdWxhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKLSAgICAKLSAgICB2b2lkIGR1bXAoV1RGOjpU
ZXh0U3RyZWFtJikgY29uc3Q7CisgICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlIG1fc3RhdGU7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgbV9jaGFuZ2VGbGFnczsKLX07CisgICAgZW5jb2RlKENoYW5nZTo6Rmls
bEJydXNoLCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxs
QnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpOworCisgICAgZW5jb2RlKENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzdHJva2VCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpOworICAg
IGVuY29kZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6Q29tcG9z
aXRlTW9kZSwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3Np
dGVNb2RlKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOworCisgICAgZW5jb2RlKENo
YW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjphbHBoYSk7CisgICAgZW5jb2RlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBlbmNvZGUoQ2hh
bmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNob3VsZEFudGlhbGlhcyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU21vb3RoRm9u
dHMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250
cyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAg
IGVuY29kZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIGVuY29kZShDaGFu
Z2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisg
ICAgZW5jb2RlKENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRv
IGRlY29kZSA9IFsmXShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENoYW5nZSBjaGFuZ2Us
IGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAoIXN0
YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICB1c2luZyBQcm9wZXJ0eVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2U8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPigpLipw
cm9wZXJ0eSk+Ojp0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5VHlwZT4gdmFs
dWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3RhdGUuKnByb3BlcnR5ID0gKnZhbHVl
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OwogCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Um
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYW5nZUZsYWdzPiBjaGFuZ2VGbGFnczsKKyAgICBkZWNv
ZGVyID4+IGNoYW5nZUZsYWdzOworICAgIGlmICghY2hhbmdlRmxhZ3MpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBzdGF0ZSgqY2hhbmdl
RmxhZ3MpOworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6Rmls
bFJ1bGUsICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxl
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VCcnVzaCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcykpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5bGUsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21w
b3NpdGVNb2RlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZShzdGF0ZSwgQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZHJvcFNoYWRvdykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0
ZSwgQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6dGV4dERyYXdpbmdNb2RlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFNt
b290aEZvbnRzLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMsICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0
ZSwgQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnVzZURhcmtBcHBlYXJhbmNlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIHN0YXRlOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlKTsKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtMTQzLDI4ICsyNTksMjcgQEAgbmFtZXNwYWNlIFdURiB7
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VHcmFkaWVudENoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlUGF0dGVybkNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Rmls
bEdyYWRpZW50Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsUGF0dGVybkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLAotICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VDb2xvckNoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGVDaGFu
Z2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxD
b2xvckNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6RmlsbFJ1bGVDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlNoYWRvd0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UsCi0gICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhQ2hhbmdlLAotICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkJsZW5kTW9kZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UsCi0gICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzQ2hh
bmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLAotICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5Q2hhbmdlCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkZpbGxCcnVzaCwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbFJ1bGUsCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U3Ryb2tlQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUsCisKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSwKKyAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdywKKworICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYSwKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlLAorICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlNob3VsZEFudGlhbGlhcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywKKyAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkRyYXdMdW1pbmFuY2VNYXNrCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZUNoYW5nZQorICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlCiAjZW5kaWYKICAgICA+OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXggMTVk
ZjFkZmRiNmYzYTE2YWQ1ZWFmNjQ3MjYxZmNmYzRiN2E5M2FiNC4uMTJlNGZmYmYwODQ3MzkzOTM4
ZDEyNTE4YmNjOGVlMzc1NjQ3Mzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKQEAgLTEzNiw2ICsxMzYsNDQgQEAgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQmxlbmRNb2RlIGJsZW5kTW9kZSkKICAg
ICByZXR1cm4gdHMgPDwgYmxlbmRNb2RlTmFtZShibGVuZE1vZGUpOwogfQogCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUp
Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb21wb3NpdGUtb3BlcmF0aW9uIiwgY29tcG9zaXRl
TW9kZS5vcGVyYXRpb24pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGNvbXBv
c2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpCit7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctb2Zmc2V0IiwgZHJvcFNoYWRvdy5vZmZzZXQp
OworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBkcm9wU2hhZG93LmJsdXJSYWRp
dXMpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgZHJvcFNoYWRvdy5jb2xv
cik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgZHJv
cFNoYWRvdy5yYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CisgICAgcmV0
dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSkKK3sKKyAgICBzd2l0Y2ggKGlu
dGVycG9sYXRpb25RdWFsaXR5KSB7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVm
YXVsdDoKKyAgICAgICAgdHMgPDwgIkRFRkFVTFQiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEludGVycG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVycG9sYXRlOgorICAgICAgICB0cyA8PCAi
RE8tTk9ULUlOVEVSUE9MQVRFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0
aW9uUXVhbGl0eTo6TG93OgorICAgICAgICB0cyA8PCAiTE9XIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6TWVkaXVtOgorICAgICAgICB0cyA8PCAiTUVE
SVVNIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6SGln
aDoKKyAgICAgICAgdHMgPDwgIkhFSUdIIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiB0czsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgV2lu
ZFJ1bGUgcnVsZSkKIHsKICAgICBzd2l0Y2ggKHJ1bGUpIHsKQEAgLTE4Miw0ICsyMjAsNDIgQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgTGluZUpvaW4gam9pblN0eWxl
KQogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCit7CisgICAgc3dpdGNoIChzdHJva2VTdHls
ZSkgeworICAgIGNhc2UgU3Ryb2tlU3R5bGU6Ok5vU3Ryb2tlOgorICAgICAgICB0cyA8PCAiTk8t
U1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6U29saWRTdHJv
a2U6CisgICAgICAgIHRzIDw8ICJTT0xJRC1TVFJPS0UiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0cm9rZVN0eWxlOjpEb3R0ZWRTdHJva2U6CisgICAgICAgIHRzIDw8ICJET1RURUQtU1RS
T0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RGFzaGVkU3Ryb2tl
OgorICAgICAgICB0cyA8PCAiREFTSEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3Ryb2tlU3R5bGU6OkRvdWJsZVN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRPVUJMRS1TVFJP
S0UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpXYXZ5U3Ryb2tlOgor
ICAgICAgICB0cyA8PCAiV0FWWS1TVFJPS0UiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBU
ZXh0RHJhd2luZ01vZGUgdGV4dERyYXdpbmdNb2RlKQoreworICAgIHN3aXRjaCAodGV4dERyYXdp
bmdNb2RlKSB7CisgICAgY2FzZSBUZXh0RHJhd2luZ01vZGU6OkZpbGw6CisgICAgICAgIHRzIDw8
ICJGSUxMIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0RHJhd2luZ01vZGU6OlN0cm9r
ZToKKyAgICAgICAgdHMgPDwgIlNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gdHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCBkZWM0MzQ3MDJjZjc2
YTg5ZmE4NjUzMGMzMzc2ZDhiYWM1ZDljYTllLi4zNzI5NzgzMWEyYmYzNDY4Y2FlYzhmNTIwMGYw
NDc4MDc2NjZjYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJXaW5kUnVs
ZS5oIgogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBA
IC03NCw2ICs3Niw0MiBAQCBlbnVtIGNsYXNzIEJsZW5kTW9kZSA6IHVpbnQ4X3QgewogICAgIFBs
dXNMaWdodGVyCiB9OwogCitzdHJ1Y3QgQ29tcG9zaXRlTW9kZSB7CisgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3BlcmF0aW9uOworICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ29tcG9zaXRlTW9kZSYgb3RoZXIpCisgICAgeworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uID09IG90aGVyLm9wZXJhdGlvbiAmJiBibGVuZE1vZGUgPT0gb3RoZXIuYmxl
bmRNb2RlOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ29tcG9zaXRlTW9kZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBvcGVyYXRpb247CisgICAgZW5jb2RlciA8
PCBibGVuZE1vZGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFs
PENvbXBvc2l0ZU1vZGU+IENvbXBvc2l0ZU1vZGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wZXJhdGlvbjsKKyAgICBk
ZWNvZGVyID4+IG9wZXJhdGlvbjsKKyAgICBpZiAoIW9wZXJhdGlvbikKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7
CisgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CisgICAgaWYgKCFibGVuZE1vZGUpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvcGVyYXRpb24sICpibGVu
ZE1vZGUgfSB9OworfQorCiBzdHJ1Y3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgIGVu
dW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3QgewogICAgICAgICBUZXh0Q2hlY2tpbmdEaWN0YXRpb25Q
aHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAtMTExLDYgKzE0OSw2NyBAQCBzdGQ6Om9wdGlvbmFs
PERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2Rl
KERlY29kZXImCiAgICAgcmV0dXJuIHsgeyAqbW9kZSwgKnNob3VsZFVzZURhcmtBcHBlYXJhbmNl
IH0gfTsKIH0KIAorLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52
YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCisvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVu
dCBvZiByYWRpaSA+IDhweC4KK2VudW0gY2xhc3MgU2hhZG93UmFkaXVzTW9kZSA6IGJvb2wgewor
ICAgIERlZmF1bHQsCisgICAgTGVnYWN5Cit9OworCitzdHJ1Y3QgRHJvcFNoYWRvdyB7CisgICAg
RmxvYXRTaXplIG9mZnNldDsKKyAgICBmbG9hdCBibHVyUmFkaXVzIHsgMCB9OworICAgIENvbG9y
IGNvbG9yOworICAgIFNoYWRvd1JhZGl1c01vZGUgcmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01v
ZGU6OkRlZmF1bHQgfTsKKworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gY29s
b3IuaXNWaXNpYmxlKCk7IH0KKyAgICBib29sIGlzQmx1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIGlz
VmlzaWJsZSgpICYmIGJsdXJSYWRpdXM7IH0KKyAgICBib29sIGhhc091dHNldHMoKSBjb25zdCB7
IHJldHVybiBpc0JsdXJyZWQoKSB8fCAoaXNWaXNpYmxlKCkgJiYgIW9mZnNldC5pc1plcm8oKSk7
IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxE
cm9wU2hhZG93PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBEcm9wU2hhZG93JiBhLCBjb25zdCBEcm9wU2hhZG93JiBiKQoreworICAgIHJldHVy
biBhLm9mZnNldCA9PSBiLm9mZnNldCAmJiBhLmJsdXJSYWRpdXMgPT0gYi5ibHVyUmFkaXVzICYm
IGEuY29sb3IgPT0gYi5jb2xvciAmJiBhLnJhZGl1c01vZGUgPT0gYi5yYWRpdXNNb2RlOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcm9wU2hhZG93OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG9mZnNldDsKKyAgICBlbmNvZGVy
IDw8IGJsdXJSYWRpdXM7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKKyAgICBlbmNvZGVyIDw8IHJh
ZGl1c01vZGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPERy
b3BTaGFkb3c+IERyb3BTaGFkb3c6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBvZmZzZXQ7CisgICAgZGVjb2RlciA+PiBvZmZzZXQ7Cisg
ICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBibHVyUmFkaXVzOworICAgIGRlY29kZXIgPj4gYmx1clJhZGl1czsK
KyAgICBpZiAoIWJsdXJSYWRpdXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9yOworICAg
IGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9w
dGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHJhZGl1c01vZGU7CisgICAgZGVjb2RlciA+PiByYWRp
dXNNb2RlOworICAgIGlmICghcmFkaXVzTW9kZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7IHsgKm9mZnNldCwgKmJsdXJSYWRpdXMsICpjb2xvciwgKnJhZGl1
c01vZGUgfSB9OworfQorCiBlbnVtIGNsYXNzIEdyYWRpZW50U3ByZWFkTWV0aG9kIDogdWludDhf
dCB7CiAgICAgUGFkLAogICAgIFJlZmxlY3QsCkBAIC0xNTgsMTMgKzI1Nyw2IEBAIGVudW0gY2xh
c3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7CiB9OwogdXNpbmcgVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgPSBPcHRpb25TZXQ8VGV4dERyYXdpbmdNb2RlPjsKIAotLy8gTGVnYWN5IHNoYWRvdyBi
bHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCi0v
LyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLWVudW0gY2xhc3Mg
U2hhZG93UmFkaXVzTW9kZSA6IGJvb2wgewotICAgIERlZmF1bHQsCi0gICAgTGVnYWN5Ci19Owot
CiBlbnVtIFRleHRCYXNlbGluZSB7CiAgICAgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwKICAgICBU
b3BUZXh0QmFzZWxpbmUsCkBAIC0xODksOSArMjgxLDE0IEBAIGJvb2wgcGFyc2VDb21wb3NpdGVB
bmRCbGVuZE9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9y
JiwKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIFdlYkNvcmU6OkJsZW5kTW9kZSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3Bl
cmF0b3IpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb21wb3NpdGVNb2RlKTsKK1dFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBE
cm9wU2hhZG93Jik7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIExpbmVDYXApOwog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIExpbmVKb2luKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBTdHJva2VTdHlsZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dERyYXdpbmdNb2RlKTsK
K1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBXaW5kUnVsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IGI2MjM2Nzg4MGUzZTUzNTRiNjE3MTEzNDdjOWExMWI0MjI0Njg4NWUuLjZjMzMzMzk2Mjcy
MTUyNzc2ODY0NzBhMDJiMTVmNTYyZWYxYmEwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29k
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQ
YWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29k
ZXM7IH0KICAgICBib29sIGRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9uUmVh
c29uczo6RGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50OyB9CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSBmaW5hbCB7IH0KIAogI2lmIFVTRShDRykKICAgICB2b2lkIHNldElz
QWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBiYjEzOGI1Mjk3YTUyMWZiZjdk
NjkzY2QxMTQxMDQ0MDBmY2FiYzRlLi45MDI0ZjVkMWFiZmNlMzgwODE4M2EzYjIzMWZiY2UwZmZi
MmZmNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcApAQCAtMTkxLDE3ICsxOTEsMTcgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25z
dCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IEMKICAg
ICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogbV9jb2xvcihzdGF0ZS5z
aGFkb3dDb2xvcikKLSAgICAsIG1fYmx1clJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyLCBzdGF0ZS5z
aGFkb3dCbHVyKQotICAgICwgbV9vZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0KQotICAgICwgbV9z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKK1No
YWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdywgYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICA6IG1fY29sb3IoZHJvcFNoYWRvdy5jb2xvcikK
KyAgICAsIG1fYmx1clJhZGl1cyhkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuYmx1
clJhZGl1cykKKyAgICAsIG1fb2Zmc2V0KGRyb3BTaGFkb3cub2Zmc2V0KQorICAgICwgbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKICNpZiBVU0Uo
Q0cpCiAgICAgLy8gQ29yZSBHcmFwaGljcyBpbmNvcnJlY3RseSByZW5kZXJzIHNoYWRvd3Mgd2l0
aCByYWRpdXMgPiA4cHggKDxyZGFyOi8vcHJvYmxlbS84MTAzNDQyPiksCiAgICAgLy8gYnV0IHdl
IG5lZWQgdG8gcHJlc2VydmUgdGhpcyBidWdneSBiZWhhdmlvciBmb3IgY2FudmFzIGFuZCAtd2Vi
a2l0LWJveC1zaGFkb3cuCi0gICAgaWYgKHN0YXRlLnNoYWRvd1JhZGl1c01vZGUgPT0gU2hhZG93
UmFkaXVzTW9kZTo6TGVnYWN5KSB7Ci0gICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSByYWRpdXNU
b0xlZ2FjeVJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyKTsKKyAgICBpZiAoZHJvcFNoYWRvdy5yYWRp
dXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgeworICAgICAgICBmbG9hdCBzaGFk
b3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKICAg
ICAgICAgbV9ibHVyUmFkaXVzID0gRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIpOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5oCmluZGV4IDE0ZmQ4M2VkZTFhMWJhY2YxNzdmMzMxZWNhZDFhNDMwMjkzZjYwM2EuLjhl
ZmQ2Mzc3YWFlYmU5ODNlZTNhZjU4NjEzMDkxMGJlNjYxNzcxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7Ci1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7CitzdHJ1Y3QgRHJvcFNoYWRv
dzsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBTaGFkb3dCbHVyIHsKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogCiAgICAgU2hhZG93Qmx1cigpOwogICAgIFNoYWRvd0JsdXIoY29uc3Qg
RmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYs
IGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7Ci0gICAgU2hhZG93Qmx1cihj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFNoYWRvd0JsdXIoY29uc3QgRHJvcFNo
YWRvdyYsIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKICAgICB2b2lk
IHNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwgY29u
c3QgQ29sb3ImLCBib29sIGlnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MmVmOTQyNDBkNmFiOTVkZjNlNTAzN2RhZGNmNmE0ZTA3MzUyNDM4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJydXNoLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworU291cmNlQnJ1c2g6OlNvdXJjZUJydXNoKGNvbnN0IENvbG9yJiBj
b2xvciwgc3RkOjpvcHRpb25hbDxCcnVzaD4mJiBicnVzaCkKKyAgICA6IG1fY29sb3IoY29sb3Ip
CisgICAgLCBtX2JydXNoKFdURk1vdmUoYnJ1c2gpKQoreworfQorCitjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIFNvdXJjZUJydXNoOjpncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWZmaW5lVHJhbnNmb3JtPiBpZGVudGl0eTsKKyAgICBp
ZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBpZGVudGl0eS5nZXQoKTsKKworICAgIGlmIChh
dXRvKiBncmFkaWVudCA9IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2Jy
dXNoLT5icnVzaCkpCisgICAgICAgIHJldHVybiBncmFkaWVudC0+c3BhY2VUcmFuc2Zvcm07CisK
KyAgICByZXR1cm4gaWRlbnRpdHkuZ2V0KCk7Cit9CisKK0dyYWRpZW50KiBTb3VyY2VCcnVzaDo6
Z3JhZGllbnQoKSBjb25zdAoreworICAgIGlmICghbV9icnVzaCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGF1dG8qIGdyYWRpZW50ID0gc3RkOjpnZXRfaWY8QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudD4oJm1fYnJ1c2gtPmJydXNoKSkKKyAgICAgICAgcmV0dXJuIGdyYWRpZW50LT5n
cmFkaWVudC5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGF0dGVybiogU291cmNl
QnJ1c2g6OnBhdHRlcm4oKSBjb25zdAoreworICAgIGlmICghbV9icnVzaCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0
dGVybj4+KCZtX2JydXNoLT5icnVzaCkpCisgICAgICAgIHJldHVybiBwYXR0ZXJuLT5wdHIoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQo
UmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJh
bnNmb3JtKQoreworICAgIG1fYnJ1c2ggPSB7IEJydXNoOjpMb2dpY2FsR3JhZGllbnQgeyBXVEZN
b3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0gfSB9OworfQorCit2b2lkIFNvdXJjZUJydXNo
OjpzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCit7CisgICAgbV9icnVzaCA9IHsg
V1RGTW92ZShwYXR0ZXJuKSB9OworfQorCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkKK3sKKyAgICB0cy5kdW1wUHJv
cGVydHkoImNvbG9yIiwgYnJ1c2guY29sb3IoKSk7CisKKyAgICBpZiAoYXV0byBncmFkaWVudCA9
IGJydXNoLmdyYWRpZW50KCkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZ3JhZGllbnQiLCBn
cmFkaWVudCk7CisKKyAgICBpZiAoYXV0byBwYXR0ZXJuID0gYnJ1c2gucGF0dGVybigpKQorICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4iLCBwYXR0ZXJuKTsKKworICAgIHJldHVybiB0
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliOWZhZTU0OTQzNDlkYjU1
YWU1MzNjNWIzYTBmOWZhOTU1MjI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmgKQEAgLTAsMCArMSwxODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAiUGF0
dGVybi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJydXNoIHsKK3B1
YmxpYzoKKyAgICBzdHJ1Y3QgQnJ1c2ggeworICAgICAgICBzdHJ1Y3QgTG9naWNhbEdyYWRpZW50
IHsKKyAgICAgICAgICAgIFJlZjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gc3BhY2VUcmFuc2Zvcm07CisKKyAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExvZ2ljYWxHcmFk
aWVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGQ6OnZhcmlh
bnQ8TG9naWNhbEdyYWRpZW50LCBSZWY8UGF0dGVybj4+IGJydXNoOworCisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+
IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIFNvdXJjZUJydXNoKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJydXNoKGNvbnN0IENvbG9yJiwgc3RkOjpvcHRp
b25hbDxCcnVzaD4mJiA9IHN0ZDo6bnVsbG9wdCk7CisKKyAgICBjb25zdCBDb2xvciYgY29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xv
ciBjb2xvcikgeyBtX2NvbG9yID0gY29sb3I7IH0KKworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
QnJ1c2g+JiBicnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fYnJ1c2g7IH0KKworICAgIFdFQkNPUkVf
RVhQT1JUIEdyYWRpZW50KiBncmFkaWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBh
dHRlcm4qIHBhdHRlcm4oKSBjb25zdDsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdDsKKworICAgIHZvaWQgc2V0R3JhZGllbnQoUmVmPEdy
YWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KTsK
KyAgICB2b2lkIHNldFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOworCisgICAgYm9vbCBpc1ByaW1p
dGl2ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2JydXNoICYmIG1fY29sb3IudHJ5R2V0QXNTUkdCQUJ5
dGVzKCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTb3VyY2VCcnVzaD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBDb2xv
ciBtX2NvbG9yIHsgQ29sb3I6OmJsYWNrIH07CisgICAgc3RkOjpvcHRpb25hbDxCcnVzaD4gbV9i
cnVzaDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQnJ1c2g6OkJy
dXNoOjpMb2dpY2FsR3JhZGllbnQmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNh
bEdyYWRpZW50JiBiKQoreworICAgIHJldHVybiBhLmdyYWRpZW50LnB0cigpID09IGIuZ3JhZGll
bnQucHRyKCkgJiYgYS5zcGFjZVRyYW5zZm9ybSA9PSBiLnNwYWNlVHJhbnNmb3JtOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYSwgY29uc3Qg
U291cmNlQnJ1c2g6OkJydXNoJiBiKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGEuYnJ1
c2gsCisgICAgICAgIFsmXSAoY29uc3QgU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGll
bnQmIGFHcmFkaWVudCkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGJHcmFkaWVudCA9IHN0ZDo6
Z2V0X2lmPFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50PigmYi5icnVzaCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGFHcmFkaWVudCA9PSAqYkdyYWRpZW50OworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxQYXR0
ZXJuPiYgYVBhdHRlcm4pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiUGF0dGVybiA9IHN0ZDo6
Z2V0X2lmPFJlZjxQYXR0ZXJuPj4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBh
UGF0dGVybi5wdHIoKSA9PSBiUGF0dGVybi0+cHRyKCk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICApOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNvdXJjZUJydXNoJiBhLCBjb25zdCBTb3VyY2VCcnVzaCYgYikKK3sKKyAgICByZXR1cm4gYS5j
b2xvcigpID09IGIuY29sb3IoKSAmJiBhLmJydXNoKCkgPT0gYi5icnVzaCgpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxH
cmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBncmFkaWVudC5nZXQoKTsKKyAgICBlbmNvZGVyIDw8IHNwYWNlVHJhbnNmb3JtOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VCcnVzaDo6QnJ1
c2g6OkxvZ2ljYWxHcmFkaWVudD4gU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVu
dDo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghZ3JhZGllbnQpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHNw
YWNlVHJhbnNmb3JtOworICAgIGRlY29kZXIgPj4gc3BhY2VUcmFuc2Zvcm07CisgICAgaWYgKCFz
cGFjZVRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqZ3JhZGllbnQpLCAqc3BhY2VUcmFuc2Zvcm0gfSB9OworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6QnJ1c2g6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdURjo6c3dpdGNoT24oYnJ1c2gsCisgICAg
ICAgIFsmXSAoY29uc3QgTG9naWNhbEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAg
ZW5jb2RlciA8PCB0cnVlIDw8IGdyYWRpZW50OworICAgICAgICB9LAorICAgICAgICBbJl0gKGNv
bnN0IFJlZjxQYXR0ZXJuPiYgcGF0dGVybikgeworICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxz
ZSA8PCBwYXR0ZXJuLmdldCgpOworICAgICAgICB9CisgICAgKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoPiBTb3VyY2VC
cnVzaDo6QnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaGFzR3JhZGllbnQ7CisgICAgZGVjb2RlciA+PiBoYXNHcmFkaWVudDsKKyAgICBp
ZiAoIWhhc0dyYWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYg
KCpoYXNHcmFkaWVudCkgeworICAgICAgICBhdXRvIGdyYWRpZW50ID0gTG9naWNhbEdyYWRpZW50
OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGlmICghZ3JhZGllbnQpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50
KSB9IH07CisgICAgfQorCisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29k
ZXIpOworICAgIGlmICghcGF0dGVybikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoKnBhdHRlcm4pIH0gfTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9jb2xvcjsKKyAgICBlbmNvZGVyIDw8IG1fYnJ1c2g7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoPiBT
b3VyY2VCcnVzaDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25h
bDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9w
dGlvbmFsPEJydXNoPj4gYnJ1c2g7CisgICAgZGVjb2RlciA+PiBicnVzaDsKKyAgICBpZiAoIWJy
dXNoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNvdXJjZUJy
dXNoKCpjb2xvciwgV1RGTW92ZSgqYnJ1c2gpKTsKK30KKworV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNvdXJjZUJydXNoJik7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAzMjQ1YzYwMDQzMTU1MmQ1MTNi
NzRlZWJjMDlmMzE4ZWVjM2RkNzJhLi5mOWZlYWI0ZTI2ZjI5ODMzODFkY2RkYTRkNTRjNTBiNzUz
OGU3ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xODUsMTMgKzE4NSwxNCBAQCBzdGF0aWMg
dm9pZCBzZXRDR0JsZW5kTW9kZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZQogfQogCiBHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0
Q0coQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKKyAgICA6IEdyYXBoaWNzQ29udGV4dCh7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U3Ryb2tlQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZVRoaWNrbmVzcyB9KQogewogICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKGNnQ29udGV4
dCk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3Vy
IHN0YXRlLgotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIH0pOworICAg
IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOwogICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSA9IGNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0
aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogfQogCkBAIC0zMzgsNyArMzM5LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRp
dmVJbWFnZSwgY29uc3QgRmxvYXRTaXoKICNlbmRpZgogCiAgICAgYXV0byBvbGRDb21wb3NpdGVP
cGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGF1dG8gb2xkQmxlbmRNb2RlID0g
YmxlbmRNb2RlT3BlcmF0aW9uKCk7CisgICAgYXV0byBvbGRCbGVuZE1vZGUgPSBibGVuZE1vZGUo
KTsKICAgICBzZXRDR0JsZW5kTW9kZShjb250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgLy8gTWFrZSB0aGUgb3JpZ2luIGJlIGF0
IGFkanVzdGVkRGVzdFJlY3QubG9jYXRpb24oKQpAQCAtNTU1LDEzICs1NTYsMTMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDRzo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGlmICgh
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmICghc3Ryb2tlUGF0dGVybigpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0
KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0o
Z2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJu
ID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFz
ZUNUTSk7CisgICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBzdHJva2VQYXR0ZXJuKCktPmNyZWF0
ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVy
bikKICAgICAgICAgcmV0dXJuOwogCkBAIC01NzQsMTMgKzU3NSwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENHOjphcHBseVN0cm9rZVBhdHRlcm4oKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjphcHBseUZpbGxQYXR0ZXJuKCkKIHsKLSAgICBpZiAoIW1fc3RhdGUuZmlsbFBhdHRlcm4pCisg
ICAgaWYgKCFmaWxsUGF0dGVybigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVz
ZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQp
KTsKIAotICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5maWxsUGF0dGVybi0+Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOworICAgIGF1dG8gcGxhdGZvcm1QYXR0
ZXJuID0gZmlsbFBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0p
OwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5MSwx
MSArNTkyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5RmlsbFBhdHRlcm4oKQog
ICAgIENHQ29udGV4dFNldEZpbGxQYXR0ZXJuKGNnQ29udGV4dCwgcGxhdGZvcm1QYXR0ZXJuLmdl
dCgpLCAmcGF0dGVybkFscGhhKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURy
YXdpbmdNb2RlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgQ0dQYXRoRHJhd2lu
Z01vZGUmIG1vZGUpCitzdGF0aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01vZGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR1BhdGhEcmF3aW5nTW9kZSYgbW9kZSkKIHsK
LSAgICBib29sIHNob3VsZEZpbGwgPSBzdGF0ZS5maWxsUGF0dGVybiB8fCBzdGF0ZS5maWxsQ29s
b3IuaXNWaXNpYmxlKCk7Ci0gICAgYm9vbCBzaG91bGRTdHJva2UgPSBzdGF0ZS5zdHJva2VQYXR0
ZXJuIHx8IChzdGF0ZS5zdHJva2VTdHlsZSAhPSBOb1N0cm9rZSAmJiBzdGF0ZS5zdHJva2VDb2xv
ci5pc1Zpc2libGUoKSk7Ci0gICAgYm9vbCB1c2VFT0ZpbGwgPSBzdGF0ZS5maWxsUnVsZSA9PSBX
aW5kUnVsZTo6RXZlbk9kZDsKKyAgICBib29sIHNob3VsZEZpbGwgPSBjb250ZXh0LmZpbGxQYXR0
ZXJuKCkgfHwgY29udGV4dC5maWxsQ29sb3IoKS5pc1Zpc2libGUoKTsKKyAgICBib29sIHNob3Vs
ZFN0cm9rZSA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpIHx8IChjb250ZXh0LnN0cm9rZVN0eWxl
KCkgIT0gTm9TdHJva2UgJiYgY29udGV4dC5zdHJva2VDb2xvcigpLmlzVmlzaWJsZSgpKTsKKyAg
ICBib29sIHVzZUVPRmlsbCA9IGNvbnRleHQuZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9k
ZDsKIAogICAgIGlmIChzaG91bGRGaWxsKSB7CiAgICAgICAgIGlmIChzaG91bGRTdHJva2UpIHsK
QEAgLTYyNCw5ICs2MjUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkcmF3UGF0aChjb25z
dCBQYXRoJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSA9IG1fc3RhdGU7CiAKLSAgICBpZiAoc3RhdGUuZmlsbEdyYWRpZW50IHx8IHN0YXRlLnN0
cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGZpbGxHcmFkaWVudCgpIHx8IHN0cm9rZUdyYWRpZW50
KCkpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgb3B0aW1pemVkIHdheSB0byBmaWxs
ICYgc3Ryb2tlIGEgcGF0aCB1c2luZyBncmFkaWVudHMKICAgICAgICAgLy8gRklYTUU6IEJlIHNt
YXJ0ZXIgYWJvdXQgdGhpcy4KICAgICAgICAgZmlsbFBhdGgocGF0aCk7CkBAIC02MzQsMTMgKzYz
NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQor
ICAgIGlmIChmaWxsUGF0dGVybigpKQogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7Ci0gICAg
aWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAg
ICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICAgICBDR1BhdGhEcmF3aW5nTW9kZSBkcmF3aW5n
TW9kZTsKLSAgICBpZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUoc3RhdGUsIGRyYXdpbmdNb2RlKSkg
eworICAgIGlmIChjYWxjdWxhdGVEcmF3aW5nTW9kZSgqdGhpcywgZHJhd2luZ01vZGUpKSB7CiAj
aWYgSEFWRShDR19DT05URVhUX0RSQVdfUEFUSF9ESVJFQ1QpCiAgICAgICAgIENHQ29udGV4dERy
YXdQYXRoRGlyZWN0KGNvbnRleHQsIGRyYXdpbmdNb2RlLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCBu
dWxscHRyKTsKICNlbHNlCkBAIC02NTgsNyArNjU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRD
Rzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsK
KyAgICBpZiAoYXV0byBmaWxsR3JhZGllbnQgPSB0aGlzLT5maWxsR3JhZGllbnQoKSkgewogICAg
ICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcGF0
aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0g
Z2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CkBAIC02NzAsMzMgKzY3MCwzMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55
KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGxheWVyQ29udGV4dCk7CiAgICAg
ICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgo
KSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRl
LmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShsYXllckNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAg
ICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAg
ICAgICBDR0NvbnRleHRFT0NsaXAobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAg
IG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAg
ZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0
RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICAgICAg
ICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAg
ICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgp
ID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChj
b250ZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBDR0NvbnRleHRDbGlw
KGNvbnRleHQpOwogCi0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQoKnRo
aXMpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4p
CisgICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICNp
ZiBIQVZFKENHX0NPTlRFWFRfRFJBV19QQVRIX0RJUkVDVCkKICAgICBDR0NvbnRleHREcmF3UGF0
aERpcmVjdChjb250ZXh0LCBmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkID8ga0NHUGF0
aEVPRmlsbCA6IGtDR1BhdGhGaWxsLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKQEAg
LTcxNyw3ICs3MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0
IFBhdGgmIHBhdGgpCiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBz
dHJva2VHcmFkaWVudCA9IHRoaXMtPnN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhh
c1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFzdEJvdW5k
aW5nUmVjdCgpOwogICAgICAgICAgICAgZmxvYXQgbGluZVdpZHRoID0gc3Ryb2tlVGhpY2tuZXNz
KCk7CkBAIC03NDIsOCArNzQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0
aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFj
ZVBhdGhXaXRoU3Ryb2tlZFBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dENsaXAobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXll
ckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAg
ICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAg
ICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNv
bnRleHQpOwogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54
KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRm
KHJlY3QueSgpIC0gbGluZVdpZHRoKTsKQEAgLTc1NCwxMyArNzU0LDEzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENH
Q29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAg
ICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRD
VE0oY29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAg
ICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAg
IENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlUGF0dGVy
bikKKyAgICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4o
KTsKIAogI2lmIFVTRShDR19DT05URVhUX1NUUk9LRV9MSU5FX1NFR01FTlRTX1dIRU5fU1RST0tJ
TkdfUEFUSCkKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgewor
ICAgIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHRoaXMtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAg
ICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgaWYg
KGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RN
KCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CkBAIC03OTgsMTggKzc5OCwxOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAg
ICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAg
ICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250
ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0
LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRD
bGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RN
KGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAg
ICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29u
dGV4dENvbmNhdENUTShjb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAg
ICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAo
ZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogCiAgICAgYm9vbCBk
cmF3T3duU2hhZG93ID0gY2FuVXNlU2hhZG93Qmx1cigpOwpAQCAtODE4LDcgKzgxOCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAg
ICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAg
ICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIg
Y29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwog
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRS
ZWN0KHJlY3QpKTsKICAgICB9CiAKQEAgLTgzOSw3ICs4MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xv
cikKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0
U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAot
ICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRv
d0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHJlY3QsIGNvbnN0CiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBj
b25zdAogICAgIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSA9IHJlY3QucmFk
aWkoKTsKICAgICBib29sIGVxdWFsV2lkdGhzID0gKHJhZGlpLnRvcExlZnQoKS53aWR0aCgpID09
IHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSAmJiByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgPT0g
cmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkg
PT0gcmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpKTsKICAgICBib29sIGVxdWFsSGVpZ2h0cyA9
IChyYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgp
ICYmIHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSA9PSByYWRpaS50b3BSaWdodCgpLmhlaWdo
dCgpICYmIHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPT0gcmFkaWkuYm90dG9tUmlnaHQoKS5o
ZWlnaHQoKSk7Ci0gICAgYm9vbCBoYXNDdXN0b21GaWxsID0gbV9zdGF0ZS5maWxsR3JhZGllbnQg
fHwgbV9zdGF0ZS5maWxsUGF0dGVybjsKKyAgICBib29sIGhhc0N1c3RvbUZpbGwgPSBmaWxsR3Jh
ZGllbnQoKSB8fCBmaWxsUGF0dGVybigpOwogICAgIGlmICghaGFzQ3VzdG9tRmlsbCAmJiBlcXVh
bFdpZHRocyAmJiBlcXVhbEhlaWdodHMgJiYgcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKiAyID09
IHIud2lkdGgoKSAmJiByYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCkgKiAyID09IHIuaGVpZ2h0KCkp
CiAgICAgICAgIENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0KGNvbnRleHQsIHIpOwogICAgIGVs
c2UgewpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRl
eHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAg
ICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMsIHJlY3QsIHJvdW5kZWRIb2xl
UmVjdCk7CiAgICAgfQogCkBAIC05ODksNiArOTg5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRD
Rzo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29u
dGV4dCwgb3BhY2l0eSk7CiAgICAgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcihjb250
ZXh0LCAwKTsKKyAgICAKKyAgICBtX3N0YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
ICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBm
YWxzZTsKIH0KIApAQCAtMTAwMiwxNyArMTAwNCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgcmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9p
ZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIENHRmxvYXQmIHhPZmZzZXQsIENHRmxvYXQmIHlPZmZzZXQpCitzdGF0aWMg
dm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OwogICAgIFVOVVNFRF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7
CiAjZWxzZQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKENHQ29udGV4dERyYXdz
V2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAg
IGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1Mzkz
ODg+IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCkBAIC0x
MDMwLDEwICsxMDI5LDggQEAgc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5k
SWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogI2VuZGlmCiB9CiAKLXN0
YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNv
bG9yKQorc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coQ0dDb250ZXh0UmVmIGNvbnRleHQsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJs
dXIsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsK
LSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKTsKLQogICAgIGlmIChvZmZzZXQuaXNaZXJvKCkgJiYgIWJsdXIpIHsKICAgICAgICAgQ0dD
b250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOwogICAg
ICAgICByZXR1cm47CkBAIC0xMDQ1LDcgKzEwNDIsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRv
dyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXpl
JgogICAgIENHRmxvYXQgeU9mZnNldCA9IG9mZnNldC5oZWlnaHQoKTsKICAgICBDR0Zsb2F0IGJs
dXJSYWRpdXMgPSBibHVyOwogCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSkgeworICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAg
ICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IGdldFVzZXJUb0Jhc2VDVE0o
Y29udGV4dCk7CiAKICAgICAgICAgQ0dGbG9hdCBBID0gdXNlclRvQmFzZUNUTS5hICogdXNlclRv
QmFzZUNUTS5hICsgdXNlclRvQmFzZUNUTS5iICogdXNlclRvQmFzZUNUTS5iOwpAQCAtMTA2Niw3
ICsxMDYzLDggQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAvLyBFeHRyZW1lICJibHVy
IiB2YWx1ZXMgY2FuIG1ha2UgdGV4dCBkcmF3aW5nIGNyYXNoIG9yIHRha2UgY3JhenkgbG9uZyB0
aW1lcywgc28gY2xhbXAKICAgICBibHVyUmFkaXVzID0gc3RkOjptaW4oYmx1clJhZGl1cywgbmFy
cm93UHJlY2lzaW9uVG9DR0Zsb2F0KDEwMDAuMCkpOwogCi0gICAgYXBwbHlTaGFkb3dPZmZzZXRX
b3JrYXJvdW5kSWZOZWVkZWQoZ3JhcGhpY3NDb250ZXh0LCB4T2Zmc2V0LCB5T2Zmc2V0KTsKKyAg
ICBpZiAocmVuZGVyaW5nTW9kZSAhPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAg
ICAgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29udGV4dCwgeE9mZnNldCwg
eU9mZnNldCk7CiAKICAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxpZCBjb2xvciwgYXMgdGhpcyBt
ZWFucyB0aGF0IHRoZSBjb2xvciB3YXMgbm90IHNldCBmb3IgdGhlIHNoYWRvdwogICAgIC8vIGFu
ZCB3ZSBzaG91bGQgdGhlcmVmb3JlIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHNoYWRvdyBjb2xvci4K
QEAgLTEwNzYsMzkgKzEwNzQsNjEgQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAgICAg
Q0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwg
eU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBm
bGFncykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKIHsKKyAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChz
dGF0ZS5zdHJva2VUaGlja25lc3MsIDAuZikpOworICAgIGZvciAoYXV0byBjaGFuZ2UgOiBzdGF0
ZS5jaGFuZ2VzKCkpIHsKKyAgICAgICAgc3dpdGNoIChjaGFuZ2UpIHsKKyAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2g6CisgICAgICAgICAgICBzZXRD
R0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVRoaWNrbmVzczoKKyAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0
LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MsIDAuZikpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VC
cnVzaDoKKyAgICAgICAgICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRl
eHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkuZ2V0KCkpOworICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29s
b3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VDb2xvcikuZ2V0
KCkpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0
ZU1vZGU6CisgICAgICAgICAgICBzZXRDR0JsZW5kTW9kZShjb250ZXh0LCBzdGF0ZS5jb21wb3Np
dGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0
YXRlLmZpbGxDb2xvcik7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6RHJvcFNoYWRvdzoKKyAgICAgICAgICAgIHNldENHU2hhZG93KGNvbnRleHQsIHJlbmRlcmlu
Z01vZGUoKSwgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuYmx1clJh
ZGl1cywgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEo
Y29udGV4dCwgc3RhdGUuYWxwaGEpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkFscGhhOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwg
c3RhdGUuYWxwaGEpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKQotICAgICAgICBzZXRDR0Js
ZW5kTW9kZShjb250ZXh0LCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2Rl
KTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5OgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1
YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGNnVGV4dERyYXdpbmdNb2Rl
KHN0YXRlLnRleHREcmF3aW5nTW9kZSkpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZToKKyAgICAgICAgICAgIENHQ29udGV4dFNldFRl
eHREcmF3aW5nTW9kZShjb250ZXh0LCBjZ1RleHREcmF3aW5nTW9kZShzdGF0ZS50ZXh0RHJhd2lu
Z01vZGUpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBDR0Nv
bnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsK
KyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxp
YXM6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3Rh
dGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkp
Ci0gICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNo
b3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTbW9vdGhGb250czoKKyAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNt
b290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0SW50
ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgc2V0Q0dTaGFkb3coKnRo
aXMsIHN0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRv
d0NvbG9yKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6c2V0TWl0ZXJMaW1pdChmbG9hdCBsaW1pdCkKQEAgLTExMjUsNyArMTE0NSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAg
aWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSB0aGlzLT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAg
ICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgY29uc3QgZmxvYXQgZG91YmxlTGlu
ZVdpZHRoID0gbGluZVdpZHRoICogMjsKICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkV2lkdGgg
PSBjZWlsZihyZWN0LndpZHRoKCkgKyBkb3VibGVMaW5lV2lkdGgpOwpAQCAtMTE0OSw4ICsxMTY5
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFJlY3QobGF5
ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0
cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVy
Q29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0
ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29u
dGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKIAog
ICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0g
bGluZVdpZHRoKTsKICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5k
ZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7CkBAIC0xMTYxLDEzICsxMTgxLDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBs
aW5lV2lkdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIHJlY3QpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7
CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLnN0
cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJv
a2VQYXR0ZXJuKCk7CiAKICAgICAvLyBVc2luZyBDR0NvbnRleHRBZGRSZWN0IGFuZCBDR0NvbnRl
eHRTdHJva2VQYXRoIHRvIHN0cm9rZSByZWN0IHJhdGhlciB0aGFuCkBAIC0xNDIyLDcgKzE0NDIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKQogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbEVsbGlwc2Uo
Y29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewogICAgIC8vIENHQ29udGV4dEZpbGxFbGxpcHNl
SW5SZWN0IG9ubHkgc3VwcG9ydHMgc29saWQgY29sb3JzLgotICAgIGlmIChtX3N0YXRlLmZpbGxH
cmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7CisgICAgaWYgKGZpbGxHcmFkaWVudCgp
IHx8IGZpbGxQYXR0ZXJuKCkpIHsKICAgICAgICAgZmlsbEVsbGlwc2VBc1BhdGgoZWxsaXBzZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDM0LDcgKzE0NTQsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBz
ZSkKIHsKICAgICAvLyBDR0NvbnRleHRTdHJva2VFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMg
c29saWQgY29sb3JzLgotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50IHx8IG1fc3RhdGUu
c3Ryb2tlUGF0dGVybikgeworICAgIGlmIChzdHJva2VHcmFkaWVudCgpIHx8IHN0cm9rZVBhdHRl
cm4oKSkgewogICAgICAgICBzdHJva2VFbGxpcHNlQXNQYXRoKGVsbGlwc2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKaW5kZXggNjAzYjBlOTM2ZWZiNTI4Y2FjM2Q3YWRj
ODY2ZTk5NTdlZTMwZWJlYy4uYTFhMjZiZmQyODRkODQ0NjNlYzIwZmIwMTRmYTMzNjljODhjOTk2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlkVXBk
YXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFw
aGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogCiAgICAgdmlydHVhbCBib29sIGNhblVzZVNoYWRv
d0JsdXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCmluZGV4IGVmYmMxZTQ5NTQ0MWJlZGU3MzRlOTQ4ZGQyNmQzNzE0NDE2NTUzZTAuLmQw
YmVjOGQ2Mzg0NzA5Yjc4Y2YxZGU4MGJiMDJlMWUzN2QyZjk0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTk2LDUyICs5NiwyNCBAQCBEcmF3
R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVy
LCBEZWNvbnN0cnVjdERyYXdHbAogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJ
bnRlcm5hbFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCiB7
Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5maWxs
Q29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRT
dGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVu
dFNwYWNlVHJhbnNmb3JtID0gY29udGV4dFN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybiA9IGNvbnRleHRTdGF0ZS5m
aWxsUGF0dGVybjsKLQotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9IGNv
bnRleHRTdGF0ZS5zdHJva2VDb2xvcjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUu
Z3JhZGllbnQgPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnQ7Ci0gICAgbV9vcmlnaW5hbFN0
YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUuc3Ry
b2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUucGF0dGVybiA9IGNvbnRleHRTdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgIG1fb3JpZ2luYWxT
dGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0U3RhdGUuZmlsbEJydXNoOworICAgIG1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaDsKIAogICAgIG1fb3Jp
Z2luYWxTdGF0ZS5jdG0gPSBtX293bmVyLmdldENUTSgpOyAvLyBGSVhNRTogRGVhbCB3aXRoIGJh
c2UgQ1RNLgogCi0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQgPSBjb250ZXh0U3Rh
dGUuc2hhZG93T2Zmc2V0OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciA9IGNvbnRl
eHRTdGF0ZS5zaGFkb3dCbHVyOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IgPSBj
b250ZXh0U3RhdGUuc2hhZG93Q29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25v
cmVUcmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0g
ICAgbV9jdXJyZW50U3RhdGUgPSBtX29yaWdpbmFsU3RhdGU7CisgICAgbV9vcmlnaW5hbFN0YXRl
LmRyb3BTaGFkb3cgPSBjb250ZXh0U3RhdGUuZHJvcFNoYWRvdzsKKyAgICBtX29yaWdpbmFsU3Rh
dGUuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCiB7Ci0gICAgaWYgKG1f
b3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2ludGVy
bmFsQ29udGV4dC0+c2V0RmlsbENvbG9yKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3Ip
OwotICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQpCi0gICAg
ICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5m
aWxsU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUu
ZmlsbFN0eWxlLnBhdHRlcm4pOwotICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHls
ZS5wYXR0ZXJuKQotICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxQYXR0ZXJu
KCptX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmICht
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2lu
dGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxl
LmNvbG9yKTsKLSAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGll
bnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqbV9vcmln
aW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVCht
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7Ci0gICAgICAgIGlmIChtX29yaWdp
bmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybikKLSAgICAgICAgICAgIG1faW50ZXJuYWxDb250
ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKCptX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVy
bik7Ci0gICAgfQorICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsQnJ1c2gobV9vcmlnaW5h
bFN0YXRlLmZpbGxCcnVzaCk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUJydXNo
KG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCk7CiAKICAgICBtX2ludGVybmFsQ29udGV4dC0+
c2V0Q1RNKG1fb3JpZ2luYWxTdGF0ZS5jdG0pOwogCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJh
bnNmb3Jtcyk7Ci0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvdyhtX29yaWdpbmFsU3Rh
dGUuc2hhZG93Lm9mZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFs
U3RhdGUuc2hhZG93LmNvbG9yLCBjb250ZXh0U3RhdGUuc2hhZG93UmFkaXVzTW9kZSk7CisgICAg
bV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fb3JpZ2luYWxT
dGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RHJvcFNo
YWRvdyhtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyk7CiAKICAgICBtX2ludGVybmFsQ29udGV4
dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwogfQpA
QCAtMTY1LDk1ICsxMzcsMzkgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnByZXBhcmVJbnRl
cm5hbENvbnRleHQoY29uc3QgRm9udCYgZm9udCwgRm9udFNtb290aGluZ00KIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4dCgpCiB7CiAgICAgdXBkYXRlQ1RN
KG1fb3JpZ2luYWxTdGF0ZS5jdG0pOwotICAgIHVwZGF0ZUZpbGxDb2xvcihtX29yaWdpbmFsU3Rh
dGUuZmlsbFN0eWxlLmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50Lmdl
dCgpLCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0
ZVN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciwgbV9vcmlnaW5h
bFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tl
U3R5bGUucGF0dGVybi5nZXQoKSk7Ci0gICAgdXBkYXRlU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5z
aGFkb3cub2Zmc2V0LCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxTdGF0
ZS5zaGFkb3cuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA/
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6
Tm8pOworICAgIHVwZGF0ZUZpbGxCcnVzaChtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoKTsKKyAg
ICB1cGRhdGVTdHJva2VCcnVzaChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOworICAgIHVw
ZGF0ZVNoYWRvdyhtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdywgbV9vcmlnaW5hbFN0YXRlLmln
bm9yZVRyYW5zZm9ybXMgPyBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM6Ok5vKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0
ZUZpbGxDb2xvcihjb25zdCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmFkaWVudCwg
UGF0dGVybiogbmV3UGF0dGVybikKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxs
QnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIG5ld0JydXNoKQogewotICAgIC8vIFRoaXMgY2hlY2sg
bG9va3Mgd3JvbmcgYnV0IGl0IGFjdHVhbGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0ZWQgdXNlLgot
ICAgIC8vIENUIHdpbGwgb25seSBldmVyIHNldCB0aGlzIHRvIGEgc29saWQgY29sb3IsIHdoaWNo
IHRoaXMgaXMgdGhlIGNvcnJlY3QgY2hlY2sgZm9yLgotICAgIC8vIEluIGNvbmNsdWRlSW50ZXJu
YWxDb250ZXh0KCkgd2Ugc2V0IGl0IGJhY2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2luYWxseSwgd2hp
Y2ggdGhpcyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgZm9yIHRvby4KLSAgICBpZiAobmV3Q29sb3Ig
PT0gbV9jdXJyZW50U3RhdGUuZmlsbFN0eWxlLmNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5maWxsQ29sb3Ig
PSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQpCi0gICAgICAgIG5ld1N0YXRlLmZpbGxH
cmFkaWVudCA9IG5ld0dyYWRpZW50OwotICAgIGlmIChuZXdQYXR0ZXJuKQotICAgICAgICBuZXdT
dGF0ZS5maWxsUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0
ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlIH0pOwot
ICAgIG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9IG5ld0NvbG9yOworICAgIG1fb3du
ZXIuc2V0RmlsbEJydXNoKG5ld0JydXNoKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQqIG5ld0dy
YWRpZW50LCBQYXR0ZXJuKiBuZXdQYXR0ZXJuKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVw
ZGF0ZVN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBuZXdCcnVzaCkKIHsKLSAgICAvLyBU
aGlzIGNoZWNrIGxvb2tzIHdyb25nIGJ1dCBpdCBhY3R1YWxseSBpc24ndCwgZm9yIG91ciBsaW1p
dGVkIHVzZS4KLSAgICAvLyBDVCB3aWxsIG9ubHkgZXZlciBzZXQgdGhpcyB0byBhIHNvbGlkIGNv
bG9yLCB3aGljaCB0aGlzIGlzIHRoZSBjb3JyZWN0IGNoZWNrIGZvci4KLSAgICAvLyBJbiBjb25j
bHVkZUludGVybmFsQ29udGV4dCgpIHdlIHNldCBpdCBiYWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdp
bmFsbHksIHdoaWNoIHRoaXMgY2hlY2sgd29ya3MgY29ycmVjdGx5IGZvciB0b28uCi0gICAgaWYg
KG5ld0NvbG9yID09IG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBuZXdTdGF0
ZS5zdHJva2VDb2xvciA9IG5ld0NvbG9yOwotICAgIGlmIChuZXdHcmFkaWVudCkKLSAgICAgICAg
bmV3U3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3UGF0dGVy
bikKLSAgICAgICAgbmV3U3RhdGUuc3Ryb2tlUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9v
d25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlQ29sb3JDaGFuZ2UgfSk7Ci0gICAgbV9jdXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3Ig
PSBuZXdDb2xvcjsKKyAgICBtX293bmVyLnNldFN0cm9rZUJydXNoKG5ld0JydXNoKTsKIH0KIAog
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGN0bSkKIHsKLSAgICBpZiAoY3RtID09IG1fY3VycmVudFN0YXRlLmN0bSkKKyAgICBpZiAobV9v
d25lci5nZXRDVE0oKSA9PSBjdG0pCiAgICAgICAgIHJldHVybjsKLQogICAgIG1fb3duZXIuc2V0
Q1RNKGN0bSk7Ci0gICAgbV9jdXJyZW50U3RhdGUuY3RtID0gY3RtOwogfQogCi1zdGF0aWMgYm9v
bCBzaGFkb3dJc0NsZWFyZWQoY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNo
YWRvd0JsdXIpCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0IERy
b3BTaGFkb3cmIGRyb3BTaGFkb3csIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKQogewotICAgIHJldHVybiBzaGFkb3dPZmZzZXQgPT0gRmxvYXRTaXplKCkg
JiYgIXNoYWRvd0JsdXI7Ci19Ci0KLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFk
b3coY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIsIGNvbnN0
IENvbG9yJiBzaGFkb3dDb2xvciwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpCi17Ci0gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyBpZiBub2JvZHkgaGFzIGFueSBzaGFkb3dzLgotICAgIGlmIChzaGFk
b3dJc0NsZWFyZWQoc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyKSAmJiBzaGFkb3dJc0NsZWFyZWQo
bV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCwgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBzdGF0ZUNoYW5nZUZs
YWdzOwotCi0gICAgaWYgKHNoYWRvd09mZnNldCAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zm
c2V0IHx8IHNoYWRvd0JsdXIgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIgfHwgc2hhZG93
Q29sb3IgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93LmNvbG9yKSB7Ci0gICAgICAgIG5ld1N0YXRl
LnNoYWRvd09mZnNldCA9IHNoYWRvd09mZnNldDsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93Qmx1
ciA9IHNoYWRvd0JsdXI7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd0NvbG9yID0gc2hhZG93Q29s
b3I7Ci0gICAgICAgIHN0YXRlQ2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dDaGFuZ2UpOwotICAgIH0KLSAgICBpZiAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgIT0g
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkICYmIChzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKSAhPSBtX2N1cnJlbnRTdGF0
ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcykgewotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyA9IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtczo6WWVzKTsKLSAgICAgICAgc3RhdGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsKLSAgICB9Ci0gICAg
aWYgKHN0YXRlQ2hhbmdlRmxhZ3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9v
d25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgc3RhdGVDaGFuZ2VGbGFncyk7Ci0KLSAgICBt
X2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0ID0gc2hhZG93T2Zmc2V0OwotICAgIG1fY3VycmVu
dFN0YXRlLnNoYWRvdy5ibHVyID0gc2hhZG93Qmx1cjsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFk
b3cuY29sb3IgPSBzaGFkb3dDb2xvcjsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuaWdub3Jl
VHJhbnNmb3JtcyA9IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtczo6WWVzKTsKKyAgICBtX293bmVyLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7Cisg
ICAgbV9vd25lci5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKIH0KIAogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogewogICAgIGlmIChD
R1N0eWxlR2V0VHlwZShzdHlsZSkgIT0ga0NHU3R5bGVTaGFkb3cpIHsKICAgICAgICAgLy8gRklY
TUU6IFN1cHBvcnQgbW9yZSBraW5kcyBvZiBDR1N0eWxlcy4KLSAgICAgICAgdXBkYXRlU2hhZG93
KHswLCAwfSwgMCwgQ29sb3IoKSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVk
KTsKKyAgICAgICAgdXBkYXRlU2hhZG93KHsgfSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVu
c3BlY2lmaWVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYxLDcgKzE3Nyw3IEBA
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkK
ICAgICBhdXRvIHJhZCA9IGRlZzJyYWQoc2hhZG93U3R5bGUuYXppbXV0aCAtIDE4MCk7CiAgICAg
YXV0byBzaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc3RkOjpjb3MocmFkKSwgc3RkOjpzaW4ocmFk
KSkgKiBzaGFkb3dTdHlsZS5oZWlnaHQ7CiAgICAgYXV0byBzaGFkb3dDb2xvciA9IENHU3R5bGVH
ZXRDb2xvcihzdHlsZSk7Ci0gICAgdXBkYXRlU2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93U3R5
bGUucmFkaXVzLCBDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHNoYWRvd0NvbG9y
KSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CisgICAgdXBkYXRlU2hhZG93KHsgc2hh
ZG93T2Zmc2V0LCBzdGF0aWNfY2FzdDxmbG9hdD4oc2hhZG93U3R5bGUucmFkaXVzKSwgQ29sb3I6
OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xvcikgfSwgU2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM6Olllcyk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmRC
ZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZSwgQ0dSZWN0
KQpAQCAtMzI4LDggKzI0NCw4IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3
R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAKICAgICBhdXRv
IGZpbGxDb2xvciA9IENHR1N0YXRlR2V0RmlsbENvbG9yKGdzdGF0ZSk7CiAgICAgYXV0byBzdHJv
a2VDb2xvciA9IENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0YXRlKTsKLSAgICB1cGRhdGVGaWxs
Q29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShmaWxsQ29sb3IpKTsKLSAg
ICB1cGRhdGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0
cm9rZUNvbG9yKSk7CisgICAgdXBkYXRlRmlsbEJydXNoKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2
ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7CisgICAgdXBkYXRlU3Ryb2tlQnJ1c2goQ29sb3I6OmNy
ZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOwogICAgIHVwZGF0ZVNoYWRv
dyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCiAgICAgYXV0byBmb250U2l6ZSA9IENHR1N0
YXRlR2V0Rm9udFNpemUoZ3N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAK
aW5kZXggNTExZTA5Yjk2Y2VmMDMyNTA5MGUyM2FmOTE0YWUzNWYyYWI4ZWQyZS4uODBhOGM4YWU2
NTQ4ZDBiNmE5NmFhMzJkN2MwNTVkYjY4NjQ5MTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHAKQEAgLTI0MiwxMCArMjQyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcK
ICAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNvbnRleHQpOwogICAgIENHQ29udGV4dFNldEZv
bnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7CiAKLSAgICBGbG9hdFNpemUg
c2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29s
b3I7Ci0gICAgY29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvcik7CisgICAgYXV0byBkcm9wU2hhZG93ID0gY29udGV4dC5kcm9wU2hhZG93KCk7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGV4dENUTSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAg
ZmxvYXQgc3ludGhldGljQm9sZE9mZnNldCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwpA
QCAtMjU4LDE2ICsyNTUsMTYgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgfQog
ICAgIH07CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAm
JiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFj
b250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5
T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2Rl
KCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIGRyb3BTaGFkb3cuY29sb3IuaXNWYWxpZCgp
ICYmICFkcm9wU2hhZG93LmJsdXJSYWRpdXMgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFw
Rm9udCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRD
VE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRy
YW5zcGFyZW5jeUxheWVyKCk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAv
LyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENH
IHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4
dC5maWxsQ29sb3IoKTsKLSAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gc2hhZG93Q29s
b3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsK
KyAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gZHJvcFNoYWRvdy5jb2xvci5jb2xvcldp
dGhBbHBoYU11bHRpcGxpZWRCeShmaWxsQ29sb3IuYWxwaGFBc0Zsb2F0KCkpOwogICAgICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IpOwotICAgICAgICBmbG9hdCBzaGFk
b3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOworICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCk7CiAg
ICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2
ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRp
dmUuCi0gICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0
LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7
CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZz
ZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAx
KTsKICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRY
LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCiAgICAg
ICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBz
eW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKQEAgLTI4MCw3ICsyNzcsNyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZs
b2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9u
dCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwog
CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgIGNvbnRleHQuc2V0
RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChzaG91bGRTbW9vdGhGb250cyAhPSBvcmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyZTJmNGY0ZjJjYjU1ZDM2NWU1YWUzOTkz
MjVkMDVmMmMxNzM2MWZkLi4yYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFlZGZkZTFjODgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDEwICs5MCw3IEBAIGJvb2wgRGlz
cGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRs
ZSBpdGVtKQogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZv
cm1PcGVyYXRpb25zKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRl
bS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBk
cm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0t
c3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFu
Z2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
aWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAg
IGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDIzZDBiYmNjNzFjMjgxYzUyYzM1YThjMjUyZGE5NmMw
YWIxMmE5OGMuLmI2NmM4NDhhMzNiZGQ5MjM2MGZlYTg1MzM3ZmFiNWRiMmQyZDAyYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE0OCwyNCArMTQ4LDE5IEBAIHN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJv
a2VUaGlja25lc3MmIHN0YXRlKQogICAgIHJldHVybiB0czsKIH0KIAotU2V0U3RhdGU6OlNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlLCBm
bGFncykKLXsKLX0KLQotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKLSAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2Up
CitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQor
ICAgIDogbV9zdGF0ZShzdGF0ZSkKIHsKIH0KIAogdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7
CisgICAgY29udGV4dC51cGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAotc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRlJiBzdGF0ZSkKK3N0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0
ZSYgaXRlbSkKIHsKLSAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNoYW5nZSgpOworICAgIHRzIDw8IGl0
ZW0uc3RhdGUoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCmluZGV4IDk3Y2I1ZmM4ZDA0YmE4NjYyYjcyYzdkZGVlYmM0NDE1NWMyODI1YjcuLjk2
OTRkNjhkMTVlOThkNTY3ZDM4ZDNhYzliMmMwOTlmMzBkMGE1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaApAQCAtMjQ3LDEwICsyNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpOwogCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmIHN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIG1fc3RhdGVD
aGFuZ2U7IH0KKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CkBAIC0yNTgsMjg4ICsy
NTcsMjQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlIG1fc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzOwotICAgIGVuY29kZXIgPDwgY2hhbmdlRmxhZ3M7Ci0KLSAgICBh
dXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZTsKLQotICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7
Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIg
PDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpz
dGF0ZS5zdHJva2VQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBB
U1NFUlQoc3RhdGUuZmlsbEdyYWRpZW50KTsKLSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmls
bEdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0
ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxQYXR0ZXJuOwot
ICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd09mZnNl
dDsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd1Jh
ZGl1c01vZGU7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VDb2xvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5maWxsQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLmZpbGxSdWxlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQotICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLmJsZW5kTW9kZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFu
Z2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmFscGhhOwotCi0gICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZEFudGlhbGlhczsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9u
dHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZFNtb290aEZvbnRzOwot
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAg
IGVuY29kZXIgPDwgbV9zdGF0ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6
b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
PiBjaGFuZ2VGbGFnczsKLSAgICBkZWNvZGVyID4+IGNoYW5nZUZsYWdzOwotICAgIGlmICghY2hh
bmdlRmxhZ3MpCisgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gc3RhdGU7
CisgICAgZGVjb2RlciA+PiBzdGF0ZTsKKyAgICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFu
Z2U7Ci0gICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFuZ2VGbGFnczsKLQotICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAgYXV0byBzdHJva2VHcmFkaWVu
dCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghc3Ryb2tlR3JhZGll
bnQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hh
bmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ry
b2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFzdHJv
a2VQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJu
KTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBhdXRv
IGZpbGxHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICgh
ZmlsbEdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1vdmUoKmZpbGxHcmFkaWVu
dCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBhdXRv
IGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIWZp
bGxQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZSgqZmlsbFBhdHRlcm4pOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93T2Zmc2V0
OwotICAgICAgICBpZiAoIXNoYWRvd09mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSAqc2hh
ZG93T2Zmc2V0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7Ci0g
ICAgICAgIGRlY29kZXIgPj4gc2hhZG93Qmx1cjsKLSAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFs
PENvbG9yPiBzaGFkb3dDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKLSAg
ICAgICAgaWYgKCFzaGFkb3dDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xv
cjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1
c01vZGU7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93UmFkaXVzTW9kZTsKLSAgICAgICAgaWYg
KCFzaGFkb3dSYWRpdXNNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSBXVEZNb3ZlKCpz
aGFkb3dSYWRpdXNNb2RlKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
KSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzdHJva2VUaGlja25lc3M7Ci0gICAg
ICAgIGRlY29kZXIgPj4gc3Ryb2tlVGhpY2tuZXNzOwotICAgICAgICBpZiAoIXN0cm9rZVRoaWNr
bmVzcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSAqc3Ryb2tlVGhpY2tuZXNzOwotICAgIH0K
LQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgZGVjb2Rl
ciA+PiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAgIGlmICghdGV4dERyYXdpbmdNb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnRleHREcmF3aW5nTW9kZSA9IFdURk1vdmUoKnRleHREcmF3aW5nTW9kZSk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENv
bG9yPiBzdHJva2VDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsKLSAgICAg
ICAgaWYgKCFzdHJva2VDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsK
LSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPENvbG9yPiBmaWxsQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwotICAg
ICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAqZmlsbENvbG9yOwotICAg
IH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpIHsKLSAgICAgICAgU3Ryb2tlU3R5bGUg
c3Ryb2tlU3R5bGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Ryb2tlU3R5bGUpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxS
dWxlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsK
LSAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKLSAgICAgICAgaWYgKCFmaWxsUnVsZSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsUnVsZSA9ICpmaWxsUnVsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3Bl
cmF0aW9uQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9y
PiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRv
cjsKLSAgICAgICAgaWYgKCFjb21wb3NpdGVPcGVyYXRvcikKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciA9ICpjb21wb3NpdGVPcGVyYXRvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hh
bmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwotICAg
ICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKLSAgICAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuYmxlbmRNb2RlID0gKmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0
aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAgICAgZGVjb2RlciA+
PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
IHN0YXRlQ2hhbmdlLm1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpIHsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGE7Ci0gICAgICAgIGRlY29kZXIgPj4gYWxw
aGE7Ci0gICAgICAgIGlmICghYWxwaGEpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxwaGEgPSAqYWxwaGE7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzaG91bGRBbnRpYWxpYXM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkQW50aWFs
aWFzOwotICAgICAgICBpZiAoIXNob3VsZEFudGlhbGlhcykKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRBbnRpYWxp
YXMgPSAqc2hvdWxkQW50aWFsaWFzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250
c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRTbW9vdGhGb250
czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTbW9vdGhGb250czsKLSAgICAgICAgaWYgKCFz
aG91bGRTbW9vdGhGb250cykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9ICpzaG91bGRTbW9v
dGhGb250czsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hh
bmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7
Ci0gICAgICAgIGlmICghc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBk
ZWNvZGVyID4+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBpZiAoIXNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgIH0KLQotICAgIHJldHVybiB7IHsgc3RhdGVDaGFuZ2Ug
fSB9OworICAgIHJldHVybiBTZXRTdGF0ZSgqc3RhdGUpOwogfQogCiBjbGFzcyBTZXRMaW5lQ2Fw
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlZWU0NDcx
ZDM1NGU3NTE1MzEyNTE4OWRmY2M5NDE4YTM5NDUxNGExLi5mZTkyODE2N2QxNGVkZTVmZWY3ODY5
M2FlN2UxNDBjZTY0YWNhYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC01Myw0NSArNTMsMzQgQEAgUmVjb3JkZXI6On5SZWNvcmRlcigpCiAgICAgQVNT
RVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGlj
YXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNP
bmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBj
aGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFn
cykKK3ZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBpbmxpbmVTdGF0ZUNoYW5nZUZsYWdzIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLAotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLAotICAgIH07Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lU3RhdGVDaGFuZ2VGbGFncykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpICYmICFjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tl
Q29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBB
U1NFUlQoc3RhdGUuY2hhbmdlcygpKTsKKyAgICAKKyAgICBpZiAoc3RhdGUuaGFzT25seVByaW1p
dGl2ZUNoYW5nZXMoKSkgeworICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCkpCisgICAgICAgICAgICByZWNv
cmRTZXRJbmxpbmVGaWxsQ29sb3IoKmZpbGxDb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsK
IAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bENvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JB
Qnl0ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3RhdGUuY2hhbmdl
cygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkK
KyAgICAgICAgICAgIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpzdHJva2VDb2xvcigpLnRy
eUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIHJldHVybiB0cnVlOwotfQorICAgICAgICBpZiAo
c3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVRoaWNrbmVzcykpCisgICAgICAgICAgICByZWNvcmRTZXRTdHJva2VUaGlja25lc3Moc3Ry
b2tlVGhpY2tuZXNzKCkpOwogCi12b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0o
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQotewotICAgIGlmICghY29udGFp
bnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkgewotICAgICAg
ICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAg
ICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAg
IGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAg
ICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIHJl
Y29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldElubGluZVN0cm9r
ZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkp
OworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6RmlsbEJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gZmlsbFBh
dHRlcm4oKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFn
ZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldFN0cm9r
ZVRoaWNrbmVzcyhjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBpZiAoc3Rh
dGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZUJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gc3Ryb2tlUGF0dGVybigpKQor
ICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAg
IH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFu
Z2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKKyAgICByZWNvcmRT
ZXRTdGF0ZShzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRl
bUlmTmVjZXNzYXJ5KCkKQEAgLTk5LDI1ICs4OCwyNSBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY3VycmVu
dGx5IGludm9rZWQgaW4gYW4gYWQtaG9jIG1hbm5lciB3aGVuIHJlY29yZGluZyBkcmF3aW5nIGl0
ZW1zLiBXZSBzaG91bGQgY29uc2lkZXIgZWl0aGVyCiAgICAgLy8gc3BsaXR0aW5nIEdyYXBoaWNz
Q29udGV4dCBzdGF0ZSBjaGFuZ2VzIGludG8gaW5kaXZpZHVhbCBkaXNwbGF5IGxpc3QgaXRlbXMs
IG9yIHJlZmFjdG9yaW5nIHRoZSBjb2RlIHN1Y2ggdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIGlz
IGF1dG9tYXRpY2FsbHkgaW52b2tlZCB3aGVuIHJlY29yZGluZyBhIGRyYXdpbmcgaXRlbS4KLSAg
ICBhdXRvJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKLSAgICBh
dXRvIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3RhdGUo
Y3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0gICAgaWYgKCFjaGFuZ2VzRnJvbUxh
c3RTdGF0ZSkKKyAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlOworICAgIGlm
ICghc3RhdGUuY2hhbmdlcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJF
QU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8
PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdl
c0Zyb21MYXN0U3RhdGUpKTsKLSAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFuZ2Vz
LCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3Mg
PSB7IH07Ci0gICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdl
cy5tX3N0YXRlOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAi
cHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IHN0YXRlKTsKKyAgICBhcHBlbmRTdGF0ZUNo
YW5nZUl0ZW0oc3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOworICAgIGN1cnJl
bnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZTsKIH0KIAogY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIFJlY29yZGVyOjpzdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJl
bnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgp
LnN0YXRlOwogfQogCi12b2lkIFJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzIGZsYWdzKQordm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQogewotICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLmFjY3VtdWxh
dGUoc3RhdGUsIGZsYWdzKTsKKyAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZS5tZXJnZUNoYW5nZXMo
c3RhdGUsIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOworICAgIHN0YXRlLmRpZEFw
cGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5lQ2FwKExpbmVDYXAgbGlu
ZUNhcCkKQEAgLTIyMiwxMiArMjExLDE1IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogdm9p
ZCBSZWNvcmRlcjo6c2F2ZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpzYXZlKCk7CiAgICAg
cmVjb3JkU2F2ZSgpOwotICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3Qo
KS5jbG9uZUZvclNhdmUoKSk7CisgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2su
bGFzdCgpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCiB7CisgICAgR3JhcGhpY3ND
b250ZXh0OjpyZXN0b3JlKCk7CisKICAgICBpZiAoIW1fc3RhdGVTdGFjay5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMjc1LDE2ICsyNjcsMjQgQEAgQWZmaW5lVHJhbnNmb3JtIFJlY29y
ZGVyOjpnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CiAK
IHZvaWQgUmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsK
KyAgICBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisK
ICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0
YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSk7CisgICAgCisgICAg
bV9zdGF0ZS5hbHBoYSA9IDE7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxh
eWVyKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisK
ICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEVuZFRy
YW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAg
IG1fc3RhdGUuYWxwaGEgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZS5hbHBoYTsKIH0KIAogdm9pZCBS
ZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA4NDVlYzAw
NzcyZWQyYzU0YTFlNmNiMjZiMjE1MWRhYmFhNmVjMDc1Li5hMmEyMjY4ZTVlZDVlYjVjMGE5Y2Zl
M2NmZWViYTc3MDFjMmFlZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRT
ZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4pID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRTZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CkBA
IC0xMzUsMzAgKzEzNSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHJlY29yZFJl
c291cmNlVXNlKEZvbnQmKSA9IDA7CiAKICAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R3Jh
cGhpY3NDb250ZXh0U3RhdGU+IGxhc3REcmF3aW5nU3RhdGU7CiAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBjdG07CiAgICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzOwotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKIAotICAgICAgICBDb250ZXh0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQotICAgICAgICAgICAgOiBjdG0odHJhbnNmb3JtKQot
ICAgICAgICAgICAgLCBjbGlwQm91bmRzKGNsaXApCi0gICAgICAgICAgICAsIGxhc3REcmF3aW5n
U3RhdGUoc3RhdGUpCisgICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtLCBjb25zdCBGbG9hdFJlY3Qm
IGNsaXBCb3VuZHMpCisgICAgICAgICAgICA6IHN0YXRlKHN0YXRlKQorICAgICAgICAgICAgLCBj
dG0oY3RtKQorICAgICAgICAgICAgLCBjbGlwQm91bmRzKGNsaXBCb3VuZHMpCiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICBDb250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0
ZSwgY3RtLCBjbGlwQm91bmRzKTsKLSAgICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3Rh
dGVDaGFuZ2U7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQogICAgICAg
ICBDb250ZXh0U3RhdGUgY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBjbG9uZUZvclNhdmUoKTsKLSAgICAgICAgICAg
IHN0YXRlLmxhc3REcmF3aW5nU3RhdGUuYWxwaGEgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0
YXRlOworICAgICAgICAgICAgYXV0byBjb3B5ID0gKnRoaXM7CisgICAgICAgICAgICBjb3B5LnN0
YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIGlmIChjb3B5Lmxh
c3REcmF3aW5nU3RhdGUpCisgICAgICAgICAgICAgICAgY29weS5sYXN0RHJhd2luZ1N0YXRlLT5k
aWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgICAgICByZXR1cm4gY29weTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwpAQCAt
MTg5LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQg
ZGFzaE9mZnNldCkgZmluYWw7CkBAIC0yNzAsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3Qm
LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0o
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgY3RtKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuY3BwCmluZGV4IDFmZGM2YmE1NmJmZGIyNjM2ZWZiMzQ2MmFkYTJhOTkwZDMzODk5NDUu
Ljc5ZGQxMDIwNDYyMjZmYzBhMTFlZGUzYmUzYjk1MmVjYjg3ZDM3NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtMTA0LDkgKzEwNCw5IEBA
IHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tu
ZXNzKQogICAgIGFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+KHRoaWNrbmVzcyk7CiB9CiAKLXZv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZs
YWdzKQordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBhcHBlbmQ8U2V0U3RhdGU+KHN0YXRlLCBjaGFuZ2VG
bGFncyk7CisgICAgYXBwZW5kPFNldFN0YXRlPihzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTQxNywxNiArNDE3LDEz
IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2hhZG93UGFpbnRpbmdFeHRlbnQoZmxvYXQgYmx1clJh
ZGl1cykKIAogRmxvYXRSZWN0IFJlY29yZGVySW1wbDo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVj
dDsKKyAgICBhdXRvIGJvdW5kcyA9IHJlY3Q7CiAgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3Rh
dGUoKTsKIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93UmFk
aXVzOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChnZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkgewotICAgICAgICBGbG9hdFJlY3Qgc2hh
ZG93RXh0ZW50ID0gYm91bmRzOwotICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZz
ZXQpOwotICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChz
aGFkb3dSYWRpdXMpKTsKKyAgICBpZiAoaGFzU2hhZG93KCkpIHsKKyAgICAgICAgYXV0byBzaGFk
b3dFeHRlbnQgPSBib3VuZHM7CisgICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKGRyb3BTaGFkb3co
KS5vZmZzZXQpOworICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4
dGVudChkcm9wU2hhZG93KCkuYmx1clJhZGl1cykpOwogICAgICAgICBib3VuZHMudW5pdGUoc2hh
ZG93RXh0ZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmgKaW5kZXggNjQyMjY1ZjA5ODAyMmNmMmIwNWYxODBjMTc0ZmEwMzQ2MmYyZGQ0MC4u
YWMyZDMxNzk2NzU4YzYyY2M2MTUwYTE1NDlkN2EwOTQwNmVlZmFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgZmlu
YWw7CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90Pikg
ZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZpbmFsOwot
ICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCByZWNv
cmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVE
YXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZjE5ZDAwMzU0Y2RiZWRlM2E1YmExYWY3NThjZmYw
MjNhMjVhMjIuLmYzYzhjOTBjZDg4YmJlMGM1MWUxZDRmYTEzM2M1MWU4M2I4MGIzOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTk3LDEwICs5NywxMCBA
QCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAKLSAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUlt
YWdlKHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQo
KSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShz
ZXRTdGF0ZUl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1
cm4gKmltYWdlSWRlbnRpZmllcjsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZp
eFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxs
UGF0dGVybi5nZXQoKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVy
blRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxsQnJ1c2gucGF0dGVybigpKSkKICAg
ICAgICAgcmV0dXJuICppbWFnZUlkZW50aWZpZXI7CiAKICAgICBzZXRTdGF0ZUl0ZW0uYXBwbHko
Y29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRo
LmNwcAppbmRleCA3ZWQ1MzdjOTI3OTM3NzBmNDQ4OGFlMjlkZjQwNzI3ZDdlYjFhM2E5Li42MTc4
YWViMWM4NzYzNzcyMTk1ZjllNDQ3NjEwZTQ5MGU3NjRmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRmxv
YXRSZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0CiBzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBjb250ZXh0LnN0cm9rZUdyYWRp
ZW50KCkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4
dC5zdGF0ZSgpLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0
LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQsIGNvbnRleHQuc3Ryb2tlR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpKTsKICAgICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJv
a2VQYXR0ZXJuKCkpCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwog
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1NDM4MTgyZGRlODc2
M2ViYWQzOGYxOTJkZjc5NWFhMDYwYjY1MWJiLi45ZTM3ODZlMGZkY2RiODlmYjA2NjI4YzhmY2M2
ZGM4N2I3N2MzZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjgsMTAg
KzEyOCwxMCBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3Bs
YXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0pCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAK
LSAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUu
c3Ryb2tlUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0u
c3RhdGUoKS5maWxsQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQYXR0
ZXJuLmdldCgpKSkKKyAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0
cm9rZUJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0o
V1RGTW92ZShpdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5jcHAKaW5kZXggODU3N2NiYmRlNmQzOTAxZDM0NzA3NjFlZDMwZjc5ZDk4ZTgyYjk4ZC4uOWJh
ZjlhMzVjOTcwZjliNzUxMDMwNTZjYjViZDc4MTZhZWNhZDc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3Mo
ZmxvYXQgdGhpY2tuZXNzKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OlNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpKTsKIH0KIAotdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
ZmxhZ3MpCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRT
dGF0ZSB7IHN0YXRlLCBmbGFncyB9KSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6U2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlIHsgc3RhdGUgfSkp
OwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0TGlu
ZUNhcChMaW5lQ2FwIGxpbmVDYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHkuaAppbmRleCA5YjMzYTA2N2ZkMTZiY2NmMTQwNDJjMTk3NGRkNjkxOTQyMjYyNDY4Li5i
ZWQzNjNlMDYyNDUzNTI3ZjlhMDYyMDg4Y2U2NzdjMmI5OTIyNWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xvcihXZWJDb3JlOjpTUkdCQTx1aW50OF90
PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihXZWJDb3JlOjpT
UkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3Mo
ZmxvYXQpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUNh
cChXZWJDb3JlOjpMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNv
bnN0IFdlYkNvcmU6OkRhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZv
aWQgcmVjb3JkU2V0TGluZUpvaW4oV2ViQ29yZTo6TGluZUpvaW4pIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc0NzEwNTEzMzU3ZmY0
ZTcyZGI0MzRhMDdkOTI1YTYwY2ZkNzE4MzMuLmVkMmFlZWQzNTY1YjU3MWQxMzdhYzk2OGQ3MDJm
NmExZTVkZGNkZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250
ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wMy0xNiAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW01lcmdlLVF1ZXVlXSBBZGQgc3RlcCB0byBt
YWtlIGNvbW1lbnQgb24gcHVsbCByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3Bw
CmluZGV4IDI0NzM1ODBmMTkwZTBmZDY3NGMzNjdkYTQ3YzlmMTkyYmEyNDg1ZTQuLjIxNWMxN2M2
NjU3YWVkYTZhNmUyY2QwYWUwYzljOTI2ZjNiZDgyYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVz
dHNDRy5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgVEVTVChHcmFwaGljc0NvbnRleHRUZXN0cywgRHJh
d05hdGl2ZUltYWdlRG9lc05vdExlYWtDb21wb3NpdGVPcGVyYXRvcikKICAgICBHcmFwaGljc0Nv
bnRleHRDRyBjdHgoY2dDb250ZXh0LmdldCgpKTsKIAogICAgIEVYUEVDVF9FUShjdHguY29tcG9z
aXRlT3BlcmF0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBF
Q1RfRVEoY3R4LmJsZW5kTW9kZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAg
RVhQRUNUX0VRKGN0eC5ibGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogCiAgICAgYXV0
byBncmVlblBpeGVsQ0cgPSBncmVlbkltYWdlKCk7CiAgICAgYXV0byBncmVlblBpeGVsTmF0aXZl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShncmVlblBpeGVsQ0cuZ2V0KCkpOwpAQCAtNzEsNyArNzEs
NyBAQCBURVNUKEdyYXBoaWNzQ29udGV4dFRlc3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVh
a0NvbXBvc2l0ZU9wZXJhdG9yKQogICAgIEVYUEVDVF9FUShwcmltYXJ5RGF0YVsyXSwgMCk7CiAK
ICAgICBFWFBFQ1RfRVEoY3R4LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBDb21wb3NpdGVPcGVyYXRv
cjo6U291cmNlT3Zlcik7Ci0gICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGVPcGVyYXRpb24oKSwg
QmxlbmRNb2RlOjpOb3JtYWwpOworICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlKCksIEJsZW5k
TW9kZTo6Tm9ybWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGE1NmUwZjZiOWZkY2FkMmFkZGFlMjkwYjQ3ODcwZTM5NTZmNDRjYjYuLmVmMTM3MjZjYTVkNzBj
M2Y5MDVlMjAzMmNlMjNkOWE4ZGU2ZmNkZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0w
My0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2Vz
IHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zv
cm1zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxp
c3QtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAzLTE2ICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zs
b3Jlc0BhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90ZXh0ZmllbGRzZWxlY3Rpb24vc2Vs
ZWN0aW9uLW5vdC1hcHBsaWNhdGlvbi10ZXh0YXJlYS5odG1sIGlzIGEgZmxha3kgdGV4dCBmYWls
dXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVz
LXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWlu
Y2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKaW5kZXggNTExYjdjMGM1NGQzMzIxNmI3YzZlYWYw
NDNhNzVjMTY3NjZkMDQyNy4uYjI5ZmUyZjUzOWFkOTY2ZjUwMmE1M2I3Mzc5MWVmZTE0YTBlOWNi
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1z
aGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQt
aW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtNCwxMSArNCwxMiBAQAogICAoeSAwLjAw
KSkKIChzYXZlKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikKLSAgKHNoYWRvdy1i
bHVyIDEyLjAwKQotICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChzaGFk
b3ctY29sb3IgIzAwMDAwMCkKLSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisgIChj
aGFuZ2UtZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAgKGRyb3Atc2hhZG93CisgICAgKHNoYWRvdy1v
ZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAxMi4wMCkKKyAgICAo
c2hhZG93LWNvbG9yICMwMDAwMDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkp
KQogKGZpbGwtY29tcG9zaXRlZC1yZWN0CiAgIChyZWN0IGF0ICg1MCw1MCkgc2l6ZSAxMDB4MTAw
KQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9k
aXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0CmluZGV4
IDM4NmUzOTQxMTg1ZjA5YTNjNjhlYzZjMmFlODhkZjExYzcwYjBhNjkuLjFkY2FiYmU3Y2UwNWJj
YmU5NGUyMzM2NGViZTI5ZWE3NmZmMGY1OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3Bs
YXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVk
LnR4dApAQCAtNiwxMSArNiwxMiBAQAogICAoY3RtIHttPSgoMC44NywwLjUwKSgtMC41MCwwLjg3
KSkgdD0oODEuNzAsLTE4LjMwKX0pKQogKHNhdmUpCiAoc2V0LXN0YXRlCi0gIChjaGFuZ2UtZmxh
Z3MgNTEyKQotICAoc2hhZG93LWJsdXIgMTIuMDApCi0gIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEw
IGhlaWdodD0yMCkKLSAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQotICAoc2hhZG93cy11c2UtbGVn
YWN5LXJhZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFncyBbZHJvcC1zaGFkb3ddKQorICAoZHJvcC1z
aGFkb3cKKyAgICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCisgICAgKHNoYWRv
dy1ibHVyIDEyLjAwKQorICAgIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKKyAgICAoc2hhZG93cy11
c2UtbGVnYWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1jb21wb3NpdGVkLXJlY3QKICAgKHJlY3QgYXQg
KDAsMCkgc2l6ZSAxMDB4MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CmluZGV4
IGJjMTdiNTExNDk5ZjgyNTZjOTkyOTBkYWU4NjE0ZDQ4OTRjYWY5Y2MuLjRkYTA2YjNjMzg3NjJl
ZDcyNTY4NTRjNGUzZjRlMDc4M2E2NWZiNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3Bs
YXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dApAQCAtOCw5ICs4LDEw
IEBACiAgIChjb21wb3NpdGUtb3BlcmF0aW9uIHNvdXJjZS1vdmVyKQogICAoYmxlbmQtbW9kZSBu
b3JtYWwpIGV4dGVudCBhdCAoMCwwKSBzaXplIDEwNHgxMDQpCiAoc2V0LXN0YXRlCi0gIChjaGFu
Z2UtZmxhZ3MgMzI5NjApCi0gIChmaWxsLWNvbG9yICMwMDAwRkYpCi0gIChzdHJva2Utc3R5bGUg
MCkKKyAgKGNoYW5nZS1mbGFncyBbZmlsbC1icnVzaCwgc3Ryb2tlLXN0eWxlLCBzaG91bGQtYW50
aWFsaWFzXSkKKyAgKGZpbGwtYnJ1c2gKKyAgICAoY29sb3IgIzAwMDBGRikpCisgIChzdHJva2Ut
c3R5bGUgTk8tU1RST0tFKQogICAoc2hvdWxkLWFudGlhbGlhcyAwKSkKIChkcmF3LXJlY3QKICAg
KHJlY3QgYXQgKDAsMCkgc2l6ZSAxMDR4MikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455070</attachid>
            <date>2022-03-18 00:00:16 -0700</date>
            <delta_ts>2022-03-18 01:14:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220318000015.patch</filename>
            <type>text/plain</type>
            <size>172357</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uYzg1YWZhMjQ2MzMyNWUxYzA5NzEyN2ZiNmZiZmEw
ZTY5NTI0YTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAorMjAyMi0wMy0xNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENHOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpjYWxj
dWxhdGVEcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
ZHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0dTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dENHOjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2gpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTSk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dJc0NsZWFyZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFn
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hhbmdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250
ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmV4dGVudEZy
b21Mb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlU3Ryb2tlU3R5
bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBzaG91bGQgYWx3YXlzIGJlIHN0cmV0Y2hl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2VhYWQwNmJlN2Y4Y2VlMDg2MGUzMjkxZS4u
OWY1ZDExZjNiZWIzMThiNGRjODNiYTNkYThiYmQ3NjNhN2EyNzY2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMi0wMy0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2Vl
cCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdGF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlBY3Rpdml0eUluTWFuYWdlciBvbiBtYWlu
IHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMmRlZDA5N2Nh
YTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4uZWJjYjUzMTdjZDdmMzliYmFhZTQyMzBh
OGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTcxLDYgKzE1NzEsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExvY2FsaXplQXhpc05hbWVzLmgKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMzOWZmOGYyMjRlZjZhODZjZmI5Li5lYjc2
YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRlMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQwZjg5Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2
NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIyZWZkYzJjZWRkNTNmYzNlYjUzZDYxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZp
bHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZB
QzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyog
RGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4Rjc1MDBEODJEMkQgLyogU291cmNlSW1h
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdF
NzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyRkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAv
KiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDcz
RjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi87IH07
CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFQzcwRDBDRTcyRDAw
N0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC0xMTQyOCw2ICsxMTQyOSw4IEBA
CiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1h
dG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkZC
MjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1h
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRkIyMzk2MjI0QjA3QjkwMDdF
NUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBB
OTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1c2guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnJ1c2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lbGluZVJlY29y
ZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTcxMDhGNDcz
RjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxNTIsNiArMjkxNTUsOCBA
QAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCAqLywKIAkJ
CQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oICovLAogCQkJCTFDNERC
MDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oICovLAorCQkJ
CTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5jcHAgKi8sCisJCQkJNzJG
RDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggKi8sCiAJCQkJMUREMTI3QUMy
NTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICovLAogCQkJCUNENjQx
RUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RD
OEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCAqLywK
QEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEw
M0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1c2guaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VC
dWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYxMzUwOTI0QzlGQ0EzMDA0MzJFMUUg
LyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNjYjc4ODExN2RlNjkzOGEwMi4uNmFlNDU0
ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBkb3UKIAogICAg
ICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICogbWFza1JlY3QuaGVpZ2h0KCkpOwogCi0g
ICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgICAgICAgICAgZmxvYXQgc2hh
ZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgICAgICAgICBj
LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKKyAg
ICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRyb3BTaGFkb3coKTsKIAogICAgICAgICAg
ICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwotICAgICAgICAgICAgc2hhZG93UmVj
dC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0gICAgICAgICAgICBzaGFkb3dSZWN0Lm1v
dmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKGRy
b3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUo
ZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAgICAgICBjLT5jbGlwKHNoYWRvd1JlY3Qp
OwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0gb2Zmc2V0OworICAgICAgICAgICAgZHJv
cFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAgICAgICAgICBjLT5zZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBTaGFkb3dSYWRpdXNNb2RlOjpM
ZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93KGRyb3BTaGFkb3cub2Zmc2V0LCBkcm9w
U2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29sb3IsIFNoYWRvd1JhZGl1c01vZGU6Okxl
Z2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQogICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5
ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZhNGNiMmEyLi4xYmQ2NzU5ZTgwOWYzZTdl
ODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpzdXBw
b3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJldHVybiBtX3ByaW1hcnlDb250ZXh0LnN1
cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0ZVN0YXRlKCkgaW5zdGVhZCBvZiBkaWRV
cGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAgIC8vIGFyZSBhbHNvIGFwcGxpZWQgdG8g
ZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3RhdGUsIHNvIHRoYXQgY29kZQogICAgIC8v
IGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0aGF0IHJlYWRzIGZyb20gdGhlIHN0YXRl
IGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3ByaW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRl
KHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRl
LCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAg
bV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBs
eUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0MmI3Mzc3NzI3YzExYTczYjZkODIxOGUx
NTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQyZTM2N2RkMzdmMDIwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
c3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJUk8p
CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNhdGVkUHJpdmF0ZUNv
bnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMjVhM2QzZmU4NzczMzFkZGEzOTU3
ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgyMmYxMTNkYmJiMDYxNDFlMzBkZjhhMjI1
NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0ds
eXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiwgRm9udFNtb290aGluZ01vZGUpOwog
ICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIAotICAgIHZvaWQgdXBkYXRlRmls
bENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxs
cHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQq
ID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGxCcnVz
aChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQgdXBkYXRlU3Ryb2tlQnJ1c2goY29uc3Qg
U291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsKICAgICAgICAgVW5z
cGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQgdXBk
YXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVy
LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAg
ICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiwgU2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICB2b2lk
IHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTExMSwyNyArMTExLDEzIEBAIHByaXZhdGU6
CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxUZXh0TWF0cml4OwogCiAgICAgc3RydWN0
IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsKLSAgICAgICAgICAgIENvbG9yIGNvbG9y
OwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAgICAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgICAgICAgICAgUmVmUHRy
PFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0gICAgICAgIFN0eWxlIGZpbGxTdHlsZTsK
LSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAgICAgICAgU291cmNlQnJ1c2ggZmlsbEJy
dXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaDsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hhZG93U3RhdGUgewotICAgICAgICAgICAg
RmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZsb2F0IGJsdXIgeyAwIH07Ci0gICAgICAg
ICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJvb2wgaWdub3JlVHJhbnNmb3JtcyB7IGZh
bHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRvd1N0YXRlIHNoYWRvdzsKKyAgICAgICAg
RHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBib29sIGlnbm9yZVRyYW5zZm9ybXMgeyBm
YWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmlnaW5hbFN0YXRlOwotICAgIFN0YXRlIG1f
Y3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXgg
M2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJjOGEzZTg2My4uMDMxMDMwMGFhNGU4OTQw
ZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00Myw2ICs0MywxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCisg
ICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQorCiBHcmFwaGljc0NvbnRleHQ6On5HcmFw
aGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0YWNrLmlzRW1wdHkoKSk7CkBAIC03MCwx
MCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgICAgICBtX3N0
YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRlKEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0Nv
bnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5n
ZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwgZmxhZ3MpOworICAg
IG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlz
ZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlwc2VDb2xv
ciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAtOTMsODQgKzk4LDYgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9zdGF0ZS5zdHJv
a2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwot
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwg
ZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNNb2RlIHJhZGl1c01v
ZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgbV9zdGF0ZS5z
aGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29sb3I7Ci0gICAg
bV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVzTW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKLXsKLSAgICBtX3N0YXRlLnNoYWRvd09m
ZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7Ci0gICAgbV9z
dGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2Rl
ID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9y
JiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBtX3N0YXRlLnNoYWRvd09mZnNldDsKLSAg
ICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAgIGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dD
b2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9zdGF0ZS5maWxs
Q29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7Ci0gICAg
bV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17
Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRl
cm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQ
YXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3Ig
PSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUu
ZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGll
bnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkK
LXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fc3RhdGUu
c3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCi17Ci0gICAg
bV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZN
b3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtID0g
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51
bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPwot
fQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkK
IHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3VudDsKQEAgLTQ5MSwxMyArNDE4LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0g
ICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBt
X3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKLX0KLQog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhGbG9hdFBv
aW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBw
ZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGluIDAuNSB0byB0aGUg
YXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0IGFyaXRobWV0aWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMzlm
MzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZkM2ZlZi4uZmIyMzdhNTBlOWIwNTk0MmM5
OTI5NWM2MTY3MzhiY2U0ZWU1MjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY0LDkgKzY0LDggQEAgc3RydWN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4
dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmID0geyB9KTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtODAs
ODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRleHQgU3RhdGUKIAotICAgIHZvaWQg
c2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnN0cm9rZVRoaWNr
bmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0KLSAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsgfQotCi0gICAgdm9p
ZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRlLnN0cm9rZVN0eWxl
ID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBjb25zdCBDb2xvciYgc3Ryb2tl
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwotICAgIFBh
dHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVBhdHRl
cm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBmaWxsR3JhZGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgpOyB9CisgICAgUGF0
dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5wYXR0
ZXJuKCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZpbGxHcmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJy
dXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0
ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZv
aWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBtX3N0YXRlLnNldEZp
bGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQor
ICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxH
cmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgPSB7IH0pOwotICAgIEdy
YWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUp
IHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9CiAgICAgV2luZFJ1bGUgZmls
bFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9CisgICAgdm9pZCBzZXRG
aWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxl
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKworICAgIGNvbnN0IENvbG9yJiBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKTsgfQorICAg
IEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
QnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgdm9p
ZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRT
dHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xv
cihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VQ
YXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJu
KFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQg
c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7IG1fc3RhdGUuc2V0U3Ryb2tlR3JhZGll
bnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENv
bG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVz
cyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNz
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJu
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQorICAgIFN0cm9r
ZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsg
fQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5z
ZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisKKyAgICBj
b25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcm9w
U2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGRy
b3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBzaGFkb3dCbHVyKCkgY29uc3QgeyByZXR1
cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAgICBjb25zdCBDb2xvciYgc2hhZG93Q29s
b3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuY29sb3I7IH0KKyAgICB2b2lkIHNldERy
b3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBtX3N0YXRlLnNldERyb3BT
aGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXJSYWRpdXMsIGNvbnN0
IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93
UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hhZG93KHsgb2Zmc2V0LCBibHVyUmFkaXVz
LCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQorICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7
IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9vbCBoYXNWaXNpYmxlU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBoYXNCbHVy
cmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1cnJlZCgpOyB9Cisg
ICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaGFzT3V0c2V0
cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uOyB9
CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUo
KS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBj
b21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9zaXRlTW9kZShjb21wb3NpdGVNb2RlKTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVu
ZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2RlKHsgb3BlcmF0aW9uLCBibGVuZE1vZGUg
fSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7Ci0gICAgR3JhZGllbnQqIGZp
bGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOyB9
CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9CisgICAg
dm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRlLnNldEFscGhhKGFscGhhKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5n
ZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIFRleHREcmF3aW5nTW9kZUZs
YWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudGV4dERyYXdpbmdN
b2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3Mg
dGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5n
TW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgCisgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0
U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50
aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
QW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAg
ICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRl
LnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290
aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSBzaG91bGRTbW9vdGhGb250czsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290
aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxkU21vb3Ro
Rm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCiAg
ICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVjYXVzZSBp
dCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAgIC8vIElu
IHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0
eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBtX3N0YXRlLnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
OyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9
IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsgfQotICAgIEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxw
aGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0KLSAgICBCbGVuZE1v
ZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7
IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBk
cmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWlu
YW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsgfQotCi0gICAgdm9pZCBz
ZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkgeyBtX3N0YXRlLnRl
eHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOyB9Ci0gICAgVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgU2hhZG93UmFkaXVzTW9kZSA9IFNoYWRv
d1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBj
bGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6
ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAgIGJvb2wgaGFzVmlzaWJsZVNoYWRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWaXNpYmxlKCk7IH0KLSAgICBi
b29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9z
dGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsg
fQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykg
eyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0g
ICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1f
c3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdl
KTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29s
IHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVhcmFuY2UodXNlRGFy
a0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0
ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3RE
cmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAg
IHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9w
dCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4
dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdhdGUgY2hhbmdlcwogICAgIC8vIHRvIHRo
ZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkzNTQwODY2NGMyNzZmY2UzZDU5OWU2MTRm
OWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1NzdhNTcwN2I5N2Y2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgogCi0jaW5jbHVkZSAiR3JhZGllbnQuaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNk
ZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoZmxhZywgcHJvcGVydHkpIFwKLSAgICBp
ZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYg
KG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCi0gICAgICAgIGNoYW5nZUZs
YWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0
YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkK
LSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0gICAgLCBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQotICAg
ICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzKQorICAgIDogY2hh
bmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7
Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250
ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1
bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9y
PShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorYm9vbCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSBjb25zdAogewotICAg
IGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNo
YW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250
YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJv
a2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsK
LSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgfQotCi0g
ICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFu
Z2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0Fu
eShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAg
ICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdyYWRpZW50OwotICAgICAgICBmaWxsUGF0
dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBzaGFkb3dP
ZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5z
aGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOwotICAg
ICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0K
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNr
bmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4
dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4
dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ry
b2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHByaW1pdGl2ZUNoYW5nZUZsYWdzIHsgQ2hh
bmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJy
dXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFs
cGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0ZS5hbHBoYTsKKyAgICBpZiAoY2hhbmdl
RmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZlQ2hhbmdlRmxhZ3MpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNvbXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUu
Y29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5kTW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsK
LSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gp
ICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlh
bGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlhbGlhcyA9IHN0YXRlLnNob3VsZEFudGlh
bGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYm
ICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250
c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gc3RhdGUuc2hvdWxkU21vb3Ro
Rm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLQotICAg
IGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHN0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0gICAgICAgIGRyYXdM
dW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlD
aGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAordm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3
aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5nZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBh
dXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCFzdGF0
ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8IHRoaXMtPipwcm9wZXJ0eSA9PSBzdGF0
ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMtPipwcm9wZXJ0
eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hhbmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxh
c3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+
KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gs
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VUaGlja25lc3Ms
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkRyb3BTaGFkb3cs
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93KTsK
KworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpp
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlRleHRE
cmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJh
d2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKTsKKyAg
ICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3
THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1
bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5n
ZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7
CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiB9CiAK
LUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlR3Jh
ZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9Q
RVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQYXR0ZXJuKTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFuZ2UsIGZpbGxHcmFkaWVudCk7Ci0gICAg
Q0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBhdHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJu
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0
ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0
ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRl
LnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ry
b2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25lc3MpOwotICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5nZSwgdGV4dERyYXdpbmdNb2RlKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29s
b3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxDb2xvckNoYW5nZSwgZmls
bENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VTdHlsZUNoYW5n
ZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxSdWxl
Q2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoQWxwaGFD
aGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAgICAgICAmJiAobV9zdGF0ZS5jb21wb3Np
dGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciB8fCBtX3N0YXRlLmJsZW5kTW9k
ZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKLSAgICAgICAgY2hhbmdl
RmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpOwotICAgIH0K
LQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZEFudGlhbGlhc0NoYW5nZSwg
c2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaG91bGRT
bW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9udHMpOwotICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwgc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3
THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CisjaWYgVVNF
KENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKSBzZXRzIHRoZSBD
RyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9IDE7CiAjZW5kaWYKLQotICAgIHJldHVy
biBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNj
dW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRl
Q2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICBt
X3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3MpOwotCi0gICAgYXV0byBzdHJva2VGbGFn
cyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHN0cm9rZUZs
YWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoc3Ryb2tlRmxhZ3MpOwotCi0gICAg
YXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShm
aWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShmaWxsRmxhZ3MpOworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNoYW5nZU5hbWVzW10gPSB7CisgICAgICAg
ICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVsZSIsCisKKyAgICAgICAgInN0cm9rZS1i
cnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNzIiwKKyAgICAgICAgInN0cm9rZS1zdHls
ZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwKKyAgICAgICAgImRyb3Atc2hhZG93IiwK
KworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1hZ2UtaW50ZXJwb2xhdGlvbi1xdWFsaXR5
IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwKKworICAgICAgICAic2hvdWxkLWFudGlh
bGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZvbnRzIiwKKyAgICAgICAgInNob3VsZC1z
dWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAgICJzaGFkb3dzLWlnbm9yZS10cmFuc2Zv
cm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1hc2siCisjaWYgSEFWRShPU19EQVJLX01P
REVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmstYXBwZWFyYW5jZSIKKyNlbmRpZgorICAg
IH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoY29tcG9zaXRlT3Bl
cmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJh
dG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hh
bmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYgbWFzaykpOwogCi0gICAgbV9jaGFuZ2VG
bGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0ZUNoYW5nZU5hbWVzW2luZGV4XTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmR1bXAo
VGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVudCwgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBhdHRlcm4pOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxH
cmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCptX3N0YXRl
LmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBh
dHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCptX3N0YXRlLmZp
bGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIGNvbnRl
eHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3cobV9zdGF0ZS5z
aGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9z
dGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBj
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERy
YXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUobV9z
dGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNvbG9yKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0YXRlLmZpbGxDb2xvcik7CisgICAgYXV0
byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipw
cm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7CisgICAgICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KG5hbWUsIHRoaXMt
Pipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBj
b250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOworICAgIGR1bXAoQ2hhbmdlOjpG
aWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxs
QnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxCcnVz
aCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBjb250ZXh0
LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgICAg
ICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlN0cm9rZUJydXNoKSk7CisgICAg
ZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENo
YW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVN0eWxlLCAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlLCAgICAg
ICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlU3R5bGUpKTsKIAotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNo
YW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5j
b21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1vZGUpOworICAgIGR1bXAoQ2hhbmdlOjpD
b21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21w
b3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkNvbXBvc2l0
ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICBzdGF0
ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkK
LSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMobV9zdGF0ZS5zaG91bGRBbnRpYWxp
YXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRT
bW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7Ci0KLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5j
ZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKG1fc3Rh
dGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkobV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEsICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpBbHBoYSkpOworICAgIGR1bXAoQ2hh
bmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBkdW1wKENoYW5nZTo6VGV4dERyYXdpbmdN
b2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2Rl
LCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUpKTsK
IAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgIHN0YXRlQ2hhbmdl
TmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRT
bW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9v
dGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZFNtb290aEZv
bnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgc3RhdGVD
aGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSk7CisgICAgZHVt
cChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5n
ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJhd0x1bWlu
YW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5j
ZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFz
aykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdl
KSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBwZWFyYW5jZShtX3N0YXRlLnVzZURhcmtB
cHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICBz
dGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwogI2VuZGlmCisgICAg
cmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBjaGFuZ2UpCiB7Ci0gICAgdHMuZHVtcFBy
b3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZsYWdzLnRvUmF3KCkpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtZ3JhZGllbnQiLCBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVy
bi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJm
aWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZp
bGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0JsdXIpOwotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNoYWRvd09mZnNldCk7Ci0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7Ci0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUu
c2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOwotICAgIH0KLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS10aGlj
a25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIsIG1fc3RhdGUudGV4
dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JD
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtY29sb3IiLCBtX3N0YXRlLmZp
bGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBtX3N0YXRlLmZpbGxSdWxlKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNo
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0YXRlLmFscGhhKTsK
LQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
b21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBv
c2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOwotCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5n
ZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRN
b2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNo
b3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7Ci0KLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9u
dHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zbW9vdGgtZm9udHMi
LCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHND
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJwaXhlbC1xdWFudGl6
ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy1p
Z25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJkcmF3LWx1bWlu
YW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0KLSNpZiBIQVZFKE9TX0RB
UktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2Up
OwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VOYW1lKGNoYW5nZSk7CisgICAgcmV0dXJu
IHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0gICAgcmV0dXJuIHRzOworICAgIHJldHVy
biBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
LmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1OTU5NTk2Ny4uYTkyMTI3
OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCkBAIC0y
NSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUJydXNoLmgiCiAjaW5jbHVk
ZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgR3JhZGllbnQ7Ci1jbGFz
cyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewotICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBo
aWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0U3RhdGUm
Jik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90IHsKLSAgICAgICAgU3Ryb2tlR3JhZGll
bnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAotICAgICAgICBTdHJva2VQYXR0
ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCi0gICAgICAgIEZpbGxHcmFk
aWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKLSAgICAgICAgRmlsbFBh
dHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAotICAgICAgICBTdHJv
a2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQsCi0gICAgICAgIFN0
cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNSwKLSAgICAgICAg
U3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA2LAotICAgICAg
ICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDcsCi0gICAg
ICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKLSAg
ICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA5LAot
ICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSAgICAgICAgICAgPSAxIDw8IDEw
LAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgICAgICAgICAgICAgICAgPSAx
IDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01vZGVDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRpYWxpYXNDaGFuZ2UgICAgICAgICAgICAg
ICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRTbW9vdGhGb250c0NoYW5nZSAgICAgICAg
ICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHND
aGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBEcmF3THVtaW5hbmNlTWFza0NoYW5nZSAg
ICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAgICBJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAgIGVudW0gY2xhc3MgQ2hhbmdlIDogdWlu
dDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisg
ICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKKworICAgICAgICBT
dHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgICAgIFN0cm9rZVRoaWNr
bmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgU3Ryb2tlU3R5bGUgICAgICAgICAg
ICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBvc2l0ZU1vZGUgICAgICAgICAgICAgICA9
IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAgICAgICAgICAgICAgID0gMSA8PCA2LAor
CisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNywKKyAgICAgICAg
VGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAgICBJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAgICAgICAgU2hvdWxkQW50aWFsaWFzICAg
ICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hvdWxkU21vb3RoRm9udHMgICAgICAgICAg
ID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gMSA8PCAx
MiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgICAgID0gMSA8PCAxMywKKyAgICAg
ICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0gMSA8PCAxNCwKICNpZiBIQVZFKE9TX0RB
UktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAg
ICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZSAgICAgICAgICAg
PSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0g
T3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hhbmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hh
bmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IENo
YW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdlcygpIHsgY2hhbmdl
RmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNo
JiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2b2lkIHNldEZpbGxH
cmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
c3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQp
LCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0K
KyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgZmlsbEJy
dXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6
OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAg
IHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgZmlsbFJ1bGUpOyB9
CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OwotICAgIFJlZlB0cjxQYXR0
ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2goY29uc3QgU291cmNl
QnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1
c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBzdHJva2VCcnVzaC5zZXRHcmFkaWVu
dChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hh
bmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRl
cm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikp
OyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKworICAgIHZvaWQgc2V0
U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25l
c3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0
eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlU3R5bGUsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0cm9rZVN0eWxlKTsgfQorCisgICAgdm9p
ZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9z
aXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2b2lkIHNldERyb3BTaGFkb3coY29uc3Qg
RHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyb3BTaGFkb3cs
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgZHJvcFNoYWRvdyk7IH0KKworICAg
IHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9CisgICAgdm9pZCBzZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUo
VGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9k
ZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9v
bCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMs
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzLCBzaG91bGRBbnRpYWxpYXMp
OyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRz
KSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3VsZFNtb290aEZvbnRzKTsgfQorICAgIHZv
aWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorICAgIHZvaWQgc2V0U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7IH0KKyAgICB2
b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpk
cmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9CisjaWYgSEFWRShPU19EQVJL
X01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFy
a0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSwgdXNlRGFya0FwcGVhcmFuY2Up
OyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IGZpbGxHcmFkaWVudDsKLSAg
ICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47CisgICAgYm9vbCBoYXNPbmx5UHJpbWl0aXZl
Q2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxh
c3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGlkQmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBXVEY6OlRl
eHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAgICBDb2xvciBzdHJv
a2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIGZpbGxDb2xvciB7IENvbG9yOjpi
bGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gZGVjb2RlKERl
Y29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNm
b3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAg
ICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAgIFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7
IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblpl
cm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaCB7IENvbG9yOjpibGFjayB9
OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKLSAgICBmbG9hdCBzaGFkb3dCbHVy
IHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9OwotCiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tl
U3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6
Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7
IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfTsKLSAgICBCbGVuZE1v
ZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICAKKyAgICBDb21wb3NpdGVN
b2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgQmxlbmRN
b2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRyb3BTaGFkb3c7CisgICAgCisgICAgZmxv
YXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93
UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9
OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5n
TW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwotICAgIGJvb2wg
c2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDogMTsKLSAgICBib29s
IGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29sIHNob3VsZEFudGlhbGlhcyB7IHRydWUg
fTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9
OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CiAjZW5kaWYK
LX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBz
ZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVy
dHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMtPipwcm9wZXJ0eSA9
PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+KnByb3BlcnR5ID0g
dmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChjaGFuZ2UpOworICAgIH0KIAotc3RydWN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCi0gICAgICAgICwgbV9j
aGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0
UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5
LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAodGhpcy0+KnByb3BlcnR5ID09IHZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBXVEZNb3Zl
KHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAgICAgfQorfTsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBjb25zdDsKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBlbmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0
eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwotICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBkdW1wKFdURjo6
VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIgPDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OworICAgIGVuY29kZShDaGFuZ2U6OkZp
bGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmls
bEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKworICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAg
ICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKworICAgIGVuY29kZShDaGFuZ2U6OkNvbXBv
c2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9z
aXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKworICAgIGVuY29kZShD
aGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgZW5jb2RlKENo
YW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFNtb290aEZv
bnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9u
dHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAg
ICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBlbmNvZGUoQ2hh
bmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworI2VuZGlmCit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0
byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdl
LCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCFz
dGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVf
cmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4oKS4q
cHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm9wZXJ0eVR5cGU+IHZh
bHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN0YXRlLipwcm9wZXJ0eSA9ICp2YWx1
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
Jik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFncz4gY2hhbmdlRmxhZ3M7CisgICAgZGVj
b2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNoYW5nZUZsYWdzKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGUoKmNoYW5n
ZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxCcnVzaCwgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZp
bGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVs
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0
ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdl
OjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29t
cG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRT
bW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3Ro
Rm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
Ojp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5k
aWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSk7CitUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCArMjU5LDI3IEBAIG5hbWVzcGFjZSBXVEYg
ewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5D
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZp
bGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hh
bmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxs
Q29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlLAotICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYUNoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0
aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlLAotICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250c0No
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSwKLSAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlLAorCisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3csCisKKyAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGEsCisgICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwKKyAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0g
ICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VXNlRGFya0Fw
cGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlmCiAgICAgPjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCmluZGV4IDE1
ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0YjdhOTNhYjQuLjEyZTRmZmJmMDg0NzM5Mzkz
OGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBAIC0xMzYsNiArMTM2LDQ0IEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiAg
ICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxlbmRNb2RlKTsKIH0KIAorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2Rl
KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlvbiIsIGNvbXBvc2l0
ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBjb21w
b3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KQor
eworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9mZnNldCIsIGRyb3BTaGFkb3cub2Zmc2V0
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1ibHVyIiwgZHJvcFNoYWRvdy5ibHVyUmFk
aXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1jb2xvciIsIGRyb3BTaGFkb3cuY29s
b3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyIsIGRy
b3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgIHJl
dHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpCit7CisgICAgc3dpdGNoIChp
bnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRl
ZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZToKKyAgICAgICAgdHMgPDwg
IkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xh
dGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwgIkxPVyI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1lZGl1bToKKyAgICAgICAgdHMgPDwgIk1F
RElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Okhp
Z2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdp
bmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxlKSB7CkBAIC0xODIsNCArMjIwLDQyIEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIExpbmVKb2luIGpvaW5TdHls
ZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQoreworICAgIHN3aXRjaCAoc3Ryb2tlU3R5
bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0cm9rZToKKyAgICAgICAgdHMgPDwgIk5P
LVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5bGU6OlNvbGlkU3Ry
b2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiRE9UVEVELVNU
Uk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9r
ZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0UiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6CisgICAgICAgIHRzIDw8ICJET1VCTEUtU1RS
T0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6V2F2eVN0cm9rZToK
KyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
VGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkKK3sKKyAgICBzd2l0Y2ggKHRleHREcmF3
aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdNb2RlOjpGaWxsOgorICAgICAgICB0cyA8
PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dERyYXdpbmdNb2RlOjpTdHJv
a2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKaW5kZXggZGVjNDM0NzAyY2Y3
NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcyOTc4MzFhMmJmMzQ2OGNhZWM4ZjUyMDBm
MDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiV2luZFJ1
bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgpA
QCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVuZE1vZGUgOiB1aW50OF90IHsKICAgICBQ
bHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0ZU1vZGUgeworICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOworCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24gJiYgYmxlbmRNb2RlID09IG90aGVyLmJs
ZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0ZU1vZGU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb3BlcmF0aW9uOworICAgIGVuY29kZXIg
PDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25h
bDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBvcGVyYXRpb247CisgICAg
ZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFvcGVyYXRpb24pCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2Rl
OworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAgIGlmICghYmxlbmRNb2RlKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqb3BlcmF0aW9uLCAqYmxl
bmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsKICAgICBl
bnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAgICAgVGV4dENoZWNraW5nRGljdGF0aW9u
UGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2ICsxNDksNjcgQEAgc3RkOjpvcHRpb25h
bDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmRlY29k
ZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUsICpzaG91bGRVc2VEYXJrQXBwZWFyYW5j
ZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2Fu
dmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1l
bnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsK
KyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKworc3RydWN0IERyb3BTaGFkb3cgeworICAg
IEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1clJhZGl1cyB7IDAgfTsKKyAgICBDb2xv
ciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNN
b2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGNv
bG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0JsdXJyZWQoKSBjb25zdCB7IHJldHVybiBp
c1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAgYm9vbCBoYXNPdXRzZXRzKCkgY29uc3Qg
eyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJsZSgpICYmICFvZmZzZXQuaXNaZXJvKCkp
OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJvcFNoYWRvdyYgYikKK3sKKyAgICByZXR1
cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVyUmFkaXVzID09IGIuYmx1clJhZGl1cyAm
JiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNNb2RlID09IGIucmFkaXVzTW9kZTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJvcFNoYWRvdzo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBvZmZzZXQ7CisgICAgZW5jb2Rl
ciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwgY29sb3I7CisgICAgZW5jb2RlciA8PCBy
YWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxE
cm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0OworICAgIGRlY29kZXIgPj4gb2Zmc2V0Owor
ICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAgICBkZWNvZGVyID4+IGJsdXJSYWRpdXM7
CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAg
ICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpv
cHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNNb2RlOworICAgIGRlY29kZXIgPj4gcmFk
aXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpibHVyUmFkaXVzLCAqY29sb3IsICpyYWRp
dXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFkaWVudFNwcmVhZE1ldGhvZCA6IHVpbnQ4
X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAtMTU4LDEzICsyNTcsNiBAQCBlbnVtIGNs
YXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3QgewogfTsKIHVzaW5nIFRleHREcmF3aW5nTW9k
ZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9kZT47CiAKLS8vIExlZ2FjeSBzaGFkb3cg
Ymx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93Lgot
Ly8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCi1lbnVtIGNsYXNz
IFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBEZWZhdWx0LAotICAgIExlZ2FjeQotfTsK
LQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhhYmV0aWNUZXh0QmFzZWxpbmUsCiAgICAg
VG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwxNCBAQCBib29sIHBhcnNlQ29tcG9zaXRl
QW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRv
ciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9w
ZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29tcG9zaXRlTW9kZSk7CitXRUJDT1JFX0VY
UE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3Qg
RHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25RdWFsaXR5KTsKIFdFQkNPUkVfRVhQT1JU
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lQ2FwKTsK
IFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHREcmF3aW5nTW9kZSk7
CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApp
bmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3YzlhMTFiNDIyNDY4ODVlLi42YzMzMzM5NjI3
MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC01NSw3ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNv
ZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0g
UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNv
ZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludEludmFsaWRhdGlvblJl
YXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsgfQogCi0gICAgdm9pZCBkaWRVcGRhdGVT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBo
aWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNpZiBVU0UoQ0cpCiAgICAgdm9pZCBzZXRJ
c0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggYmIxMzhiNTI5N2E1MjFmYmY3
ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFhYmZjZTM4MDgxODNhM2IyMzFmYmNlMGZm
YjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29u
c3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAg
ICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQogCi1TaGFkb3dCbHVyOjpTaGFkb3dCbHVy
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG1fY29sb3Ioc3RhdGUu
c2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMoc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUu
c2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNldCkKLSAgICAsIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCitT
aGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3csIGJvb2wg
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBtX2NvbG9yKGRyb3BTaGFkb3cuY29sb3Ip
CisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBkcm9wU2hhZG93LmJs
dXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hhZG93Lm9mZnNldCkKKyAgICAsIG1fc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7CiAjaWYgVVNF
KENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3JyZWN0bHkgcmVuZGVycyBzaGFkb3dzIHdp
dGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0vODEwMzQ0Mj4pLAogICAgIC8vIGJ1dCB3
ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVoYXZpb3IgZm9yIGNhbnZhcyBhbmQgLXdl
YmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID09IFNoYWRv
d1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gcmFkaXVz
VG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7CisgICAgaWYgKGRyb3BTaGFkb3cucmFk
aXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpIHsKKyAgICAgICAgZmxvYXQgc2hh
ZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRyb3BTaGFkb3cuYmx1clJhZGl1cyk7CiAg
ICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKTsK
ICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhLi44
ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2MTc3MTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOworc3RydWN0IERyb3BTaGFk
b3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgU2hhZG93Qmx1ciB7CkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIoKTsKICAgICBTaGFkb3dCbHVyKGNvbnN0
IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3Im
LCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwotICAgIFNoYWRvd0JsdXIo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0IERyb3BT
aGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwogCiAgICAgdm9p
ZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiAsIGNv
bnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUwNzM1MjQzOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcApAQCAt
MCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCcnVzaC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpTb3VyY2VCcnVzaChjb25zdCBDb2xvciYg
Y29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1c2gpCisgICAgOiBtX2NvbG9yKGNvbG9y
KQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkKK3sKK30KKworY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0Cit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRyYW5zZm9ybT4gaWRlbnRpdHk7CisgICAg
aWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRlbnRpdHkuZ2V0KCk7CisKKyAgICBpZiAo
YXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVzaDo6TG9naWNhbEdyYWRpZW50PigmbV9i
cnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3JhZGllbnQtPnNwYWNlVHJhbnNmb3JtOwor
CisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQorCitHcmFkaWVudCogU291cmNlQnJ1c2g6
OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dp
Y2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisgICAgICAgIHJldHVybiBncmFkaWVudC0+
Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1BhdHRlcm4qIFNvdXJj
ZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnJ1c2gpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0ZXJuID0gc3RkOjpnZXRfaWY8UmVmPFBh
dHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gcGF0dGVybi0+cHRyKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgU291cmNlQnJ1c2g6OnNldEdyYWRpZW50
KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRy
YW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVzaDo6TG9naWNhbEdyYWRpZW50IHsgV1RG
TW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0gfTsKK30KKwordm9pZCBTb3VyY2VCcnVz
aDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQoreworICAgIG1fYnJ1c2ggPSB7
IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOworCisgICAgaWYgKGF1dG8gZ3JhZGllbnQg
PSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImdyYWRpZW50Iiwg
Z3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVybiA9IGJydXNoLnBhdHRlcm4oKSkKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwgcGF0dGVybik7CisKKyAgICByZXR1cm4g
dHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YjlmYWU1NDk0MzQ5ZGI1
NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCkBAIC0wLDAgKzEsMTgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIlBh
dHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3VyY2VCcnVzaCB7Citw
dWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAgICAgc3RydWN0IExvZ2ljYWxHcmFkaWVu
dCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdyYWRpZW50OworICAgICAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxMb2dpY2FsR3Jh
ZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIH07CisKKyAgICAgICAgc3RkOjp2YXJp
YW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+PiBicnVzaDsKKworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJydXNo
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBTb3VyY2VCcnVzaCgpID0gZGVmYXVs
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVzaChjb25zdCBDb2xvciYsIHN0ZDo6b3B0
aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOworCisgICAgY29uc3QgQ29sb3ImIGNvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29s
b3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBtX2JydXNoOyB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQ
YXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFk
aWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEdyYWRpZW50KFJlZjxH
cmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSk7
CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKKworICAgIGJvb2wgaXNQcmlt
aXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAmJiBtX2NvbG9yLnRyeUdldEFzU1JHQkFC
eXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgQ29s
b3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+IG1f
YnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUJydXNoOjpC
cnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5ncmFkaWVudC5wdHIoKSA9PSBiLmdyYWRp
ZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0gYi5zcGFjZVRyYW5zZm9ybTsKK30KKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaDo6QnJ1c2gmIGEsIGNvbnN0
IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhLmJy
dXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRp
ZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiR3JhZGllbnQgPSBzdGQ6
OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4oJmIuYnJ1c2gpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQgPT0gKmJHcmFkaWVudDsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8UGF0
dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYlBhdHRlcm4gPSBzdGQ6
OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
YVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1c2gmIGIpCit7CisgICAgcmV0dXJuIGEu
Y29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgpID09IGIuYnJ1c2goKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2Fs
R3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8PCBzcGFjZVRyYW5zZm9ybTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJy
dXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGll
bnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdyYWRpZW50KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBz
cGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNwYWNlVHJhbnNmb3JtOworICAgIGlmICgh
c3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNlVHJhbnNmb3JtIH0gfTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJydXNoOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXVEY6OnN3aXRjaE9uKGJydXNoLAorICAg
ICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChj
b25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZmFs
c2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoOjpCcnVzaD4gU291cmNl
QnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29kZXIgPj4gaGFzR3JhZGllbnQ7CisgICAg
aWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBncmFkaWVudCA9IExvZ2ljYWxHcmFkaWVu
dDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAoIWdyYWRpZW50KQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpncmFkaWVu
dCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNv
ZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9IH07Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7CisgICAgZW5jb2RlciA8PCBtX2JydXNoOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VCcnVzaD4g
U291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4gY29sb3I7CisgICAgaWYgKCFjb2xvcikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29kZXIgPj4gYnJ1c2g7CisgICAgaWYgKCFi
cnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBTb3VyY2VC
cnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9CisKK1dURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTb3VyY2VCcnVzaCYpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMzI0NWM2MDA0MzE1NTJkNTEz
Yjc0ZWViYzA5ZjMxOGVlYzNkZDcyYS4uZjlmZWFiNGUyNmYyOTgzMzgxZGNkZGE0ZDU0YzUwYjc1
MzhlNzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTg1LDEzICsxODUsMTQgQEAgc3RhdGlj
IHZvaWQgc2V0Q0dCbGVuZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4
dENHKENHQ29udGV4dFJlZiBjZ0NvbnRleHQpCisgICAgOiBHcmFwaGljc0NvbnRleHQoeyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VUaGlja25lc3MgfSkKIHsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShjZ0NvbnRl
eHQpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91
ciBzdGF0ZS4KLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNo
YW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSB9KTsKKyAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKICAgICBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgPSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dDb250ZXh0R2V0SW50ZXJwb2xh
dGlvblF1YWxpdHkocGxhdGZvcm1Db250ZXh0KCkpKTsKIH0KIApAQCAtMzM4LDcgKzMzOSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0
aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6CiAjZW5kaWYKIAogICAgIGF1dG8gb2xkQ29tcG9zaXRl
T3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICBhdXRvIG9sZEJsZW5kTW9kZSA9
IGJsZW5kTW9kZU9wZXJhdGlvbigpOworICAgIGF1dG8gb2xkQmxlbmRNb2RlID0gYmxlbmRNb2Rl
KCk7CiAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRv
cigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8vIE1ha2UgdGhlIG9yaWdpbiBiZSBh
dCBhZGp1c3RlZERlc3RSZWN0LmxvY2F0aW9uKCkKQEAgLTU1NSwxMyArNTU2LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAog
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIHsKLSAgICBpZiAo
IW1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm4oKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gQWZmaW5lVHJhbnNmb3Jt
KGdldFVzZXJUb0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAgICBhdXRvIHBsYXRmb3JtUGF0dGVy
biA9IG1fc3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jh
c2VDVE0pOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gc3Ryb2tlUGF0dGVybigpLT5jcmVh
dGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRl
cm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTc0LDEzICs1NzUsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRD
Rzo6YXBwbHlGaWxsUGF0dGVybigpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLmZpbGxQYXR0ZXJuKQor
ICAgIGlmICghZmlsbFBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB1
c2VyVG9CYXNlQ1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VDVE0oY2dDb250ZXh0
KSk7CiAKLSAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0
dGVybiA9IGZpbGxQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RN
KTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTEs
MTEgKzU5MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKCkK
ICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjZ0NvbnRleHQsIHBsYXRmb3JtUGF0dGVybi5n
ZXQoKSwgJnBhdHRlcm5BbHBoYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVE
cmF3aW5nTW9kZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENHUGF0aERyYXdp
bmdNb2RlJiBtb2RlKQorc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQYXRoRHJhd2luZ01vZGUmIG1vZGUpCiB7
Ci0gICAgYm9vbCBzaG91bGRGaWxsID0gc3RhdGUuZmlsbFBhdHRlcm4gfHwgc3RhdGUuZmlsbENv
bG9yLmlzVmlzaWJsZSgpOwotICAgIGJvb2wgc2hvdWxkU3Ryb2tlID0gc3RhdGUuc3Ryb2tlUGF0
dGVybiB8fCAoc3RhdGUuc3Ryb2tlU3R5bGUgIT0gTm9TdHJva2UgJiYgc3RhdGUuc3Ryb2tlQ29s
b3IuaXNWaXNpYmxlKCkpOwotICAgIGJvb2wgdXNlRU9GaWxsID0gc3RhdGUuZmlsbFJ1bGUgPT0g
V2luZFJ1bGU6OkV2ZW5PZGQ7CisgICAgYm9vbCBzaG91bGRGaWxsID0gY29udGV4dC5maWxsUGF0
dGVybigpIHx8IGNvbnRleHQuZmlsbENvbG9yKCkuaXNWaXNpYmxlKCk7CisgICAgYm9vbCBzaG91
bGRTdHJva2UgPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSB8fCAoY29udGV4dC5zdHJva2VTdHls
ZSgpICE9IE5vU3Ryb2tlICYmIGNvbnRleHQuc3Ryb2tlQ29sb3IoKS5pc1Zpc2libGUoKSk7Cisg
ICAgYm9vbCB1c2VFT0ZpbGwgPSBjb250ZXh0LmZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5P
ZGQ7CiAKICAgICBpZiAoc2hvdWxkRmlsbCkgewogICAgICAgICBpZiAoc2hvdWxkU3Ryb2tlKSB7
CkBAIC02MjQsOSArNjI1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgoY29u
c3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUgPSBtX3N0YXRlOwogCi0gICAgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCB8fCBzdGF0ZS5z
dHJva2VHcmFkaWVudCkgeworICAgIGlmIChmaWxsR3JhZGllbnQoKSB8fCBzdHJva2VHcmFkaWVu
dCgpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55IG9wdGltaXplZCB3YXkgdG8gZmls
bCAmIHN0cm9rZSBhIHBhdGggdXNpbmcgZ3JhZGllbnRzCiAgICAgICAgIC8vIEZJWE1FOiBCZSBz
bWFydGVyIGFib3V0IHRoaXMuCiAgICAgICAgIGZpbGxQYXRoKHBhdGgpOwpAQCAtNjM0LDEzICs2
MzQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0
aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikK
KyAgICBpZiAoZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwotICAg
IGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAg
ICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAgICAgQ0dQYXRoRHJhd2luZ01vZGUgZHJhd2lu
Z01vZGU7Ci0gICAgaWYgKGNhbGN1bGF0ZURyYXdpbmdNb2RlKHN0YXRlLCBkcmF3aW5nTW9kZSkp
IHsKKyAgICBpZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUoKnRoaXMsIGRyYXdpbmdNb2RlKSkgewog
I2lmIEhBVkUoQ0dfQ09OVEVYVF9EUkFXX1BBVEhfRElSRUNUKQogICAgICAgICBDR0NvbnRleHRE
cmF3UGF0aERpcmVjdChjb250ZXh0LCBkcmF3aW5nTW9kZSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwg
bnVsbHB0cik7CiAjZWxzZQpAQCAtNjU4LDcgKzY1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7
CisgICAgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gdGhpcy0+ZmlsbEdyYWRpZW50KCkpIHsKICAg
ICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHBh
dGguZmFzdEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9
IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAtNjcwLDMzICs2NzAsMzMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAg
ICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRleHQsIC1yZWN0LngoKSwgLXJlY3Qu
eSgpKTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChsYXllckNvbnRleHQpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRo
KCkpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0
ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0obGF5ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKIAogICAg
ICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAg
ICAgICAgQ0dDb250ZXh0RU9DbGlwKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAg
ICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAg
IGZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgICAg
ICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGZp
bGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICBpZiAoZmlsbFJ1bGUo
KSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAo
Y29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xp
cChjb250ZXh0KTsKIAotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KCp0
aGlzKTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJu
KQorICAgIGlmIChmaWxsUGF0dGVybigpKQogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7CiAj
aWYgSEFWRShDR19DT05URVhUX0RSQVdfUEFUSF9ESVJFQ1QpCiAgICAgQ0dDb250ZXh0RHJhd1Bh
dGhEaXJlY3QoY29udGV4dCwgZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCA/IGtDR1Bh
dGhFT0ZpbGwgOiBrQ0dQYXRoRmlsbCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVsbHB0cik7CkBA
IC03MTcsNyArNzE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRl
eHQoKTsKIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8g
c3Ryb2tlR3JhZGllbnQgPSB0aGlzLT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmICho
YXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RCb3Vu
ZGluZ1JlY3QoKTsKICAgICAgICAgICAgIGZsb2F0IGxpbmVXaWR0aCA9IHN0cm9rZVRoaWNrbmVz
cygpOwpAQCAtNzQyLDggKzc0Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJD
b250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxh
Y2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRl
eHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5
ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAg
ICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAg
ICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJD
b250ZXh0KTsKIAogICAgICAgICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3Qu
eCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5k
ZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7CkBAIC03NTQsMTMgKzc1NCwxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBD
R0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0
Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAg
ICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAg
ICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZVBhdHRl
cm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJu
KCk7CiAKICNpZiBVU0UoQ0dfQ09OVEVYVF9TVFJPS0VfTElORV9TRUdNRU5UU19XSEVOX1NUUk9L
SU5HX1BBVEgpCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsK
KyAgICBpZiAoYXV0byBmaWxsR3JhZGllbnQgPSB0aGlzLT5maWxsR3JhZGllbnQoKSkgewogICAg
ICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgIGlm
IChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENU
TSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAtNzk4LDE4ICs3OTgsMTggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAg
ICAgQ0dDb250ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dD
b250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRD
VE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAg
ICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAg
ICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgZmlsbEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29u
dGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgcmVj
dCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAg
ICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0Nv
bnRleHRDb25jYXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Cisg
ICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYg
KGZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKIAogICAgIGJvb2wg
ZHJhd093blNoYWRvdyA9IGNhblVzZVNoYWRvd0JsdXIoKTsKQEAgLTgxOCw3ICs4MTgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRv
d1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAg
ICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsK
ICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVk
UmVjdChyZWN0KSk7CiAgICAgfQogCkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNl
dFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAK
LSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFk
b3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRS
b3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdAogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBD
R0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8s
IDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAg
ICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRo
aXMsIHJlY3QpOwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q0c6OmZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwg
Y29uc3QKICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0LnJh
ZGlpKCk7CiAgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgoKSA9
PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpID09
IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgp
ID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CiAgICAgYm9vbCBlcXVhbEhlaWdodHMg
PSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQo
KSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5oZWln
aHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCku
aGVpZ2h0KCkpOwotICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRpZW50
IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47CisgICAgYm9vbCBoYXNDdXN0b21GaWxsID0gZmlsbEdy
YWRpZW50KCkgfHwgZmlsbFBhdHRlcm4oKTsKICAgICBpZiAoIWhhc0N1c3RvbUZpbGwgJiYgZXF1
YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExlZnQoKS53aWR0aCgpICogMiA9
PSByLndpZHRoKCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICogMiA9PSByLmhlaWdodCgp
KQogICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByKTsKICAgICBl
bHNlIHsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsbwogICAgICAg
ICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRo
Q29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNo
YWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAg
ICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVkSG9s
ZVJlY3QpOwogICAgIH0KIApAQCAtOTg5LDYgKzk4OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNldEFscGhhKGNv
bnRleHQsIG9wYWNpdHkpOwogICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoY29u
dGV4dCwgMCk7CisgICAgCisgICAgbV9zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7
CiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0g
ZmFsc2U7CiB9CiAKQEAgLTEwMDIsMTcgKzEwMDQsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRD
Rzo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIHJlc3RvcmUoKTsKIH0KIAotc3RhdGljIHZv
aWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0KQorc3RhdGlj
IHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENHRmxvYXQmIHhPZmZzZXQsIENHRmxvYXQmIHlPZmZzZXQpCiB7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oV0lOKQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKICAgICBVTlVTRURfUEFSQU0oeE9mZnNldCk7CiAgICAgVU5VU0VEX1BBUkFNKHlPZmZzZXQp
OwogI2Vsc2UKLSAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChDR0NvbnRleHREcmF3
c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAg
ICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS81NTM5
Mzg4PiBieSBlbnN1cmluZyB0aGF0IHRoZSBvZmZzZXRzIHdpbGwgZ2V0IHRydW5jYXRlZApAQCAt
MTAzMCwxMCArMTAyOSw4IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3Vu
ZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi1z
dGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBj
b2xvcikKK3N0YXRpYyB2b2lkIHNldENHU2hhZG93KENHQ29udGV4dFJlZiBjb250ZXh0LCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBi
bHVyLCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7
Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250
ZXh0KCk7Ci0KICAgICBpZiAob2Zmc2V0LmlzWmVybygpICYmICFibHVyKSB7CiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA0NSw3ICsxMDQyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFk
b3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6
ZSYKICAgICBDR0Zsb2F0IHlPZmZzZXQgPSBvZmZzZXQuaGVpZ2h0KCk7CiAgICAgQ0dGbG9hdCBi
bHVyUmFkaXVzID0gYmx1cjsKIAotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKCkpIHsKKyAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7CiAg
ICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBnZXRVc2VyVG9CYXNlQ1RN
KGNvbnRleHQpOwogCiAgICAgICAgIENHRmxvYXQgQSA9IHVzZXJUb0Jhc2VDVE0uYSAqIHVzZXJU
b0Jhc2VDVE0uYSArIHVzZXJUb0Jhc2VDVE0uYiAqIHVzZXJUb0Jhc2VDVE0uYjsKQEAgLTEwNjYs
NyArMTA2Myw4IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgLy8gRXh0cmVtZSAiYmx1
ciIgdmFsdWVzIGNhbiBtYWtlIHRleHQgZHJhd2luZyBjcmFzaCBvciB0YWtlIGNyYXp5IGxvbmcg
dGltZXMsIHNvIGNsYW1wCiAgICAgYmx1clJhZGl1cyA9IHN0ZDo6bWluKGJsdXJSYWRpdXMsIG5h
cnJvd1ByZWNpc2lvblRvQ0dGbG9hdCgxMDAwLjApKTsKIAotICAgIGFwcGx5U2hhZG93T2Zmc2V0
V29ya2Fyb3VuZElmTmVlZGVkKGdyYXBoaWNzQ29udGV4dCwgeE9mZnNldCwgeU9mZnNldCk7Cisg
ICAgaWYgKHJlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAg
ICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnRleHQsIHhPZmZzZXQs
IHlPZmZzZXQpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgY29sb3IsIGFzIHRoaXMg
bWVhbnMgdGhhdCB0aGUgY29sb3Igd2FzIG5vdCBzZXQgZm9yIHRoZSBzaGFkb3cKICAgICAvLyBh
bmQgd2Ugc2hvdWxkIHRoZXJlZm9yZSBqdXN0IHVzZSB0aGUgZGVmYXVsdCBzaGFkb3cgY29sb3Iu
CkBAIC0xMDc2LDM5ICsxMDc0LDYxIEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgICAg
IENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQs
IHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
ZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiB7CisgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3ND
aGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgo
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICBmb3IgKGF1dG8gY2hhbmdlIDogc3Rh
dGUuY2hhbmdlcygpKSB7CisgICAgICAgIHN3aXRjaCAoY2hhbmdlKSB7CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoOgorICAgICAgICAgICAgc2V0
Q0dGaWxsQ29sb3IoY29udGV4dCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
dHJva2VUaGlja25lc3M6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4
dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
QnJ1c2g6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpLmdldCgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFN0cm9rZUNv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tlQ29sb3IpLmdl
dCgpKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3Np
dGVNb2RlOgorICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9z
aXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBz
dGF0ZS5maWxsQ29sb3IpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkRyb3BTaGFkb3c6CisgICAgICAgICAgICBzZXRDR1NoYWRvdyhjb250ZXh0LCByZW5kZXJp
bmdNb2RlKCksIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmJsdXJS
YWRpdXMsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldEFscGhh
KGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpBbHBoYToKKyAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQs
IHN0YXRlLmFscGhhKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgc2V0Q0dC
bGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9k
ZSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eToKKyAgICAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25R
dWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSkpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAg
ICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBjZ1RleHREcmF3aW5nTW9k
ZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRU
ZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdp
bmdNb2RlKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgQ0dD
b250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFs
aWFzOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0
YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2Up
KQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5z
aG91bGRTbW9vdGhGb250cyk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U2hvdWxkU21vb3RoRm9udHM6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRT
bW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7CisgICAgICAgICAg
ICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldElu
dGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpCi0gICAgICAgIHNldENHU2hhZG93KCp0
aGlzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFk
b3dDb2xvcik7CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OnNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCkBAIC0xMTI1LDcgKzExNDUs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgbGluZVdpZHRoKQogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAg
IGlmIChhdXRvIHN0cm9rZUdyYWRpZW50ID0gdGhpcy0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAg
ICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRvdWJsZUxp
bmVXaWR0aCA9IGxpbmVXaWR0aCAqIDI7CiAgICAgICAgICAgICBmbG9hdCBhZGp1c3RlZFdpZHRo
ID0gY2VpbGYocmVjdC53aWR0aCgpICsgZG91YmxlTGluZVdpZHRoKTsKQEAgLTExNDksOCArMTE2
OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGxh
eWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhT
dHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXll
ckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwg
bV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0Nv
bnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAK
ICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAt
IGxpbmVXaWR0aCk7CiAgICAgICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3Vu
ZGYocmVjdC55KCkgLSBsaW5lV2lkdGgpOwpAQCAtMTE2MSwxMyArMTE4MSwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
bGluZVdpZHRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCByZWN0KTsK
ICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQp
OwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29u
dGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwor
ICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5z
dHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ry
b2tlUGF0dGVybigpOwogCiAgICAgLy8gVXNpbmcgQ0dDb250ZXh0QWRkUmVjdCBhbmQgQ0dDb250
ZXh0U3Ryb2tlUGF0aCB0byBzdHJva2UgcmVjdCByYXRoZXIgdGhhbgpAQCAtMTQyMiw3ICsxNDQy
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAvLyBDR0NvbnRleHRGaWxsRWxsaXBz
ZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KLSAgICBpZiAobV9zdGF0ZS5maWxs
R3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVybikgeworICAgIGlmIChmaWxsR3JhZGllbnQo
KSB8fCBmaWxsUGF0dGVybigpKSB7CiAgICAgICAgIGZpbGxFbGxpcHNlQXNQYXRoKGVsbGlwc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQzNCw3ICsxNDU0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlw
c2UpCiB7CiAgICAgLy8gQ0dDb250ZXh0U3Ryb2tlRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRz
IHNvbGlkIGNvbG9ycy4KLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCB8fCBtX3N0YXRl
LnN0cm9rZVBhdHRlcm4pIHsKKyAgICBpZiAoc3Ryb2tlR3JhZGllbnQoKSB8fCBzdHJva2VQYXR0
ZXJuKCkpIHsKICAgICAgICAgc3Ryb2tlRWxsaXBzZUFzUGF0aChlbGxpcHNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCmluZGV4IDYwM2IwZTkzNmVmYjUyOGNhYzNkN2Fk
Yzg2NmU5OTU3ZWUzMGViZWMuLmExYTI2YmZkMjg0ZDg0NDYzZWMyMGZiMDE0ZmEzMzY5Yzg4Yzk5
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVw
ZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Vc2VTaGFk
b3dCbHVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcAppbmRleCBlZmJjMWU0OTU0NDFiZWRlNzM0ZTk0OGRkMjZkMzcxNDQxNjU1M2UwLi5k
MGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5NDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC05Niw1MiArOTYsMjQgQEAgRHJh
d0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25l
ciwgRGVjb25zdHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRl
SW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQog
ewotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBjb250ZXh0U3RhdGUuZmls
bENvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0
U3RhdGUuZmlsbEdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9y
bTsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUu
ZmlsbFBhdHRlcm47Ci0KLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBj
b250ZXh0U3RhdGUuc3Ryb2tlQ29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxl
LmdyYWRpZW50ID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtID0gY29udGV4dFN0YXRlLnN0
cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuc3Ryb2tlUGF0dGVybjsKKyAgICBtX29yaWdpbmFs
U3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxCcnVzaDsKKyAgICBtX29yaWdpbmFs
U3RhdGUuc3Ryb2tlQnJ1c2ggPSBjb250ZXh0U3RhdGUuc3Ryb2tlQnJ1c2g7CiAKICAgICBtX29y
aWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5nZXRDVE0oKTsgLy8gRklYTUU6IERlYWwgd2l0aCBi
YXNlIENUTS4KIAotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0ID0gY29udGV4dFN0
YXRlLnNoYWRvd09mZnNldDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIgPSBjb250
ZXh0U3RhdGUuc2hhZG93Qmx1cjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yID0g
Y29udGV4dFN0YXRlLnNoYWRvd0NvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdu
b3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLQot
ICAgIG1fY3VycmVudFN0YXRlID0gbV9vcmlnaW5hbFN0YXRlOworICAgIG1fb3JpZ2luYWxTdGF0
ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFkb3c7CisgICAgbV9vcmlnaW5hbFN0
YXRlLmlnbm9yZVRyYW5zZm9ybXMgPSBjb250ZXh0U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXM7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsQ29udGV4
dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIGlmICht
X29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRl
cm5hbENvbnRleHQtPnNldEZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9y
KTsKLSAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50KQotICAg
ICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbEdyYWRpZW50KCptX29yaWdpbmFsU3RhdGUu
ZmlsbFN0eWxlLmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFN0YXRl
LmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUucGF0dGVybikKLSAgICAgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsUGF0dGVy
bigqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9p
bnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHls
ZS5jb2xvcik7Ci0gICAgZWxzZSBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRp
ZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoKm1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQo
bV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pOwotICAgICAgICBpZiAobV9vcmln
aW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pCi0gICAgICAgICAgICBtX2ludGVybmFsQ29u
dGV4dC0+c2V0U3Ryb2tlUGF0dGVybigqbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRl
cm4pOwotICAgIH0KKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbEJydXNoKG1fb3JpZ2lu
YWxTdGF0ZS5maWxsQnJ1c2gpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VCcnVz
aChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOwogCiAgICAgbV9pbnRlcm5hbENvbnRleHQt
PnNldENUTShtX29yaWdpbmFsU3RhdGUuY3RtKTsKIAotICAgIG1faW50ZXJuYWxDb250ZXh0LT5z
ZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRy
YW5zZm9ybXMpOwotICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3cobV9vcmlnaW5hbFN0
YXRlLnNoYWRvdy5vZmZzZXQsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5h
bFN0YXRlLnNoYWRvdy5jb2xvciwgY29udGV4dFN0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFs
U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldERyb3BT
aGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCiAgICAgbV9pbnRlcm5hbENvbnRl
eHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKTsKIH0K
QEAgLTE2NSw5NSArMTM3LDM5IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJlSW50
ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9vdGhpbmdNCiB2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKQogewogICAgIHVwZGF0ZUNU
TShtX29yaWdpbmFsU3RhdGUuY3RtKTsKLSAgICB1cGRhdGVGaWxsQ29sb3IobV9vcmlnaW5hbFN0
YXRlLmZpbGxTdHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudC5n
ZXQoKSwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuLmdldCgpKTsKLSAgICB1cGRh
dGVTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IsIG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0YXRlLnN0cm9r
ZVN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVNoYWRvdyhtX29yaWdpbmFsU3RhdGUu
c2hhZG93Lm9mZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFsU3Rh
dGUuc2hhZG93LmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMg
PyBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6
Ok5vKTsKKyAgICB1cGRhdGVGaWxsQnJ1c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCk7Cisg
ICAgdXBkYXRlU3Ryb2tlQnJ1c2gobV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJydXNoKTsKKyAgICB1
cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3csIG1fb3JpZ2luYWxTdGF0ZS5p
Z25vcmVUcmFuc2Zvcm1zID8gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcyA6IFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOjpObyk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRh
dGVGaWxsQ29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQs
IFBhdHRlcm4qIG5ld1BhdHRlcm4pCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmls
bEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBuZXdCcnVzaCkKIHsKLSAgICAvLyBUaGlzIGNoZWNr
IGxvb2tzIHdyb25nIGJ1dCBpdCBhY3R1YWxseSBpc24ndCwgZm9yIG91ciBsaW1pdGVkIHVzZS4K
LSAgICAvLyBDVCB3aWxsIG9ubHkgZXZlciBzZXQgdGhpcyB0byBhIHNvbGlkIGNvbG9yLCB3aGlj
aCB0aGlzIGlzIHRoZSBjb3JyZWN0IGNoZWNrIGZvci4KLSAgICAvLyBJbiBjb25jbHVkZUludGVy
bmFsQ29udGV4dCgpIHdlIHNldCBpdCBiYWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdpbmFsbHksIHdo
aWNoIHRoaXMgY2hlY2sgd29ya3MgY29ycmVjdGx5IGZvciB0b28uCi0gICAgaWYgKG5ld0NvbG9y
ID09IG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUuZmlsbENvbG9y
ID0gbmV3Q29sb3I7Ci0gICAgaWYgKG5ld0dyYWRpZW50KQotICAgICAgICBuZXdTdGF0ZS5maWxs
R3JhZGllbnQgPSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3UGF0dGVybikKLSAgICAgICAgbmV3
U3RhdGUuZmlsbFBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3Rh
dGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSB9KTsK
LSAgICBtX2N1cnJlbnRTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKKyAgICBtX293
bmVyLnNldEZpbGxCcnVzaChuZXdCcnVzaCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVy
Ojp1cGRhdGVTdHJva2VDb2xvcihjb25zdCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdH
cmFkaWVudCwgUGF0dGVybiogbmV3UGF0dGVybikKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1
cGRhdGVTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgbmV3QnJ1c2gpCiB7Ci0gICAgLy8g
VGhpcyBjaGVjayBsb29rcyB3cm9uZyBidXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZvciBvdXIgbGlt
aXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8gYSBzb2xpZCBj
b2xvciwgd2hpY2ggdGhpcyBpcyB0aGUgY29ycmVjdCBjaGVjayBmb3IuCi0gICAgLy8gSW4gY29u
Y2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0IHdhcyBvcmln
aW5hbGx5LCB3aGljaCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJlY3RseSBmb3IgdG9vLgotICAgIGlm
IChuZXdDb2xvciA9PSBtX2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgbmV3U3Rh
dGUuc3Ryb2tlQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQpCi0gICAgICAg
IG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbmV3R3JhZGllbnQ7Ci0gICAgaWYgKG5ld1BhdHRl
cm4pCi0gICAgICAgIG5ld1N0YXRlLnN0cm9rZVBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1f
b3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9y
ID0gbmV3Q29sb3I7CisgICAgbV9vd25lci5zZXRTdHJva2VCcnVzaChuZXdCcnVzaCk7CiB9CiAK
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBjdG0pCiB7Ci0gICAgaWYgKGN0bSA9PSBtX2N1cnJlbnRTdGF0ZS5jdG0pCisgICAgaWYgKG1f
b3duZXIuZ2V0Q1RNKCkgPT0gY3RtKQogICAgICAgICByZXR1cm47Ci0KICAgICBtX293bmVyLnNl
dENUTShjdG0pOwotICAgIG1fY3VycmVudFN0YXRlLmN0bSA9IGN0bTsKIH0KIAotc3RhdGljIGJv
b2wgc2hhZG93SXNDbGVhcmVkKGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBz
aGFkb3dCbHVyKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBE
cm9wU2hhZG93JiBkcm9wU2hhZG93LCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcykKIHsKLSAgICByZXR1cm4gc2hhZG93T2Zmc2V0ID09IEZsb2F0U2l6ZSgp
ICYmICFzaGFkb3dCbHVyOwotfQotCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hh
ZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25z
dCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKQotewotICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgaWYgbm9ib2R5IGhhcyBhbnkgc2hhZG93cy4KLSAgICBpZiAoc2hh
ZG93SXNDbGVhcmVkKHNoYWRvd09mZnNldCwgc2hhZG93Qmx1cikgJiYgc2hhZG93SXNDbGVhcmVk
KG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVy
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mgc3RhdGVDaGFuZ2VG
bGFnczsKLQotICAgIGlmIChzaGFkb3dPZmZzZXQgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93Lm9m
ZnNldCB8fCBzaGFkb3dCbHVyICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyIHx8IHNoYWRv
d0NvbG9yICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xvcikgewotICAgICAgICBuZXdTdGF0
ZS5zaGFkb3dPZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd0Js
dXIgPSBzaGFkb3dCbHVyOwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dDb2xvciA9IHNoYWRvd0Nv
bG9yOwotICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93Q2hhbmdlKTsKLSAgICB9Ci0gICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICE9
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCAmJiAoc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcykgIT0gbV9jdXJyZW50U3Rh
dGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMpIHsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM6Olllcyk7Ci0gICAgICAgIHN0YXRlQ2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7Ci0gICAgfQotICAg
IGlmIChzdGF0ZUNoYW5nZUZsYWdzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
b3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOwotCi0gICAg
bV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCA9IHNoYWRvd09mZnNldDsKLSAgICBtX2N1cnJl
bnRTdGF0ZS5zaGFkb3cuYmx1ciA9IHNoYWRvd0JsdXI7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hh
ZG93LmNvbG9yID0gc2hhZG93Q29sb3I7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93Lmlnbm9y
ZVRyYW5zZm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM6Olllcyk7CisgICAgbV9vd25lci5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cpOwor
ICAgIG1fb3duZXIuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CiB9CiAKIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKIHsKICAgICBpZiAo
Q0dTdHlsZUdldFR5cGUoc3R5bGUpICE9IGtDR1N0eWxlU2hhZG93KSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG1vcmUga2luZHMgb2YgQ0dTdHlsZXMuCi0gICAgICAgIHVwZGF0ZVNoYWRv
dyh7MCwgMH0sIDAsIENvbG9yKCksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmll
ZCk7CisgICAgICAgIHVwZGF0ZVNoYWRvdyh7IH0sIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpV
bnNwZWNpZmllZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2MSw3ICsxNzcsNyBA
QCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KENHU3R5bGVSZWYgc3R5bGUp
CiAgICAgYXV0byByYWQgPSBkZWcycmFkKHNoYWRvd1N0eWxlLmF6aW11dGggLSAxODApOwogICAg
IGF1dG8gc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHN0ZDo6Y29zKHJhZCksIHN0ZDo6c2luKHJh
ZCkpICogc2hhZG93U3R5bGUuaGVpZ2h0OwogICAgIGF1dG8gc2hhZG93Q29sb3IgPSBDR1N0eWxl
R2V0Q29sb3Ioc3R5bGUpOwotICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1N0
eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xv
ciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIHVwZGF0ZVNoYWRvdyh7IHNo
YWRvd09mZnNldCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRvd1N0eWxlLnJhZGl1cyksIENvbG9y
OjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3IpIH0sIFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3Jk
QmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENHUmVj
dCkKQEAgLTMyOCw4ICsyNDQsOCBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJh
d0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdAogCiAgICAgYXV0
byBmaWxsQ29sb3IgPSBDR0dTdGF0ZUdldEZpbGxDb2xvcihnc3RhdGUpOwogICAgIGF1dG8gc3Ry
b2tlQ29sb3IgPSBDR0dTdGF0ZUdldFN0cm9rZUNvbG9yKGdzdGF0ZSk7Ci0gICAgdXBkYXRlRmls
bENvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7Ci0g
ICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShz
dHJva2VDb2xvcikpOworICAgIHVwZGF0ZUZpbGxCcnVzaChDb2xvcjo6Y3JlYXRlQW5kUHJlc2Vy
dmVDb2xvclNwYWNlKGZpbGxDb2xvcikpOworICAgIHVwZGF0ZVN0cm9rZUJydXNoKENvbG9yOjpj
cmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKICAgICB1cGRhdGVTaGFk
b3coQ0dHU3RhdGVHZXRTdHlsZShnc3RhdGUpKTsKIAogICAgIGF1dG8gZm9udFNpemUgPSBDR0dT
dGF0ZUdldEZvbnRTaXplKGdzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3Bw
CmluZGV4IDUxMWUwOWI5NmNlZjAzMjUwOTBlMjNhZjkxNGFlMzVmMmFiOGVkMmUuLjgwYThjOGFl
NjU0OGQwYjZhOTZhYTMyZDdjMDU1ZGI2ODY0OTE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRl
Q29yZVRleHQuY3BwCkBAIC0yNDIsMTAgKzI0Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBH
CiAgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjb250ZXh0KTsKICAgICBDR0NvbnRleHRTZXRG
b250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwogCi0gICAgRmxvYXRTaXpl
IHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0Nv
bG9yOwotICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IpOworICAgIGF1dG8gZHJvcFNoYWRvdyA9IGNvbnRleHQuZHJvcFNoYWRvdygpOwog
CiAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0gPSBjb250ZXh0LmdldENUTSgpOwogICAg
IGZsb2F0IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsK
QEAgLTI1OCwxNiArMjU1LDE2IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgICAgIH0K
ICAgICB9OwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LnRleHREcmF3aW5n
TW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkg
JiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICgh
Y29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRDVE0uaXNJZGVudGl0
eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxh
eWVyKCk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LnRleHREcmF3aW5nTW9k
ZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBkcm9wU2hhZG93LmNvbG9yLmlzVmFsaWQo
KSAmJiAhZHJvcFNoYWRvdy5ibHVyUmFkaXVzICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1h
cEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0
Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LmlzSW5U
cmFuc3BhcmVuY3lMYXllcigpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAg
Ly8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBD
RyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAg
ICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRl
eHQuZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvciA9IHNoYWRvd0Nv
bG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxDb2xvci5hbHBoYUFzRmxvYXQoKSk7
CisgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvciA9IGRyb3BTaGFkb3cuY29sb3IuY29sb3JX
aXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKICAgICAgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yKTsKLSAgICAgICAgZmxvYXQgc2hh
ZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKKyAgICAgICAgZmxv
YXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBkcm9wU2hhZG93Lm9mZnNldC53aWR0aCgpOwog
ICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhh
dmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0
aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNl
dC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEp
OworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIGRyb3BTaGFkb3cub2Zm
c2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDog
MSk7CiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0
WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUds
eXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAg
ICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsg
c3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CkBAIC0yODAsNyArMjc3LDcgQEAg
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsK
IAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgICAgICBjb250ZXh0LnNl
dERyb3BTaGFkb3coZHJvcFNoYWRvdyk7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoc2hvdWxkU21vb3RoRm9udHMgIT0gb3JpZ2luYWxTaG91bGRVc2VGb250U21vb3RoaW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMmUyZjRmNGYyY2I1NWQzNjVlNWFlMzk5
MzI1ZDA1ZjJjMTczNjFmZC4uMmIwM2NlNGE2NmUyZDhhYTBmYWQ4MWE2NDRhZWIxZWRmZGUxYzg4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05MCwxMCArOTAsNyBAQCBib29sIERp
c3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5k
bGUgaXRlbSkKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRm
b3JtT3BlcmF0aW9ucykpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0
ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkg
ZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3Jt
LXNwZWNpZmljLgotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hh
bmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250c0NoYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAg
IGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCisgICAgICAgICAg
ICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyM2QwYmJjYzcxYzI4MWM1MmMzNWE4YzI1MmRhOTZj
MGFiMTJhOThjLi5iNjZjODQ4YTMzYmRkOTIzNjBmZWE4NTMzN2ZhYjVkYjJkMmQwMmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xNDgsMjQgKzE0OCwxOSBAQCBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ry
b2tlVGhpY2tuZXNzJiBzdGF0ZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVNldFN0YXRlOjpTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgIDogbV9zdGF0ZUNoYW5nZShzdGF0ZSwg
ZmxhZ3MpCi17Ci19Ci0KLVNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdl
KQorU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkK
KyAgICA6IG1fc3RhdGUoc3RhdGUpCiB7CiB9CiAKIHZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQp
OworICAgIGNvbnRleHQudXBkYXRlU3RhdGUobV9zdGF0ZSk7CiB9CiAKLXN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgc3RhdGUpCitz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Rh
dGUmIGl0ZW0pCiB7Ci0gICAgdHMgPDwgc3RhdGUuc3RhdGVDaGFuZ2UoKTsKKyAgICB0cyA8PCBp
dGVtLnN0YXRlKCk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCA5N2NiNWZjOGQwNGJhODY2MmI3MmM3ZGRlZWJjNDQxNTVjMjgyNWI3Li45
Njk0ZDY4ZDE1ZTk4ZDU2N2QzOGQzYWM5YjJjMDk5ZjMwZDBhNWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI0NywxMCArMjQ3LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU2V0
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKTsKIAotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlJiBzdGF0ZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KLSAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSB7IHJldHVybiBtX3N0YXRl
Q2hhbmdlOyB9CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMjU4LDI4OCAr
MjU3LDI0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG1fc3RhdGU7
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBjaGFuZ2VGbGFncyA9IG1fc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFnczsKLSAgICBlbmNvZGVyIDw8IGNoYW5nZUZsYWdzOwotCi0gICAg
YXV0byYgc3RhdGUgPSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkg
ewotICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlR3JhZGllbnQpOwotICAgICAgICBlbmNvZGVy
IDw8ICpzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7Ci0g
ICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCAq
c3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAg
QVNTRVJUKHN0YXRlLmZpbGxHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZp
bGxHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3Rh
dGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxsUGF0dGVybjsK
LSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dPZmZz
ZXQ7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93Qmx1cjsKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dS
YWRpdXNNb2RlOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8
PCBzdGF0ZS5zdHJva2VUaGlja25lc3M7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAg
IGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuZmlsbENvbG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8
PCBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5ibGVuZE1vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hh
bmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5hbHBoYTsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRBbnRpYWxpYXM7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZv
bnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRTbW9vdGhGb250czsK
LQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAg
ICBlbmNvZGVyIDw8IG1fc3RhdGU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6
Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cz4gY2hhbmdlRmxhZ3M7Ci0gICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKLSAgICBpZiAoIWNo
YW5nZUZsYWdzKQorICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IHN0YXRl
OworICAgIGRlY29kZXIgPj4gc3RhdGU7CisgICAgaWYgKCFzdGF0ZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hh
bmdlOwotICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7Ci0KLSAg
ICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ryb2tlR3JhZGll
bnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIXN0cm9rZUdyYWRp
ZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZSgqc3Ryb2tlR3JhZGllbnQpOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBhdXRvIHN0
cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghc3Ry
b2tlUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZSgqc3Ryb2tlUGF0dGVy
bik7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAgYXV0
byBmaWxsR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAo
IWZpbGxHcmFkaWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpmaWxsR3JhZGll
bnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAgYXV0
byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFm
aWxsUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsK
LSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd09mZnNl
dDsKLSAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gKnNo
YWRvd09mZnNldDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzaGFkb3dCbHVyOwot
ICAgICAgICBkZWNvZGVyID4+IHNoYWRvd0JsdXI7Ci0gICAgICAgIGlmICghc2hhZG93Qmx1cikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNoYWRvd0JsdXI7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25h
bDxDb2xvcj4gc2hhZG93Q29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93Q29sb3I7Ci0g
ICAgICAgIGlmICghc2hhZG93Q29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93Q29sb3IgPSAqc2hhZG93Q29s
b3I7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiBzaGFkb3dSYWRp
dXNNb2RlOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd1JhZGl1c01vZGU7Ci0gICAgICAgIGlm
ICghc2hhZG93UmFkaXVzTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gV1RGTW92ZSgq
c2hhZG93UmFkaXVzTW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5n
ZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNzOwotICAg
ICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKLSAgICAgICAgaWYgKCFzdHJva2VUaGlj
a25lc3MpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRl
Q2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gKnN0cm9rZVRoaWNrbmVzczsKLSAgICB9
Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAgIGRlY29k
ZXIgPj4gdGV4dERyYXdpbmdNb2RlOwotICAgICAgICBpZiAoIXRleHREcmF3aW5nTW9kZSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBXVEZNb3ZlKCp0ZXh0RHJhd2luZ01vZGUpOwotICAgIH0K
LQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxD
b2xvcj4gc3Ryb2tlQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gc3Ryb2tlQ29sb3I7Ci0gICAg
ICAgIGlmICghc3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlQ29sb3IgPSAqc3Ryb2tlQ29sb3I7
Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gZmlsbENvbG9yOwotICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKLSAg
ICAgICAgaWYgKCFmaWxsQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xvcjsKLSAg
ICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKSB7Ci0gICAgICAgIFN0cm9rZVN0eWxl
IHN0cm9rZVN0eWxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cm9rZVN0eWxlKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwotICAgIH0KLQotICAgIGlmIChzdGF0
ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
UnVsZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXaW5kUnVsZT4gZmlsbFJ1bGU7
Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbFJ1bGU7Ci0gICAgICAgIGlmICghZmlsbFJ1bGUpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuZmlsbFJ1bGUgPSAqZmlsbFJ1bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9w
ZXJhdGlvbkNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGVPcGVyYXRv
cj4gY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0
b3I7Ci0gICAgICAgIGlmICghY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuY29tcG9zaXRlT3Bl
cmF0b3IgPSAqY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNo
YW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKLSAg
ICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7Ci0gICAgICAgIGlmICghYmxlbmRNb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLmJsZW5kTW9kZSA9ICpibGVuZE1vZGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJwb2xh
dGlvblF1YWxpdHk+IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0gICAgICAgIGRlY29kZXIg
Pj4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAgICAgaWYgKCFpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSAqaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKSB7Ci0g
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhOwotICAgICAgICBkZWNvZGVyID4+IGFs
cGhhOwotICAgICAgICBpZiAoIWFscGhhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFscGhhID0gKmFscGhhOwotICAgIH0K
LQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBkZWNvZGVyID4+IHNob3VsZEFudGlh
bGlhczsKLSAgICAgICAgaWYgKCFzaG91bGRBbnRpYWxpYXMpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkQW50aWFs
aWFzID0gKnNob3VsZEFudGlhbGlhczsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9u
dHNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21vb3RoRm9u
dHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU21vb3RoRm9udHM7Ci0gICAgICAgIGlmICgh
c2hvdWxkU21vb3RoRm9udHMpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSAqc2hvdWxkU21v
b3RoRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
OwotICAgICAgICBpZiAoIXNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSAqc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICAgICAg
ZGVjb2RlciA+PiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICAgICAgaWYgKCFzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9ICpzaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB7IHN0YXRlQ2hhbmdl
IH0gfTsKKyAgICByZXR1cm4gU2V0U3RhdGUoKnN0YXRlKTsKIH0KIAogY2xhc3MgU2V0TGluZUNh
cCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZWVlNDQ3
MWQzNTRlNzUxNTMxMjUxODlkZmNjOTQxOGEzOTQ1MTRhMS4uZmU5MjgxNjdkMTRlZGU1ZmVmNzg2
OTNhZTdlMTQwY2U2NGFjYWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtNTMsNDUgKzUzLDM0IEBAIFJlY29yZGVyOjp+UmVjb3JkZXIoKQogICAgIEFT
U0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVzLCBpdCBpbmRp
Y2F0ZXMgbWlzbWF0Y2hlZCBzYXZlL3Jlc3RvcmUuCiB9CiAKLXN0YXRpYyBib29sIGNvbnRhaW5z
T25seUlubGluZVN0YXRlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYg
Y2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxh
Z3MpCit2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgaW5saW5lU3RhdGVDaGFuZ2VGbGFncyB7Ci0gICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UsCi0gICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwKLSAgICB9OwotCi0gICAgaWYgKGNoYW5n
ZUZsYWdzICE9IChjaGFuZ2VGbGFncyAmIGlubGluZVN0YXRlQ2hhbmdlRmxhZ3MpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0YXRlLnN0cm9r
ZUNvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
QVNTRVJUKHN0YXRlLmNoYW5nZXMoKSk7CisgICAgCisgICAgaWYgKHN0YXRlLmhhc09ubHlQcmlt
aXRpdmVDaGFuZ2VzKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gpKQorICAgICAgICAgICAgcmVj
b3JkU2V0SW5saW5lRmlsbENvbG9yKCpmaWxsQ29sb3IoKS50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7
CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxDb2xvckNoYW5nZSkgJiYgIWNoYW5nZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5R2V0QXNTUkdC
QUJ5dGVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHN0YXRlLmNoYW5n
ZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaCkp
CisgICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcigqc3Ryb2tlQ29sb3IoKS50
cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAgICAgaWYg
KHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
dHJva2VUaGlja25lc3MpKQorICAgICAgICAgICAgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKHN0
cm9rZVRoaWNrbmVzcygpKTsKIAotdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVt
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKLXsKLSAgICBpZiAoIWNvbnRh
aW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjaGFuZ2VzLCBjaGFuZ2VGbGFncykpIHsKLSAgICAg
ICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQotICAg
ICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOwotICAgICAg
ICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAg
ICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOwotICAgICAgICBy
ZWNvcmRTZXRTdGF0ZShjaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZUZsYWdzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICByZWNvcmRTZXRJbmxpbmVTdHJv
a2VDb2xvcigqY2hhbmdlcy5tX3N0YXRlLnN0cm9rZUNvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygp
KTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkZpbGxCcnVzaCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IGZpbGxQ
YXR0ZXJuKCkpCisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1h
Z2UoKSk7CisgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICByZWNvcmRTZXRTdHJv
a2VUaGlja25lc3MoY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CisgICAgaWYgKHN0
YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VCcnVzaCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IHN0cm9rZVBhdHRlcm4oKSkK
KyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAg
ICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldElubGluZUZpbGxDb2xvcigqY2hh
bmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAgcmVjb3Jk
U2V0U3RhdGUoc3RhdGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpCkBAIC05OSwyNSArODgsMjUgQEAgdm9pZCBSZWNvcmRlcjo6YXBwZW5k
U3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJl
bnRseSBpbnZva2VkIGluIGFuIGFkLWhvYyBtYW5uZXIgd2hlbiByZWNvcmRpbmcgZHJhd2luZyBp
dGVtcy4gV2Ugc2hvdWxkIGNvbnNpZGVyIGVpdGhlcgogICAgIC8vIHNwbGl0dGluZyBHcmFwaGlj
c0NvbnRleHQgc3RhdGUgY2hhbmdlcyBpbnRvIGluZGl2aWR1YWwgZGlzcGxheSBsaXN0IGl0ZW1z
LCBvciByZWZhY3RvcmluZyB0aGUgY29kZSBzdWNoIHRoYXQKICAgICAvLyB0aGlzIG1ldGhvZCBp
cyBhdXRvbWF0aWNhbGx5IGludm9rZWQgd2hlbiByZWNvcmRpbmcgYSBkcmF3aW5nIGl0ZW0uCi0g
ICAgYXV0byYgc3RhdGVDaGFuZ2VzID0gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2U7Ci0gICAg
YXV0byBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2VzRnJvbVN0YXRl
KGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwotICAgIGlmICghY2hhbmdlc0Zyb21M
YXN0U3RhdGUpCisgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZTsKKyAgICBp
ZiAoIXN0YXRlLmNoYW5nZXMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIg
PDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5n
ZXNGcm9tTGFzdFN0YXRlKSk7Ci0gICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlQ2hhbmdl
cywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOwotICAgIHN0YXRlQ2hhbmdlcy5tX2NoYW5nZUZsYWdz
ID0geyB9OwotICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5n
ZXMubV9zdGF0ZTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwg
InByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBzdGF0ZSk7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKHN0YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKKyAgICBjdXJy
ZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGU7CiB9CiAKIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBSZWNvcmRlcjo6c3RhdGUoKSBjb25zdAogewotICAgIHJldHVybiBjdXJy
ZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlOworICAgIHJldHVybiBjdXJyZW50U3RhdGUo
KS5zdGF0ZTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyBmbGFncykKK3ZvaWQgUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVs
YXRlKHN0YXRlLCBmbGFncyk7CisgICAgY3VycmVudFN0YXRlKCkuc3RhdGUubWVyZ2VDaGFuZ2Vz
KHN0YXRlLCBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBzdGF0ZS5kaWRB
cHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c2V0TGluZUNhcChMaW5lQ2FwIGxp
bmVDYXApCkBAIC0yMjIsMTIgKzIxMSwxNSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKIHZv
aWQgUmVjb3JkZXI6OnNhdmUoKQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6c2F2ZSgpOwogICAg
IHJlY29yZFNhdmUoKTsKLSAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0
KCkuY2xvbmVGb3JTYXZlKCkpOworICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNr
Lmxhc3QoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogeworICAgIEdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZSgpOworCiAgICAgaWYgKCFtX3N0YXRlU3RhY2suc2l6ZSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTI3NSwxNiArMjY3LDI0IEBAIEFmZmluZVRyYW5zZm9ybSBSZWNv
cmRlcjo6Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBjb25zdAog
CiB2b2lkIFJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiB7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwor
CiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAgICByZWNvcmRCZWdp
blRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9z
dGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclRyYW5zcGFyZW5jeUxheWVyKCkpOworICAgIAorICAg
IG1fc3RhdGUuYWxwaGEgPSAxOwogfQogCiB2b2lkIFJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lM
YXllcigpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
CiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAgICByZWNvcmRFbmRU
cmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAg
ICBtX3N0YXRlLmFscGhhID0gY3VycmVudFN0YXRlKCkuc3RhdGUuYWxwaGE7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhp
Y2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggODQ1ZWMw
MDc3MmVkMmM1NGExZTZjYjI2YjIxNTFkYWJhYTZlYzA3NS4uYTJhMjI2OGU1ZWQ1ZWI1YzBhOWNm
ZTNjZmVlYmE3NzAxYzJhZWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC02OSw3ICs2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
U2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgPSAwOwpA
QCAtMTM1LDMwICsxMzUsMjUgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCByZWNvcmRS
ZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAgICAgc3RydWN0IENvbnRleHRTdGF0ZSB7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdy
YXBoaWNzQ29udGV4dFN0YXRlPiBsYXN0RHJhd2luZ1N0YXRlOwogICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gY3RtOwogICAgICAgICBGbG9hdFJlY3QgY2xpcEJvdW5kczsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlIGxhc3REcmF3aW5nU3RhdGU7CiAKLSAgICAgICAgQ29udGV4dFN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKLSAgICAgICAgICAgIDogY3RtKHRyYW5zZm9ybSkK
LSAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwKQotICAgICAgICAgICAgLCBsYXN0RHJhd2lu
Z1N0YXRlKHN0YXRlKQorICAgICAgICBDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSwgY29uc3QgRmxvYXRSZWN0
JiBjbGlwQm91bmRzKQorICAgICAgICAgICAgOiBzdGF0ZShzdGF0ZSkKKyAgICAgICAgICAgICwg
Y3RtKGN0bSkKKyAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwQm91bmRzKQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JTYXZlKCkgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgQ29udGV4dFN0YXRlIHN0YXRlKGxhc3REcmF3aW5nU3Rh
dGUsIGN0bSwgY2xpcEJvdW5kcyk7Ci0gICAgICAgICAgICBzdGF0ZS5zdGF0ZUNoYW5nZSA9IHN0
YXRlQ2hhbmdlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAgICB9Ci0KICAgICAg
ICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAogICAgICAg
ICB7Ci0gICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xvbmVGb3JTYXZlKCk7Ci0gICAgICAgICAg
ICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0gMTsKLSAgICAgICAgICAgIHJldHVybiBz
dGF0ZTsKKyAgICAgICAgICAgIGF1dG8gY29weSA9ICp0aGlzOworICAgICAgICAgICAgY29weS5z
dGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgICAgICBpZiAoY29weS5s
YXN0RHJhd2luZ1N0YXRlKQorICAgICAgICAgICAgICAgIGNvcHkubGFzdERyYXdpbmdTdGF0ZS0+
ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgcmV0dXJuIGNvcHk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKQEAg
LTE4OSw3ICsxODQsNyBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0
IGRhc2hPZmZzZXQpIGZpbmFsOwpAQCAtMjcwLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0
JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBl
bmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFu
Z2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVt
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGN0bSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmNwcAppbmRleCAxZmRjNmJhNTZiZmRiMjYzNmVmYjM0NjJhZGEyYTk5MGQzMzg5OTQ1
Li43OWRkMTAyMDQ2MjI2ZmMwYTExZWRlM2JlM2I5NTJlY2I4N2QzNzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTEwNCw5ICsxMDQsOSBA
QCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNr
bmVzcykKICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPih0aGlja25lc3MpOwogfQogCi12
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VG
bGFncykKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgYXBwZW5kPFNldFN0YXRlPihzdGF0ZSwgY2hhbmdl
RmxhZ3MpOworICAgIGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUpOwogfQogCiB2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCkBAIC00MTcsMTYgKzQxNywx
MyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1BhaW50aW5nRXh0ZW50KGZsb2F0IGJsdXJS
YWRpdXMpCiAKIEZsb2F0UmVjdCBSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2NhbEJvdW5kcyhj
b25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IGJvdW5kcyA9IHJl
Y3Q7CisgICAgYXV0byBib3VuZHMgPSByZWN0OwogICAgIGF1dG8mIHN0YXRlID0gY3VycmVudFN0
YXRlKCk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd1Jh
ZGl1czsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHNo
YWRvd0V4dGVudCA9IGJvdW5kczsKLSAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zm
c2V0KTsKLSAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQo
c2hhZG93UmFkaXVzKSk7CisgICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAgICAgIGF1dG8gc2hh
ZG93RXh0ZW50ID0gYm91bmRzOworICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShkcm9wU2hhZG93
KCkub2Zmc2V0KTsKKyAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdF
eHRlbnQoZHJvcFNoYWRvdygpLmJsdXJSYWRpdXMpKTsKICAgICAgICAgYm91bmRzLnVuaXRlKHNo
YWRvd0V4dGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oCmluZGV4IDY0MjI2NWYwOTgwMjJjZjJiMDVmMTgwYzE3NGZhMDM0NjJmMmRkNDAu
LmFjMmQzMTc5Njc1OGM2MmNjNjE1MGExNTQ5ZDdhMDk0MDZlZWZhYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4pIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4p
IGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSBmaW5hbDsK
LSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lk
IHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKICAgICB2b2lk
IHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmYxOWQwMDM1NGNkYmVkZTNhNWJhMWFmNzU4Y2Zm
MDIzYTI1YTIyLi5mM2M4YzkwY2Q4OGJiZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBiMzliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC05NywxMCArOTcsMTAg
QEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJ
bWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0
KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uo
c2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0
dXJuICppbWFnZUlkZW50aWZpZXI7CiAKLSAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBm
aXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuZmls
bFBhdHRlcm4uZ2V0KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRl
cm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCiAg
ICAgICAgIHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCiAgICAgc2V0U3RhdGVJdGVtLmFwcGx5
KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5jcHAKaW5kZXggN2VkNTM3YzkyNzkzNzcwZjQ0ODhhZTI5ZGY0MDcyN2Q3ZWIxYTNhOS4uNjE3
OGFlYjFjODc2Mzc3MjE5NWY5ZTQ0NzYxMGU0OTBlNzY0ZjViOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02OSw3ICs2OSw3IEBAIEZs
b2F0UmVjdCBSZW5kZXJTVkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3go
KSBjb25zdAogc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFk
aWVudCgpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQsIGNvbnRl
eHQuc3RhdGUoKS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50LCBjb250ZXh0LnN0cm9rZUdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSk7CiAgICAgZWxzZSBpZiAoUGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ry
b2tlUGF0dGVybigpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsK
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNTQzODE4MmRkZTg3
NjNlYmFkMzhmMTkyZGY3OTVhYTA2MGI2NTFiYi4uOWUzNzg2ZTBmZGNkYjg5ZmIwNjYyOGM4ZmNj
NmRjODdiNzdjM2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI4LDEw
ICsxMjgsMTAgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShEaXNw
bGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Owog
Ci0gICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRl
LnN0cm9rZVBhdHRlcm4uZ2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVt
LnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0
dGVybi5nZXQoKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5z
dHJva2VCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBoYW5kbGVJdGVt
KFdURk1vdmUoaXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwCmluZGV4IDg1NzdjYmJkZTZkMzkwMWQzNDcwNzYxZWQzMGY3OWQ5OGU4MmI5OGQuLjli
YWY5YTM1Yzk3MGY5Yjc1MTAzMDU2Y2I1YmQ3ODE2YWVjYWQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNz
KGZsb2F0IHRoaWNrbmVzcykKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpTZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGZsYWdzKQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0
U3RhdGUgeyBzdGF0ZSwgZmxhZ3MgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0YXRlIH0p
KTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldExp
bmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmgKaW5kZXggOWIzM2EwNjdmZDE2YmNjZjE0MDQyYzE5NzRkZDY5MTk0MjI2MjQ2OC4u
YmVkMzYzZTA2MjQ1MzUyN2Y5YTA2MjA4OGNlNjc3YzJiOTkyMjVlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWludDhf
dD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoV2ViQ29yZTo6
U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNz
KGZsb2F0KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVD
YXAoV2ViQ29yZTo6TGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChj
b25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKICAgICB2
b2lkIHJlY29yZFNldExpbmVKb2luKFdlYkNvcmU6OkxpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTY2YTUzOWM3MTJj
NGM3NGVlNjZkNDYxNjVkZjI0YmMxN2Y5ZThjLi4xOTZmODYwYTE4MTc2Mjg5ZTMxNThhN2M5NTZh
MGVhMDFlMmYxYWViIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjItMDMtMTcgIEpvbmF0aGFuIEJlZGFyZCAg
PEpvbldCZWRhcmRAZ21haWwuY29tPgogCiAgICAgICAgIGNvbmZpZ3VyZS14Y29kZS1mb3ItZW1i
ZWRkZWQtZGV2ZWxvcG1lbnQgZmFpbHMgd2l0aCBYY29kZSAxMy4zCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0
VGVzdHNDRy5jcHAKaW5kZXggMjQ3MzU4MGYxOTBlMGZkNjc0YzM2N2RhNDdjOWYxOTJiYTI0ODVl
NC4uMjE1YzE3YzY2NTdhZWRhNmE2ZTJjZDBhZTBjOWM5MjZmM2JkODJiMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3Rz
Q0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGlj
c0NvbnRleHRUZXN0c0NHLmNwcApAQCAtNTIsNyArNTIsNyBAQCBURVNUKEdyYXBoaWNzQ29udGV4
dFRlc3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBvc2l0ZU9wZXJhdG9yKQogICAg
IEdyYXBoaWNzQ29udGV4dENHIGN0eChjZ0NvbnRleHQuZ2V0KCkpOwogCiAgICAgRVhQRUNUX0VR
KGN0eC5jb21wb3NpdGVPcGVyYXRpb24oKSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIp
OwotICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlT3BlcmF0aW9uKCksIEJsZW5kTW9kZTo6Tm9y
bWFsKTsKKyAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZSgpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7
CiAKICAgICBhdXRvIGdyZWVuUGl4ZWxDRyA9IGdyZWVuSW1hZ2UoKTsKICAgICBhdXRvIGdyZWVu
UGl4ZWxOYXRpdmUgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGdyZWVuUGl4ZWxDRy5nZXQoKSk7CkBA
IC03MSw3ICs3MSw3IEBAIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdHMsIERyYXdOYXRpdmVJbWFn
ZURvZXNOb3RMZWFrQ29tcG9zaXRlT3BlcmF0b3IpCiAgICAgRVhQRUNUX0VRKHByaW1hcnlEYXRh
WzJdLCAwKTsKIAogICAgIEVYUEVDVF9FUShjdHguY29tcG9zaXRlT3BlcmF0aW9uKCksIENvbXBv
c2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZU9w
ZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1v
ZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDFhM2RhZmY3Zjk2M2I5NWFkNjViODBiMDUzNGRjZDZlMDFlNmMxYS4uOTk4
Y2ZhNTliNTdlYTZjOTIyZDllMjkyNWRkNWU5ZDU1YzBlNGQwMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIyLTAzLTE3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNr
IG9mIGNoYW5nZXMgdGlsbCB0aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMt
c2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1
ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRpc3BsYXlsaXN0cy9sYXll
ci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQ6CisKIDIwMjItMDMtMTcgIE1hdHRlbyBGbG9yZXMg
IDxtYXR0ZW9fZmxvcmVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyOTExMjkt
cjI5MTEyOCk6IFtXSzEgRVdTXSAzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
LWFuaW1hdGlvbnMvYW5pbWF0aW9uLW1vZGVsL2FuaW1hdGlvbi10eXBlcy8qIHRlc3RzIGFyZSBh
IGNvbnN0YW50IHRleHQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxp
c3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlz
cGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IDUxMWI3
YzBjNTRkMzMyMTZiN2M2ZWFmMDQzYTc1YzE2NzY2ZDA0MjcuLmIyOWZlMmY1MzlhZDk2NmY1MDJh
NTNiNzM3OTFlZmUxNGEwZTljYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9k
aXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTQsMTEg
KzQsMTIgQEAKICAgKHkgMC4wMCkpCiAoc2F2ZSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFn
cyA1MTIpCi0gIChzaGFkb3ctYmx1ciAxMi4wMCkKLSAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAg
aGVpZ2h0PTIwKQotICAoc2hhZG93LWNvbG9yICMwMDAwMDApCi0gIChzaGFkb3dzLXVzZS1sZWdh
Y3ktcmFkaXVzIDApKQorICAoY2hhbmdlLWZsYWdzIFtkcm9wLXNoYWRvd10pCisgIChkcm9wLXNo
YWRvdworICAgIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKKyAgICAoc2hhZG93
LWJsdXIgMTIuMDApCisgICAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQorICAgIChzaGFkb3dzLXVz
ZS1sZWdhY3ktcmFkaXVzIDApKSkKIChmaWxsLWNvbXBvc2l0ZWQtcmVjdAogICAocmVjdCBhdCAo
NTAsNTApIHNpemUgMTAweDEwMCkKICAgKGNvbG9yICMwMDAwRkYpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1z
LWV4cGVjdGVkLnR4dAppbmRleCAzODZlMzk0MTE4NWYwOWEzYzY4ZWM2YzJhZTg4ZGYxMWM3MGIw
YTY5Li4xZGNhYmJlN2NlMDViY2JlOTRlMjMzNjRlYmUyOWVhNzZmZjBmNTk4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMt
dHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKQEAgLTYsMTEgKzYsMTIgQEAKICAgKGN0bSB7bT0oKDAu
ODcsMC41MCkoLTAuNTAsMC44NykpIHQ9KDgxLjcwLC0xOC4zMCl9KSkKIChzYXZlKQogKHNldC1z
dGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikKLSAgKHNoYWRvdy1ibHVyIDEyLjAwKQotICAoc2hh
ZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChzaGFkb3ctY29sb3IgIzAwMDAwMCkK
LSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisgIChjaGFuZ2UtZmxhZ3MgW2Ryb3At
c2hhZG93XSkKKyAgKGRyb3Atc2hhZG93CisgICAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVp
Z2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAxMi4wMCkKKyAgICAoc2hhZG93LWNvbG9yICMwMDAw
MDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpKQogKGZpbGwtY29tcG9zaXRl
ZC1yZWN0CiAgIChyZWN0IGF0ICgwLDApIHNpemUgMTAweDEwMCkKICAgKGNvbG9yICMwMDAwRkYp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0
LWV4cGVjdGVkLnR4dAppbmRleCBiYzE3YjUxMTQ5OWY4MjU2Yzk5MjkwZGFlODYxNGQ0ODk0Y2Fm
OWNjLi40ZGEwNmIzYzM4NzYyZWQ3MjU2ODU0YzRlM2Y0ZTA3ODNhNjVmYjY1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3Rl
ZC50eHQKQEAgLTgsOSArOCwxMCBAQAogICAoY29tcG9zaXRlLW9wZXJhdGlvbiBzb3VyY2Utb3Zl
cikKICAgKGJsZW5kLW1vZGUgbm9ybWFsKSBleHRlbnQgYXQgKDAsMCkgc2l6ZSAxMDR4MTA0KQog
KHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDMyOTYwKQotICAoZmlsbC1jb2xvciAjMDAwMEZG
KQotICAoc3Ryb2tlLXN0eWxlIDApCisgIChjaGFuZ2UtZmxhZ3MgW2ZpbGwtYnJ1c2gsIHN0cm9r
ZS1zdHlsZSwgc2hvdWxkLWFudGlhbGlhc10pCisgIChmaWxsLWJydXNoCisgICAgKGNvbG9yICMw
MDAwRkYpKQorICAoc3Ryb2tlLXN0eWxlIE5PLVNUUk9LRSkKICAgKHNob3VsZC1hbnRpYWxpYXMg
MCkpCiAoZHJhdy1yZWN0CiAgIChyZWN0IGF0ICgwLDApIHNpemUgMTA0eDIpCg==
</data>
<flag name="commit-queue"
          id="482936"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455075</attachid>
            <date>2022-03-18 01:05:53 -0700</date>
            <delta_ts>2022-03-18 01:45:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220318010552.patch</filename>
            <type>text/plain</type>
            <size>192718</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uZGY2MzAzNGJlZDU1NjdhZjY3Y2EwYzExZjc2OGEz
NmIwZTU4NDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGN1bGF0ZURyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBseVNoYWRvd09mZnNldFdvcmthcm91
bmRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDR1NoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENHOjpzdHJva2VFbGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJy
dXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlQ1RNKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9r
ZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0lzQ2xlYXJlZCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVt
cEZvckZsYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU6OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNo
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29udGFpbnNPbmx5SW5saW5lU3Rh
dGVDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JUcmFuc3Bh
cmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JTYXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
U2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
ZXh0ZW50RnJvbUxvY2FsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlk
VXBkYXRlU3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZmlsbFJlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1JlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0xpbmUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdv
b2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBz
aG91bGQgYWx3YXlzIGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2Vh
YWQwNmJlN2Y4Y2VlMDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUw
Mjc5NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2Ug
R3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUg
YXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpyZWNvcmRTZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlB
Y3Rpdml0eUluTWFuYWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4u
ZWJjYjUzMTdjZDdmMzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xNTcxLDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExv
Y2FsaXplQXhpc05hbWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlSW1hZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMz
OWZmOGYyMjRlZjZhODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRl
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQw
Zjg5Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIy
ZWZkYzJjZWRkNTNmYzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2
NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBG
aWx0ZXJSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9t
YWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2
NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4
Rjc1MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcy
RkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8q
IFNvdXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NG
RTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3
NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBK
U01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU3OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07
CkBAIC0xMTQyOCw2ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3RBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyRkIyMzk2MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2gu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMg
LyogU291cmNlQnJ1c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNl
QnJ1c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjkxNTIsNiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAv
KiBTaGFkb3dCbHVyLmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hh
ZG93Qmx1ci5oICovLAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2Nh
bGl6ZUF4aXNOYW1lcy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3Vy
Y2VCcnVzaC5jcHAgKi8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJy
dXNoLmggKi8sCiAJCQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwICovLAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZm
ZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBE
NEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8q
IFNvdXJjZUFscGhhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NE
QUMgLyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdB
OUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REYxMzUwOTI0QzlGQ0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNj
Yjc4ODExN2RlNjkzOGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiB0ZXh0UnVuLCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICog
bWFza1JlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwotICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7Ci0gICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRy
b3BTaGFkb3coKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3Qp
OwotICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0g
ICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAg
ICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAg
ICAgICBjLT5jbGlwKHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0g
b2Zmc2V0OworICAgICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAg
ICAgICAgICBjLT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0Nv
bG9yLCBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93
KGRyb3BTaGFkb3cub2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29s
b3IsIFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQog
ICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZh
NGNiMmEyLi4xYmQ2NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJl
dHVybiBtX3ByaW1hcnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lk
IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0
ZVN0YXRlKCkgaW5zdGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAg
IC8vIGFyZSBhbHNvIGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGUsIHNvIHRoYXQgY29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0
aGF0IHJlYWRzIGZyb20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3By
aW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlD
b250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51
cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0
YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1Mp
ICYmICFVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0
MmI3Mzc3NzI3YzExYTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQy
ZTM2N2RkMzdmMDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9T
KFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKiBkZXByZWNhdGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5k
ZXggMjVhM2QzZmU4NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgy
MmYxMTNkYmJiMDYxNDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwx
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250
JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQo
KTsKIAotICAgIHZvaWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0g
bnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsK
KyAgICB2b2lkIHVwZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQg
dXBkYXRlU3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIHsKICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAg
Tm8KICAgICB9OwotICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hh
ZG93JiwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYg
IVBMQVRGT1JNKFdJTikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTEx
MSwyNyArMTExLDEzIEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxU
ZXh0TWF0cml4OwogCiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsK
LSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBn
cmFkaWVudDsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNm
b3JtOwotICAgICAgICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0g
ICAgICAgIFN0eWxlIGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAg
ICAgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VC
cnVzaDsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hh
ZG93U3RhdGUgewotICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZs
b2F0IGJsdXIgeyAwIH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJv
b2wgaWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRv
d1N0YXRlIHNoYWRvdzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBi
b29sIGlnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmln
aW5hbFN0YXRlOwotICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJj
OGEzZTg2My4uMDMxMDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC00Myw2ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2VGbGFncyYgY2hhbmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQor
CiBHcmFwaGljc0NvbnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0
YWNrLmlzRW1wdHkoKSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmUoKQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0Ojp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7
Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShzdGF0ZSwgZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0
RHJhd2luZ1N0YXRlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAt
OTMsODQgKzk4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxw
dHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBT
aGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7Ci0gICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVz
TW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
LXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUu
c2hhZG93Qmx1ciA9IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAg
bV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBt
X3N0YXRlLnNoYWRvd09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAg
IGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0g
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJl
ZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsK
LSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17
Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwot
ICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9
OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50
Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAg
bV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklY
TUU6IGFsc28gZmlsbCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3Vu
dDsKQEAgLTQ5MSwxMyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRG
aWxsQ29sb3Iob2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRl
T3BlcmF0aW9uQ2hhbmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVU
b1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0
cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRo
cywgd2UgYWRkIGluIDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0
IGFyaXRobWV0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZk
M2ZlZi4uZmIyMzdhNTBlOWIwNTk0MmM5OTI5NWM2MTY3MzhiY2U0ZWU1MjZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTY0LDkgKzY0LDggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFz
cyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29u
dGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlRmxhZ3MmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0Nv
bnRleHQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtODAsODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENv
bnRleHQgU3RhdGUKIAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVz
cykgeyBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0K
LSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9r
ZVRoaWNrbmVzczsgfQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHls
ZSkgeyBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0K
LQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsK
LSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUNvbG9yOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4o
UmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmls
bENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAg
IEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVz
aC5ncmFkaWVudCgpOyB9CisgICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmZpbGxCcnVzaC5wYXR0ZXJuKCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1
c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNo
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYg
cGF0dGVybikgeyBtX3N0YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9
IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VU
cmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgPSB7IH0pOwotICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0Rmls
bFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFu
Z2UpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZp
bGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0
YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ry
b2tlQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIFBhdHRlcm4q
IHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRl
cm4oKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVz
aCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsg
bV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYm
IGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7
IG1fc3RhdGUuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNm
b3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tl
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRT
dHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwot
ICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0
dGVybi5nZXQoKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tl
U3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBz
aGFkb3dCbHVyKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAg
ICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCku
Y29sb3I7IH0KKyAgICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNo
YWRvdykgeyBtX3N0YXRlLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQs
IGZsb2F0IGJsdXJSYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBz
aGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hh
ZG93KHsgb2Zmc2V0LCBibHVyUmFkaXVzLCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQor
ICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9v
bCBoYXNWaXNpYmxlU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJs
ZSgpOyB9CisgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNo
YWRvdygpLmlzQmx1cnJlZCgpOyB9CisgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVy
biBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBv
c2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21w
b3NpdGVNb2RlKCkub3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBv
c2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9z
aXRlTW9kZShjb21wb3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2Rl
KHsgb3BlcmF0aW9uLCBibGVuZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9
IHsgfSk7Ci0gICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmFscGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0
YXRlLnNldEFscGhhKGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cykgeyBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtczsg
fQorICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01v
ZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4
dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgCisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQor
ICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFs
aWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hh
bmdlKTsgfQogICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNo
b3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxp
YXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHMgPSBzaG91bGRTbW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
U21vb3RoRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9
CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7
IG1fc3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhl
bC1xdWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxp
Z25pbmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRv
IHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lk
IHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29s
IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5z
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsg
fQotICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAg
IHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9
Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7IH0KLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0
RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdM
dW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBi
b29sIGRyYXdMdW1pbmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5h
bmNlTWFzazsgfQotCi0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkgeyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
OyB9Ci0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwg
U2hhZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAg
IGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29s
b3IuaXNWaXNpYmxlKCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93
T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAg
Ym9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygp
ICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2so
Ym9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRy
YXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29s
IHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJr
QXBwZWFyYW5jZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBz
ZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0
VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5t
ZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERy
YXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkg
Y2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdh
dGUgY2hhbmdlcwogICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAg
dmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCByZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkz
NTQwODY2NGMyNzZmY2UzZDU5OWU2MTRmOWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1
NzdhNTcwN2I5N2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgog
Ci0jaW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
ZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVy
dHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmxh
Zyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAg
OiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0g
ICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFw
aGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3Mm
IGNoYW5nZUZsYWdzKQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdy
YXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1H
cmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3ND
b250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1
bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIGZsYWdzKQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2
ZUNoYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQg
PSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0
cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3Jh
ZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xv
ciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdy
YWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0K
LQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAg
ICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9
IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hh
ZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNr
bmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4
dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAg
IHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1
bGUgPSBzdGF0ZS5maWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHBy
aW1pdGl2ZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ry
b2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0
ZS5hbHBoYTsKKyAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZl
Q2hhbmdlRmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNv
bXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5k
TW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlh
bGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZv
bnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
Ci0gICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFz
a0NoYW5nZSkpCi0gICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KIAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5n
ZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVy
dHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8
IHRoaXMtPipwcm9wZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hh
bmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0
YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxl
LCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7
CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0
eWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHls
ZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMsICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0g
c3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0Fw
cGVhcmFuY2UpOwogI2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQ
YXR0ZXJuKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFu
Z2UsIGZpbGxHcmFkaWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBh
dHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0
YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1f
c3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0
YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxh
Z3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25l
c3MpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5n
ZSwgdGV4dERyYXdpbmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxDb2xvckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTdHJva2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAg
ICAgICAmJiAobV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciB8fCBtX3N0YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAg
IGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KFNob3VsZEFudGlhbGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9u
dHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19G
T1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VE
YXJrQXBwZWFyYW5jZSk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoKSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9
IDE7CiAjZW5kaWYKLQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
c3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3Mp
OwotCi0gICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1v
dmUoc3Ryb2tlRmxhZ3MpOwotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGll
bnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAg
IGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdz
LnJlbW92ZShmaWxsRmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNo
YW5nZU5hbWVzW10gPSB7CisgICAgICAgICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVs
ZSIsCisKKyAgICAgICAgInN0cm9rZS1icnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNz
IiwKKyAgICAgICAgInN0cm9rZS1zdHlsZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwK
KyAgICAgICAgImRyb3Atc2hhZG93IiwKKworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1h
Z2UtaW50ZXJwb2xhdGlvbi1xdWFsaXR5IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwK
KworICAgICAgICAic2hvdWxkLWFudGlhbGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZv
bnRzIiwKKyAgICAgICAgInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAg
ICJzaGFkb3dzLWlnbm9yZS10cmFuc2Zvcm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1h
c2siCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmst
YXBwZWFyYW5jZSIKKyNlbmRpZgorICAgIH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9y
RmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxh
Z3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhbmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYg
bWFzaykpOwogCi0gICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0
ZUNoYW5nZU5hbWVzW2luZGV4XTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0
YXRlLnN0cm9rZVBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxQYXR0ZXJuKCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwg
bV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRUZXh0RHJhd2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNv
bG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0
YXRlLmZpbGxDb2xvcik7CisgICAgYXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8g
R3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7Cisg
ICAgICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KG5hbWUsIHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHls
ZSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAK
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1
bGUpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAg
ICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFD
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1
bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OlN0cm9rZUJydXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVt
cChDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5n
ZTo6U3Ryb2tlU3R5bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1v
ZGUpOworICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNo
YWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxp
YXMobV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZv
bnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0
LnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dERyYXdMdW1pbmFuY2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkobV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1w
KENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6YWxwaGEsICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdl
OjpBbHBoYSkpOworICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0
YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBk
dW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hh
bmdlOjpUZXh0RHJhd2luZ01vZGUpKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMs
ICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOwor
ICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFt
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cywgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAg
ICBkdW1wKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBw
ZWFyYW5jZShtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNl
RGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFy
a0FwcGVhcmFuY2UsICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSkpOwogI2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBj
aGFuZ2UpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZs
YWdzLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdHJva2UtZ3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVy
biIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGll
bnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJm
aWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0Js
dXIpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNo
YWRvd09mZnNldCk7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9z
dGF0ZS5zaGFkb3dDb2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2Ut
bGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNN
b2RlOjpMZWdhY3kpOwotICAgIH0KLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRy
YXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRl
LnN0cm9rZUNvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBt
X3N0YXRlLmZpbGxSdWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
YWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxl
bmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFu
dGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInNob3VsZC1zbW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNl
TWFzayk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1f
c3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VO
YW1lKGNoYW5nZSk7CisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVD
aGFuZ2UpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0g
ICAgcmV0dXJuIHRzOworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFm
ZGJmMDdmOGE1OTU5NTk2Ny4uYTkyMTI3OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUg
IlNvdXJjZUJydXNoLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgR3JhZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRv
cj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90
IHsKLSAgICAgICAgU3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAwLAotICAgICAgICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDEsCi0gICAgICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMiwKLSAgICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAzLAotICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDQsCi0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSAgICAgICAgICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01v
ZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRp
YWxpYXNDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRT
bW9vdGhGb250c0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAg
ICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAg
IGVudW0gY2xhc3MgQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMSwKKworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8
IDIsCisgICAgICAgIFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAg
ICAgU3Ryb2tlU3R5bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBv
c2l0ZU1vZGUgICAgICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAg
ICAgICAgICAgICAgID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8
PCA4LAorICAgICAgICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAg
ICAgICAgU2hvdWxkQW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hv
dWxkU21vb3RoRm9udHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgICAgID0gMSA8PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0g
MSA8PCAxNCwKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJr
QXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1
c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hh
bmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VG
bGFncyBjaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRp
ZEFwcGx5Q2hhbmdlcygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0Rmls
bEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZp
bGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAg
IHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3Ig
fSk7IH0KKyAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdy
YWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFk
ZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7
IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1
bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSwgZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdy
YWRpZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0
U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNo
KTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
QnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkg
eyBzdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zv
cm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNl
dFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQ
YXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VC
cnVzaCk7IH0KKworICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNr
bmVzcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lk
IHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U3Ryb2tlU3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0
cm9rZVN0eWxlKTsgfQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUg
Y29tcG9zaXRlTW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2
b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgZHJvcFNoYWRvdyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxw
aGEpOyB9CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAg
dm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdN
b2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9p
ZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzLCBzaG91bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250
cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3Vs
ZFNtb290aEZvbnRzKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJh
d0x1bWluYW5jZU1hc2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1h
c2spOyB9CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURh
cmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpVc2VEYXJrQXBwZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSwgdXNlRGFya0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGZpbGxHcmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47Cisg
ICAgYm9vbCBoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKKyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKLSAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENv
bG9yIGZpbGxDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBz
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAg
IFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZp
bGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJv
a2VCcnVzaCB7IENvbG9yOjpibGFjayB9OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAg
fTsKLSAgICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9Owot
CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRS
dWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9k
ZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNv
dXJjZU92ZXIgfTsKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwg
fTsKKyAgICAKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVy
YXRvcjo6U291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRy
b3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5
OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hh
ZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRB
bnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29s
IHNob3VsZEFudGlhbGlhcyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsg
dHJ1ZSB9OworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJh
d0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
Ci0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSB7IGZhbHNlIH07CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMtPipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy0+KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChj
aGFuZ2UpOworICAgIH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3Rh
dGUoc3RhdGUpCi0gICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAo
dGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRk
KGNoYW5nZSk7CiAgICAgfQorfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBj
b25zdDsKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsm
XShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsK
KyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBl
bmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0g
ICAgCi0gICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIg
PDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19
OworICAgIGVuY29kZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxs
UnVsZSwgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxS
dWxlKTsKKworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKwor
ICAgIGVuY29kZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9w
U2hhZG93KTsKKworICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdp
bmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2lu
Z01vZGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29k
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFu
Y2UpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJv
cGVydHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2Up
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBl
ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxQcm9wZXJ0eVR5cGU+IHZhbHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHN0YXRlLipwcm9wZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
IAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFn
cz4gY2hhbmdlRmxhZ3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNo
YW5nZUZsYWdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgc3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25l
c3MpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VTdHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhh
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxk
QW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSk7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCAr
MjU5LDI3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwK
LSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5h
bmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxl
LAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU1vZGUsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkRyb3BTaGFkb3csCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6QWxwaGEsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlRleHREcmF3aW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRz
LAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlm
CiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuY3BwCmluZGV4IDE1ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0Yjdh
OTNhYjQuLjEyZTRmZmJmMDg0NzM5MzkzOGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBA
IC0xMzYsNiArMTM2LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxl
bmRNb2RlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29t
cG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdGlvbiIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoImJsZW5kLW1vZGUiLCBjb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cm9wU2hhZG93JiBkcm9wU2hhZG93KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9m
ZnNldCIsIGRyb3BTaGFkb3cub2Zmc2V0KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1i
bHVyIiwgZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRv
dy1jb2xvciIsIGRyb3BTaGFkb3cuY29sb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
cy11c2UtbGVnYWN5LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRp
dXNNb2RlOjpMZWdhY3kpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkpCit7CisgICAgc3dpdGNoIChpbnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRl
cnBvbGF0ZToKKyAgICAgICAgdHMgPDwgIkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwg
IkxPVyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1l
ZGl1bToKKyAgICAgICAgdHMgPDwgIk1FRElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxl
KSB7CkBAIC0xODIsNCArMjIwLDQyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIExpbmVKb2luIGpvaW5TdHlsZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQor
eworICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0
cm9rZToKKyAgICAgICAgdHMgPDwgIk5PLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3Ryb2tlU3R5bGU6OlNvbGlkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tF
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgor
ICAgICAgICB0cyA8PCAiRE9UVEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0Ui
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6Cisg
ICAgICAgIHRzIDw8ICJET1VCTEUtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dHJva2VTdHlsZTo6V2F2eVN0cm9rZToKKyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkK
K3sKKyAgICBzd2l0Y2ggKHRleHREcmF3aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdN
b2RlOjpGaWxsOgorICAgICAgICB0cyA8PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVGV4dERyYXdpbmdNb2RlOjpTdHJva2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgKaW5kZXggZGVjNDM0NzAyY2Y3NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcy
OTc4MzFhMmJmMzQ2OGNhZWM4ZjUyMDBmMDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVu
ZE1vZGUgOiB1aW50OF90IHsKICAgICBQbHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0
ZU1vZGUgeworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUg
YmxlbmRNb2RlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90
aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24g
JiYgYmxlbmRNb2RlID09IG90aGVyLmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0
ZU1vZGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
b3BlcmF0aW9uOworICAgIGVuY29kZXIgPDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9w
ZXJhdG9yPiBvcGVyYXRpb247CisgICAgZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFv
cGVyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAg
IGlmICghYmxlbmRNb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyAqb3BlcmF0aW9uLCAqYmxlbmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50
TWFya2VyTGluZVN0eWxlIHsKICAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAg
ICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2
ICsxNDksNjcgQEAgc3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUs
ICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1
ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8g
SXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNo
YWRvd1JhZGl1c01vZGUgOiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKwor
c3RydWN0IERyb3BTaGFkb3cgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1
clJhZGl1cyB7IDAgfTsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJh
ZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0Js
dXJyZWQoKSBjb25zdCB7IHJldHVybiBpc1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAg
Ym9vbCBoYXNPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJs
ZSgpICYmICFvZmZzZXQuaXNaZXJvKCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJv
cFNoYWRvdyYgYikKK3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVy
UmFkaXVzID09IGIuYmx1clJhZGl1cyAmJiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNN
b2RlID09IGIucmFkaXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RHJvcFNoYWRvdzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBvZmZzZXQ7CisgICAgZW5jb2RlciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwg
Y29sb3I7CisgICAgZW5jb2RlciA8PCByYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorc3RkOjpvcHRpb25hbDxEcm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0Owor
ICAgIGRlY29kZXIgPj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAg
ICBkZWNvZGVyID4+IGJsdXJSYWRpdXM7CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7Cisg
ICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNN
b2RlOworICAgIGRlY29kZXIgPj4gcmFkaXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpi
bHVyUmFkaXVzLCAqY29sb3IsICpyYWRpdXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFk
aWVudFNwcmVhZE1ldGhvZCA6IHVpbnQ4X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAt
MTU4LDEzICsyNTcsNiBAQCBlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3Qgewog
fTsKIHVzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9k
ZT47CiAKLS8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBh
bmQgLXdlYmtpdC1ib3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2Yg
cmFkaWkgPiA4cHguCi1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBE
ZWZhdWx0LAotICAgIExlZ2FjeQotfTsKLQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhh
YmV0aWNUZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwx
NCBAQCBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29t
cG9zaXRlTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25R
dWFsaXR5KTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBMaW5lQ2FwKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUp
OworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFRleHREcmF3aW5nTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3Yzlh
MTFiNDIyNDY4ODVlLi42YzMzMzM5NjI3MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBo
aWNzQ29udGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWlu
dEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50
ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29u
cyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsg
fQogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNp
ZiBVU0UoQ0cpCiAgICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
aW5kZXggYmIxMzhiNTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFh
YmZjZTM4MDgxODNhM2IyMzFmYmNlMGZmYjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNo
YWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQog
Ci1TaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkKLSAgICA6IG1fY29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMo
c3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRl
LnNoYWRvd09mZnNldCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BT
aGFkb3cmIGRyb3BTaGFkb3csIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBt
X2NvbG9yKGRyb3BTaGFkb3cuY29sb3IpCisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5i
bHVyUmFkaXVzLCBkcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hh
ZG93Lm9mZnNldCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3Jy
ZWN0bHkgcmVuZGVycyBzaGFkb3dzIHdpdGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0v
ODEwMzQ0Mj4pLAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVo
YXZpb3IgZm9yIGNhbnZhcyBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5z
aGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBm
bG9hdCBzaGFkb3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7
CisgICAgaWYgKGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdh
Y3kpIHsKKyAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRy
b3BTaGFkb3cuYmx1clJhZGl1cyk7CiAgICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShz
aGFkb3dCbHVyLCBzaGFkb3dCbHVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3
ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhLi44ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2
MTc3MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlOworc3RydWN0IERyb3BTaGFkb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3Mg
U2hhZG93Qmx1ciB7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIo
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
ZmFsc2UpOwotICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1z
ID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCcnVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCcnVzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUw
NzM1MjQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJydXNoLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTb3VyY2VCcnVzaC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpT
b3VyY2VCcnVzaChjb25zdCBDb2xvciYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1
c2gpCisgICAgOiBtX2NvbG9yKGNvbG9yKQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkK
K3sKK30KKworY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRy
YW5zZm9ybT4gaWRlbnRpdHk7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRl
bnRpdHkuZ2V0KCk7CisKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVz
aDo6TG9naWNhbEdyYWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3Jh
ZGllbnQtPnNwYWNlVHJhbnNmb3JtOworCisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQor
CitHcmFkaWVudCogU291cmNlQnJ1c2g6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
YnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9
IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisg
ICAgICAgIHJldHVybiBncmFkaWVudC0+Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1BhdHRlcm4qIFNvdXJjZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0
ZXJuID0gc3RkOjpnZXRfaWY8UmVmPFBhdHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAg
ICByZXR1cm4gcGF0dGVybi0+cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
U291cmNlQnJ1c2g6OnNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVz
aDo6TG9naWNhbEdyYWRpZW50IHsgV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0g
fTsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKQoreworICAgIG1fYnJ1c2ggPSB7IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYg
YnJ1c2gpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOwor
CisgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImdyYWRpZW50IiwgZ3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVy
biA9IGJydXNoLnBhdHRlcm4oKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwg
cGF0dGVybik7CisKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5YjlmYWU1NDk0MzQ5ZGI1NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5o
CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgorI2luY2x1ZGUgIlBhdHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTb3VyY2VCcnVzaCB7CitwdWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAg
ICAgc3RydWN0IExvZ2ljYWxHcmFkaWVudCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdy
YWRpZW50OworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisg
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxMb2dpY2FsR3JhZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAg
IH07CisKKyAgICAgICAgc3RkOjp2YXJpYW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+
PiBicnVzaDsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAg
ICBTb3VyY2VCcnVzaCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVz
aChjb25zdCBDb2xvciYsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOwor
CisgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAg
IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBt
X2JydXNoOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBzcGFjZVRyYW5zZm9ybSA9IHsgfSk7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmKTsKKworICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAm
JiBtX2NvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVy
Jik7CisKK3ByaXZhdGU6CisgICAgQ29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAg
IHN0ZDo6b3B0aW9uYWw8QnJ1c2g+IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBT
b3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5n
cmFkaWVudC5wdHIoKSA9PSBiLmdyYWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0g
Yi5zcGFjZVRyYW5zZm9ybTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3Vy
Y2VCcnVzaDo6QnJ1c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihhLmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJy
dXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBiR3JhZGllbnQgPSBzdGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudD4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQg
PT0gKmJHcmFkaWVudDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogYlBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1
c2gmIGIpCit7CisgICAgcmV0dXJuIGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgp
ID09IGIuYnJ1c2goKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8
PCBzcGFjZVRyYW5zZm9ybTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNo
OjpCcnVzaDo6TG9naWNhbEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdy
YWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNw
YWNlVHJhbnNmb3JtOworICAgIGlmICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNl
VHJhbnNmb3JtIH0gfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBX
VEY6OnN3aXRjaE9uKGJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYg
Z3JhZGllbnQpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAg
ICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNv
dXJjZUJydXNoOjpCcnVzaD4gU291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29k
ZXIgPj4gaGFzR3JhZGllbnQ7CisgICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBn
cmFkaWVudCA9IExvZ2ljYWxHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAo
IWdyYWRpZW50KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpncmFkaWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVy
biA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9
IH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7Cisg
ICAgZW5jb2RlciA8PCBtX2JydXNoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxTb3VyY2VCcnVzaD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4g
Y29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29k
ZXIgPj4gYnJ1c2g7CisgICAgaWYgKCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBTb3VyY2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9
CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBT
b3VyY2VCcnVzaCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cAppbmRleCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi5lODQ4YzU2
YzJjNjQzY2U0Y2QzYzQyYjRjYjg1NzcxMGUxYTIyOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
QEAgLTU1OSw0MiArNTU5LDQyIEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAg
ICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRl
cm4pIHsKLSAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVy
bi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1
dG8gZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBh
dHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0
YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdl
ID0gZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0
ZXJuSW1hZ2Uuc2l6ZSgpOwotICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRY
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZ
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZp
bGxHcmFkaWVudCkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAg
ICAgICAgcGF0dGVybi50cmFuc2Zvcm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNm
b3JtKCk7CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7
CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAg
fSBlbHNlIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgp
KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4o
MSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlm
IChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9
IHN0YXRlLmZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1
c3RlZCA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bG9yID0gc3RhdGUuZmlsbENvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5j
b2xvcigpOwogfQogCiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAg
ICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0
YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0o
KSkpOwotICAgIGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRp
ZW50LmJhc2UgPSBzdGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJu
ID0gc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgp
KSk7CisgICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNo
LmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRl
LmFscGhhLCBzdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihz
dGF0ZS5hbHBoYSwgc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAg
Y29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hh
ZG93U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAs
IGNvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cu
b2Zmc2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBj
b2xvcihzdGF0ZS5kcm9wU2hhZG93LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhh
KQotICAgICwgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Ip
CisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3Bl
cmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhN2FmMGNlYjUyNDkwNDA0MWVlMTJkNTFmODlj
NmRmMTZjYjM2MDM3Li5mZTczOGJkZjc3ZThjZTc2MmFjYzlhMGYwZjg0ZGQ4MzYxYzY5YzExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBh
dXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0dseXBocygqY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6
U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwg
cG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zm
c2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwKKyAgICAgICAgc3RhdGUu
dGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cu
b2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nTW9k
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKaW5kZXggOTAwOTZhYzY0NTIyNGRiZmRjNjBiZmE2Y2Fj
YWQwMzA3NmNiMjk3ZC4uODU3Y2VkMWEyNzAzNzYxYjFkMzc4M2JkZWUzMDgzNzQ4NzM2MWY4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGll
bnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhZGllbnRDYWlyby5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBSZWZQdHI8Y2Fpcm9fcGF0dGVy
bl90PiBHcmFkaWVudDo6Y3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgQWZm
aW5lVAogCiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4o
MS4wLCBjb250ZXh0LnN0YXRlKCkuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1
dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4wLCBjb250ZXh0LmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOwogICAgIGlmICghcGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYzMyMzA0NDUzNTFiMDNmMmFhODczNmFlZTJi
Y2U3OGJjNDM2MWY0OS4uMGI2MWM4ZmMwMDQ3YzMwOTM5ODhiZWMyZjczZmM3ZWYxMmRhMjNmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjg0LDI3ICsyODQsMjcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAg
Q2Fpcm86OnRyYW5zbGF0ZSgqdGhpcywgeCwgeSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSkKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIENhaXJv
OjpTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3Mp
OwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hh
bmdlKQorICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9r
ZVN0eWxlKCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMo
KS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93KSkgewog
ICAgICAgICBpZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgICAg
IC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMgYXNzb2NpYXRlZCB3aXRo
IGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVp
Z2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKLSAgICAg
ICAgICAgIGF1dG8mIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAg
ICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRv
d09mZnNldC5oZWlnaHQoKSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3Rh
dGUuZHJvcFNoYWRvdy5vZmZzZXQ7CisgICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zm
c2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9Owog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21w
b3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVu
ZE1vZGUpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uKSkKKyAgICAgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0
aW9uLCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKQorICAgIGlmIChzdGF0
ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxk
QW50aWFsaWFzKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMoKnRo
aXMsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5o
CmluZGV4IDU2NDYxYzE1OWE1ODNjODljNjFlOGYwMmU0ZTBiZWU3YjA1OTMyZWYuLjY5NGQ2ODIx
MmIyYWZhMDIwNTk2YWMxZGUzMjk3M2NkNmQyMDY4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdCBmaW5hbDsKICAgICBHcmFwaGljc0NvbnRleHRDYWlybyogcGxhdGZvcm1Db250
ZXh0KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
OworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsK
IAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHNldExpbmVE
YXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRl
eCAzMjQ1YzYwMDQzMTU1MmQ1MTNiNzRlZWJjMDlmMzE4ZWVjM2RkNzJhLi5mOWZlYWI0ZTI2ZjI5
ODMzODFkY2RkYTRkNTRjNTBiNzUzOGU3ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xODUs
MTMgKzE4NSwxNCBAQCBzdGF0aWMgdm9pZCBzZXRDR0JsZW5kTW9kZShDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZQogfQogCiBHcmFwaGljc0NvbnRl
eHRDRzo6R3JhcGhpY3NDb250ZXh0Q0coQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKKyAgICA6IEdy
YXBoaWNzQ29udGV4dCh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcyB9KQogewogICAgIGlmICghY2dDb250ZXh0
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKGNnQ29udGV4dCk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0
YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhp
Y2tuZXNzQ2hhbmdlIH0pOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOwogICAgIG1fc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0eShD
R0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogfQog
CkBAIC0zMzgsNyArMzM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXoKICNlbmRpZgogCiAg
ICAgYXV0byBvbGRDb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAg
IGF1dG8gb2xkQmxlbmRNb2RlID0gYmxlbmRNb2RlT3BlcmF0aW9uKCk7CisgICAgYXV0byBvbGRC
bGVuZE1vZGUgPSBibGVuZE1vZGUoKTsKICAgICBzZXRDR0JsZW5kTW9kZShjb250ZXh0LCBvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgLy8g
TWFrZSB0aGUgb3JpZ2luIGJlIGF0IGFkanVzdGVkRGVzdFJlY3QubG9jYXRpb24oKQpAQCAtNTU1
LDEzICs1NTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd0VsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseVN0cm9rZVBh
dHRlcm4oKQogewotICAgIGlmICghbV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmICghc3Ry
b2tlUGF0dGVybigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VD
VE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAg
IGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CisgICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBz
dHJva2VQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAg
ICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCkBAIC01NzQsMTMgKzU3
NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseVN0cm9rZVBhdHRlcm4oKQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKCkKIHsKLSAgICBpZiAoIW1f
c3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKCFmaWxsUGF0dGVybigpKQogICAgICAgICByZXR1
cm47CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNl
clRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9z
dGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwor
ICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gZmlsbFBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTU5MSwxMSArNTkyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6
OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIENHQ29udGV4dFNldEZpbGxQYXR0ZXJuKGNnQ29udGV4
dCwgcGxhdGZvcm1QYXR0ZXJuLmdldCgpLCAmcGF0dGVybkFscGhhKTsKIH0KIAotc3RhdGljIGlu
bGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgQ0dQYXRoRHJhd2luZ01vZGUmIG1vZGUpCitzdGF0aWMgaW5saW5lIGJvb2wgY2Fs
Y3VsYXRlRHJhd2luZ01vZGUoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR1BhdGhE
cmF3aW5nTW9kZSYgbW9kZSkKIHsKLSAgICBib29sIHNob3VsZEZpbGwgPSBzdGF0ZS5maWxsUGF0
dGVybiB8fCBzdGF0ZS5maWxsQ29sb3IuaXNWaXNpYmxlKCk7Ci0gICAgYm9vbCBzaG91bGRTdHJv
a2UgPSBzdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IChzdGF0ZS5zdHJva2VTdHlsZSAhPSBOb1N0cm9r
ZSAmJiBzdGF0ZS5zdHJva2VDb2xvci5pc1Zpc2libGUoKSk7Ci0gICAgYm9vbCB1c2VFT0ZpbGwg
PSBzdGF0ZS5maWxsUnVsZSA9PSBXaW5kUnVsZTo6RXZlbk9kZDsKKyAgICBib29sIHNob3VsZEZp
bGwgPSBjb250ZXh0LmZpbGxQYXR0ZXJuKCkgfHwgY29udGV4dC5maWxsQ29sb3IoKS5pc1Zpc2li
bGUoKTsKKyAgICBib29sIHNob3VsZFN0cm9rZSA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpIHx8
IChjb250ZXh0LnN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UgJiYgY29udGV4dC5zdHJva2VDb2xv
cigpLmlzVmlzaWJsZSgpKTsKKyAgICBib29sIHVzZUVPRmlsbCA9IGNvbnRleHQuZmlsbFJ1bGUo
KSA9PSBXaW5kUnVsZTo6RXZlbk9kZDsKIAogICAgIGlmIChzaG91bGRGaWxsKSB7CiAgICAgICAg
IGlmIChzaG91bGRTdHJva2UpIHsKQEAgLTYyNCw5ICs2MjUsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKLSAgICBpZiAoc3RhdGUuZmls
bEdyYWRpZW50IHx8IHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGZpbGxHcmFkaWVu
dCgpIHx8IHN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkg
b3B0aW1pemVkIHdheSB0byBmaWxsICYgc3Ryb2tlIGEgcGF0aCB1c2luZyBncmFkaWVudHMKICAg
ICAgICAgLy8gRklYTUU6IEJlIHNtYXJ0ZXIgYWJvdXQgdGhpcy4KICAgICAgICAgZmlsbFBhdGgo
cGF0aCk7CkBAIC02MzQsMTMgKzYzNCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkcmF3
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KHN0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigpKQogICAgICAgICBhcHBs
eUZpbGxQYXR0ZXJuKCk7Ci0gICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0
cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICAgICBDR1Bh
dGhEcmF3aW5nTW9kZSBkcmF3aW5nTW9kZTsKLSAgICBpZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUo
c3RhdGUsIGRyYXdpbmdNb2RlKSkgeworICAgIGlmIChjYWxjdWxhdGVEcmF3aW5nTW9kZSgqdGhp
cywgZHJhd2luZ01vZGUpKSB7CiAjaWYgSEFWRShDR19DT05URVhUX0RSQVdfUEFUSF9ESVJFQ1Qp
CiAgICAgICAgIENHQ29udGV4dERyYXdQYXRoRGlyZWN0KGNvbnRleHQsIGRyYXdpbmdNb2RlLCBw
YXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKICNlbHNlCkBAIC02NTgsNyArNjU4LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9z
dGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBmaWxsR3JhZGllbnQgPSB0aGlzLT5m
aWxsR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAg
IEZsb2F0UmVjdCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgICAgICAgICBG
bG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CkBAIC02
NzAsMzMgKzY3MCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUGF0aChjb25zdCBQ
YXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4
dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRo
KGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4
dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
bGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6
RXZlbk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAobGF5ZXJDb250ZXh0KTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29u
dGV4dCk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNv
bnRleHQpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVy
LmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0
aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5w
bGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9z
dGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBDR0NvbnRleHRD
b25jYXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAg
ICAgICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAg
ICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwogCi0gICAgICAgICAgICBtX3N0YXRlLmZp
bGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWlu
dCgqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KG1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIGFw
cGx5RmlsbFBhdHRlcm4oKTsKICNpZiBIQVZFKENHX0NPTlRFWFRfRFJBV19QQVRIX0RJUkVDVCkK
ICAgICBDR0NvbnRleHREcmF3UGF0aERpcmVjdChjb250ZXh0LCBmaWxsUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkID8ga0NHUGF0aEVPRmlsbCA6IGtDR1BhdGhGaWxsLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLCBudWxscHRyKTsKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBDR0NvbnRleHRSZWYgY29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGll
bnQpIHsKKyAgICBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHRoaXMtPnN0cm9rZUdyYWRpZW50
KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3Qg
cmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAgZmxvYXQgbGluZVdp
ZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC03NDIsOCArNzQyLDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dD
b250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgobGF5ZXJDb250ZXh0KTsK
ICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENH
Q29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChs
YXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4
dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5h
dGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAgZmxvYXQg
ZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsKQEAgLTc1NCwxMyAr
NzU0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0
aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7Ci0gICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNw
YWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50
KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBzdHJva2VH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBh
aW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KG1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAg
ICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKIAogI2lmIFVTRShDR19DT05URVhUX1NUUk9LRV9MSU5F
X1NFR01FTlRTX1dIRU5fU1RST0tJTkdfUEFUSCkKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0
YXRlLmZpbGxHcmFkaWVudCkgeworICAgIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHRoaXMtPmZp
bGxHcmFkaWVudCgpKSB7CiAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFNp
emUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CkBAIC03OTgsMTgg
Kzc5OCwxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4dCwgcmVj
dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAg
ICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50
KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIGZpbGxHcmFk
aWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXll
ckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOwotICAgICAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KCp0aGlz
KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBmaWxsR3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5m
aWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0
dGVybigpOwogCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gY2FuVXNlU2hhZG93Qmx1cigpOwpA
QCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAg
ICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVa
ZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7
CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKQEAgLTgzOSw3ICs4Mzks
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4K
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBD
R1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9z
dGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKQEAgLTg2Niw3
ICs4NjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0CiAgICAgICAgIC8vIFR1cm4gb2ZmIENH
IHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNv
bnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0
U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNo
YWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRv
dy5kcmF3UmVjdFNoYWRvdygqdGhpcywgcmVjdCk7CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdAogICAgIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJh
ZGlpJiByYWRpaSA9IHJlY3QucmFkaWkoKTsKICAgICBib29sIGVxdWFsV2lkdGhzID0gKHJhZGlp
LnRvcExlZnQoKS53aWR0aCgpID09IHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSAmJiByYWRpaS50
b3BSaWdodCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgJiYgcmFkaWku
Ym90dG9tTGVmdCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpKTsKICAg
ICBib29sIGVxdWFsSGVpZ2h0cyA9IChyYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWku
Ym90dG9tTGVmdCgpLmhlaWdodCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSA9PSBy
YWRpaS50b3BSaWdodCgpLmhlaWdodCgpICYmIHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPT0g
cmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSk7Ci0gICAgYm9vbCBoYXNDdXN0b21GaWxsID0g
bV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVybjsKKyAgICBib29sIGhh
c0N1c3RvbUZpbGwgPSBmaWxsR3JhZGllbnQoKSB8fCBmaWxsUGF0dGVybigpOwogICAgIGlmICgh
aGFzQ3VzdG9tRmlsbCAmJiBlcXVhbFdpZHRocyAmJiBlcXVhbEhlaWdodHMgJiYgcmFkaWkudG9w
TGVmdCgpLndpZHRoKCkgKiAyID09IHIud2lkdGgoKSAmJiByYWRpaS50b3BMZWZ0KCkuaGVpZ2h0
KCkgKiAyID09IHIuaGVpZ2h0KCkpCiAgICAgICAgIENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0
KGNvbnRleHQsIHIpOwogICAgIGVsc2UgewpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRo
aXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCkBAIC05ODksNiArOTg5LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFj
aXR5KQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
Q0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgb3BhY2l0eSk7CiAgICAgQ0dDb250ZXh0QmVnaW5U
cmFuc3BhcmVuY3lMYXllcihjb250ZXh0LCAwKTsKKyAgICAKKyAgICBtX3N0YXRlLmRpZEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3Jt
S25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIApAQCAtMTAwMiwxNyArMTAwNCwxNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgcmVzdG9y
ZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRl
ZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHRmxvYXQmIHhPZmZzZXQsIENHRmxv
YXQmIHlPZmZzZXQpCitzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5l
ZWRlZChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9m
ZnNldCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShXSU4pCiAgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTSh4T2Zmc2V0KTsKICAgICBV
TlVTRURfUEFSQU0oeU9mZnNldCk7CiAjZWxzZQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93
T2Zmc2V0cyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV29yayBhcm91bmQg
PHJkYXI6Ly9wcm9ibGVtLzU1MzkzODg+IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIG9mZnNldHMgd2ls
bCBnZXQgdHJ1bmNhdGVkCkBAIC0xMDMwLDEwICsxMDI5LDggQEAgc3RhdGljIHZvaWQgYXBwbHlT
aGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coQ0dDb250
ZXh0UmVmIGNvbnRleHQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcykKIHsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGdyYXBoaWNz
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLQogICAgIGlmIChvZmZzZXQuaXNaZXJvKCkgJiYg
IWJsdXIpIHsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENH
U2l6ZVplcm8sIDAsIDApOwogICAgICAgICByZXR1cm47CkBAIC0xMDQ1LDcgKzEwNDIsNyBAQCBz
dGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgIENHRmxvYXQgeU9mZnNldCA9IG9mZnNldC5oZWln
aHQoKTsKICAgICBDR0Zsb2F0IGJsdXJSYWRpdXMgPSBibHVyOwogCi0gICAgaWYgKCFncmFwaGlj
c0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkgeworICAgIGlmICghc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNU
TSA9IGdldFVzZXJUb0Jhc2VDVE0oY29udGV4dCk7CiAKICAgICAgICAgQ0dGbG9hdCBBID0gdXNl
clRvQmFzZUNUTS5hICogdXNlclRvQmFzZUNUTS5hICsgdXNlclRvQmFzZUNUTS5iICogdXNlclRv
QmFzZUNUTS5iOwpAQCAtMTA2Niw3ICsxMDYzLDggQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3co
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYK
ICAgICAvLyBFeHRyZW1lICJibHVyIiB2YWx1ZXMgY2FuIG1ha2UgdGV4dCBkcmF3aW5nIGNyYXNo
IG9yIHRha2UgY3JhenkgbG9uZyB0aW1lcywgc28gY2xhbXAKICAgICBibHVyUmFkaXVzID0gc3Rk
OjptaW4oYmx1clJhZGl1cywgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KDEwMDAuMCkpOwogCi0g
ICAgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoZ3JhcGhpY3NDb250ZXh0LCB4
T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgICBpZiAocmVuZGVyaW5nTW9kZSAhPSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCkKKyAgICAgICAgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVk
ZWQoY29udGV4dCwgeE9mZnNldCwgeU9mZnNldCk7CiAKICAgICAvLyBDaGVjayBmb3IgYW4gaW52
YWxpZCBjb2xvciwgYXMgdGhpcyBtZWFucyB0aGF0IHRoZSBjb2xvciB3YXMgbm90IHNldCBmb3Ig
dGhlIHNoYWRvdwogICAgIC8vIGFuZCB3ZSBzaG91bGQgdGhlcmVmb3JlIGp1c3QgdXNlIHRoZSBk
ZWZhdWx0IHNoYWRvdyBjb2xvci4KQEAgLTEwNzYsMzkgKzEwNzQsNjEgQEAgc3RhdGljIHZvaWQg
c2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSYKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQs
IENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3Io
Y29sb3IpLmdldCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVw
ZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKKyAgICBpZiAoIXN0YXRl
LmNoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byBjb250ZXh0ID0gcGxhdGZv
cm1Db250ZXh0KCk7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0
aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MsIDAuZikpOworICAgIGZv
ciAoYXV0byBjaGFuZ2UgOiBzdGF0ZS5jaGFuZ2VzKCkpIHsKKyAgICAgICAgc3dpdGNoIChjaGFu
Z2UpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1
c2g6CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxsQnJ1c2gu
Y29sb3IoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzczoKKyAgICAgICAgICAgIENHQ29udGV4
dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MsIDAu
ZikpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaDoKKyAgICAgICAgICAgIENHQ29udGV4dFNldFN0cm9r
ZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tlQnJ1c2gu
Y29sb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAg
Q0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihz
dGF0ZS5zdHJva2VDb2xvcikuZ2V0KCkpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGU6CisgICAgICAgICAgICBzZXRDR0JsZW5kTW9kZShj
b250ZXh0LCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9k
ZS5ibGVuZE1vZGUpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIHNldENH
RmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxDb2xvcik7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdzoKKyAgICAgICAgICAgIHNldENHU2hh
ZG93KGNvbnRleHQsIHJlbmRlcmluZ01vZGUoKSwgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0
YXRlLmRyb3BTaGFkb3cuYmx1clJhZGl1cywgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwgc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAg
ICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgc3RhdGUuYWxwaGEpOworICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhOgorICAgICAgICAgICAgQ0dDb250
ZXh0U2V0QWxwaGEoY29udGV4dCwgc3RhdGUuYWxwaGEpOworICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9z
aXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdl
IH0pKQotICAgICAgICBzZXRDR0JsZW5kTW9kZShjb250ZXh0LCBzdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciwgc3RhdGUuYmxlbmRNb2RlKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5OgorICAgICAgICAgICAgQ0dDb250
ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0
eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAgICAgICAgICBicmVhazsK
IAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdp
bmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRl
eHQsIGNnVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5nTW9kZSkpOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZToKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBjZ1RleHREcmF3aW5n
TW9kZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXND
aGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3Rh
dGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXM6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRB
bnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZv
bnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250czoKKyAgICAgICAgICAg
IENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290
aEZvbnRzKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAg
ICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBv
bGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIAotICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAg
ICAgICAgc2V0Q0dTaGFkb3coKnRoaXMsIHN0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFk
b3dCbHVyLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c2V0TWl0ZXJMaW1pdChmbG9hdCBsaW1p
dCkKQEAgLTExMjUsNyArMTE0NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7CiAgICAgQ0dDb250
ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLnN0
cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSB0aGlzLT5zdHJv
a2VHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAg
Y29uc3QgZmxvYXQgZG91YmxlTGluZVdpZHRoID0gbGluZVdpZHRoICogMjsKICAgICAgICAgICAg
IGZsb2F0IGFkanVzdGVkV2lkdGggPSBjZWlsZihyZWN0LndpZHRoKCkgKyBkb3VibGVMaW5lV2lk
dGgpOwpAQCAtMTE0OSw4ICsxMTY5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tl
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAg
IENHQ29udGV4dEFkZFJlY3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29u
dGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0p
OwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0
KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIHN0cm9rZUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFp
bnQobGF5ZXJDb250ZXh0KTsKIAogICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25Y
ID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7CkBAIC0xMTYxLDEz
ICsxMTgxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRS
ZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRo
U3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQp
OwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4
dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdy
YWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChtX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4o
KSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICAgICAvLyBVc2luZyBDR0NvbnRl
eHRBZGRSZWN0IGFuZCBDR0NvbnRleHRTdHJva2VQYXRoIHRvIHN0cm9rZSByZWN0IHJhdGhlciB0
aGFuCkBAIC0xNDIyLDcgKzE0NDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogdm9pZCBHcmFwaGljc0Nv
bnRleHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewogICAgIC8v
IENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMgc29saWQgY29sb3JzLgot
ICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7Cisg
ICAgaWYgKGZpbGxHcmFkaWVudCgpIHx8IGZpbGxQYXR0ZXJuKCkpIHsKICAgICAgICAgZmlsbEVs
bGlwc2VBc1BhdGgoZWxsaXBzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDM0LDcg
KzE0NTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsRWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmIGVsbGlwc2UpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAvLyBDR0NvbnRleHRTdHJva2VFbGxpcHNl
SW5SZWN0IG9ubHkgc3VwcG9ydHMgc29saWQgY29sb3JzLgotICAgIGlmIChtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50IHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVybikgeworICAgIGlmIChzdHJva2VHcmFk
aWVudCgpIHx8IHN0cm9rZVBhdHRlcm4oKSkgewogICAgICAgICBzdHJva2VFbGxpcHNlQXNQYXRo
KGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKaW5kZXggNjAz
YjBlOTM2ZWZiNTI4Y2FjM2Q3YWRjODY2ZTk5NTdlZTMwZWJlYy4uYTFhMjZiZmQyODRkODQ0NjNl
YzIwZmIwMTRmYTMzNjljODhjOTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBmaW5h
bDsKIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogCiAgICAgdmly
dHVhbCBib29sIGNhblVzZVNoYWRvd0JsdXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGVmYmMxZTQ5NTQ0MWJlZGU3MzRlOTQ4
ZGQyNmQzNzE0NDE2NTUzZTAuLmQwYmVjOGQ2Mzg0NzA5Yjc4Y2YxZGU4MGJiMDJlMWUzN2QyZjk0
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAg
LTk2LDUyICs5NiwyNCBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbAogCiB2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBjb250ZXh0U3RhdGUpCiB7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xv
ciA9IGNvbnRleHRTdGF0ZS5maWxsQ29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHls
ZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAgbV9vcmlnaW5hbFN0
YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtID0gY29udGV4dFN0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0
dGVybiA9IGNvbnRleHRTdGF0ZS5maWxsUGF0dGVybjsKLQotICAgIG1fb3JpZ2luYWxTdGF0ZS5z
dHJva2VTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5zdHJva2VDb2xvcjsKLSAgICBtX29yaWdp
bmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGll
bnQ7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0gPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX29y
aWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybiA9IGNvbnRleHRTdGF0ZS5zdHJva2VQYXR0
ZXJuOworICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0U3RhdGUuZmlsbEJy
dXNoOworICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJv
a2VCcnVzaDsKIAogICAgIG1fb3JpZ2luYWxTdGF0ZS5jdG0gPSBtX293bmVyLmdldENUTSgpOyAv
LyBGSVhNRTogRGVhbCB3aXRoIGJhc2UgQ1RNLgogCi0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRv
dy5vZmZzZXQgPSBjb250ZXh0U3RhdGUuc2hhZG93T2Zmc2V0OwotICAgIG1fb3JpZ2luYWxTdGF0
ZS5zaGFkb3cuYmx1ciA9IGNvbnRleHRTdGF0ZS5zaGFkb3dCbHVyOwotICAgIG1fb3JpZ2luYWxT
dGF0ZS5zaGFkb3cuY29sb3IgPSBjb250ZXh0U3RhdGUuc2hhZG93Q29sb3I7Ci0gICAgbV9vcmln
aW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOwotCi0gICAgbV9jdXJyZW50U3RhdGUgPSBtX29yaWdpbmFsU3RhdGU7
CisgICAgbV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cgPSBjb250ZXh0U3RhdGUuZHJvcFNoYWRv
dzsKKyAgICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBv
cHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0
U3RhdGUpCiB7Ci0gICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IuaXNWYWxp
ZCgpKQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbENvbG9yKG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUuY29sb3IpOwotICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxs
U3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5m
aWxsU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFT
U0VSVChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pOwotICAgICAgICBpZiAobV9v
cmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKQotICAgICAgICAgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldEZpbGxQYXR0ZXJuKCptX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4p
OwotICAgIH0KLQotICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IuaXNW
YWxpZCgpKQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9vcmln
aW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yKTsKLSAgICBlbHNlIGlmIChtX29yaWdpbmFsU3Rh
dGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRT
dHJva2VHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50LCBtX29y
aWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7
Ci0gICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybikKLSAgICAg
ICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKCptX29yaWdpbmFsU3Rh
dGUuc3Ryb2tlU3R5bGUucGF0dGVybik7Ci0gICAgfQorICAgIG1faW50ZXJuYWxDb250ZXh0LT5z
ZXRGaWxsQnJ1c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCk7CisgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldFN0cm9rZUJydXNoKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCk7CiAKICAg
ICBtX2ludGVybmFsQ29udGV4dC0+c2V0Q1RNKG1fb3JpZ2luYWxTdGF0ZS5jdG0pOwogCi0gICAg
bV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fb3JpZ2luYWxT
dGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNl
dFNoYWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNo
YWRvdy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yLCBjb250ZXh0U3RhdGUuc2hh
ZG93UmFkaXVzTW9kZSk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtX2ludGVy
bmFsQ29udGV4dC0+c2V0RHJvcFNoYWRvdyhtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyk7CiAK
ICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50
ZXh0RHJhd2luZ01vZGUpOwogfQpAQCAtMTY1LDk1ICsxMzcsMzkgQEAgdm9pZCBEcmF3R2x5cGhz
UmVjb3JkZXI6OnByZXBhcmVJbnRlcm5hbENvbnRleHQoY29uc3QgRm9udCYgZm9udCwgRm9udFNt
b290aGluZ00KIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4
dCgpCiB7CiAgICAgdXBkYXRlQ1RNKG1fb3JpZ2luYWxTdGF0ZS5jdG0pOwotICAgIHVwZGF0ZUZp
bGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLCBtX29yaWdpbmFsU3RhdGUu
ZmlsbFN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRl
cm4uZ2V0KCkpOwotICAgIHVwZGF0ZVN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VT
dHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50LmdldCgpLCBt
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybi5nZXQoKSk7Ci0gICAgdXBkYXRlU2hh
ZG93KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0LCBtX29yaWdpbmFsU3RhdGUuc2hhZG93
LmJsdXIsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5zaGFk
b3cuaWdub3JlVHJhbnNmb3JtcyA/IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtczo6Tm8pOworICAgIHVwZGF0ZUZpbGxCcnVzaChtX29yaWdpbmFs
U3RhdGUuZmlsbEJydXNoKTsKKyAgICB1cGRhdGVTdHJva2VCcnVzaChtX29yaWdpbmFsU3RhdGUu
c3Ryb2tlQnJ1c2gpOworICAgIHVwZGF0ZVNoYWRvdyhtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRv
dywgbV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMgPyBTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtczo6WWVzIDogU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Ok5vKTsKIH0KIAotdm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcihjb25zdCBDb2xvciYgbmV3Q29sb3IsIEdy
YWRpZW50KiBuZXdHcmFkaWVudCwgUGF0dGVybiogbmV3UGF0dGVybikKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIG5ld0JydXNoKQog
ewotICAgIC8vIFRoaXMgY2hlY2sgbG9va3Mgd3JvbmcgYnV0IGl0IGFjdHVhbGx5IGlzbid0LCBm
b3Igb3VyIGxpbWl0ZWQgdXNlLgotICAgIC8vIENUIHdpbGwgb25seSBldmVyIHNldCB0aGlzIHRv
IGEgc29saWQgY29sb3IsIHdoaWNoIHRoaXMgaXMgdGhlIGNvcnJlY3QgY2hlY2sgZm9yLgotICAg
IC8vIEluIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCkgd2Ugc2V0IGl0IGJhY2sgdG8gd2hhdCBp
dCB3YXMgb3JpZ2luYWxseSwgd2hpY2ggdGhpcyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgZm9yIHRv
by4KLSAgICBpZiAobmV3Q29sb3IgPT0gbV9jdXJyZW50U3RhdGUuZmlsbFN0eWxlLmNvbG9yKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAg
ICBuZXdTdGF0ZS5maWxsQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQpCi0g
ICAgICAgIG5ld1N0YXRlLmZpbGxHcmFkaWVudCA9IG5ld0dyYWRpZW50OwotICAgIGlmIChuZXdQ
YXR0ZXJuKQotICAgICAgICBuZXdTdGF0ZS5maWxsUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAg
bV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbENvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9
IG5ld0NvbG9yOworICAgIG1fb3duZXIuc2V0RmlsbEJydXNoKG5ld0JydXNoKTsKIH0KIAotdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBuZXdD
b2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0ZXJuKiBuZXdQYXR0ZXJuKQordm9pZCBE
cmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBu
ZXdCcnVzaCkKIHsKLSAgICAvLyBUaGlzIGNoZWNrIGxvb2tzIHdyb25nIGJ1dCBpdCBhY3R1YWxs
eSBpc24ndCwgZm9yIG91ciBsaW1pdGVkIHVzZS4KLSAgICAvLyBDVCB3aWxsIG9ubHkgZXZlciBz
ZXQgdGhpcyB0byBhIHNvbGlkIGNvbG9yLCB3aGljaCB0aGlzIGlzIHRoZSBjb3JyZWN0IGNoZWNr
IGZvci4KLSAgICAvLyBJbiBjb25jbHVkZUludGVybmFsQ29udGV4dCgpIHdlIHNldCBpdCBiYWNr
IHRvIHdoYXQgaXQgd2FzIG9yaWdpbmFsbHksIHdoaWNoIHRoaXMgY2hlY2sgd29ya3MgY29ycmVj
dGx5IGZvciB0b28uCi0gICAgaWYgKG5ld0NvbG9yID09IG1fY3VycmVudFN0YXRlLnN0cm9rZVN0
eWxlLmNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBu
ZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5zdHJva2VDb2xvciA9IG5ld0NvbG9yOwotICAgIGlmIChu
ZXdHcmFkaWVudCkKLSAgICAgICAgbmV3U3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBuZXdHcmFkaWVu
dDsKLSAgICBpZiAobmV3UGF0dGVybikKLSAgICAgICAgbmV3U3RhdGUuc3Ryb2tlUGF0dGVybiA9
IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UgfSk7Ci0gICAgbV9jdXJyZW50U3Rh
dGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKKyAgICBtX293bmVyLnNldFN0cm9rZUJy
dXNoKG5ld0JydXNoKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTShj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSkKIHsKLSAgICBpZiAoY3RtID09IG1fY3VycmVudFN0
YXRlLmN0bSkKKyAgICBpZiAobV9vd25lci5nZXRDVE0oKSA9PSBjdG0pCiAgICAgICAgIHJldHVy
bjsKLQogICAgIG1fb3duZXIuc2V0Q1RNKGN0bSk7Ci0gICAgbV9jdXJyZW50U3RhdGUuY3RtID0g
Y3RtOwogfQogCi1zdGF0aWMgYm9vbCBzaGFkb3dJc0NsZWFyZWQoY29uc3QgRmxvYXRTaXplJiBz
aGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIpCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
dXBkYXRlU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3csIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewotICAgIHJldHVybiBzaGFkb3dP
ZmZzZXQgPT0gRmxvYXRTaXplKCkgJiYgIXNoYWRvd0JsdXI7Ci19Ci0KLXZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjp1cGRhdGVTaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZs
b2F0IHNoYWRvd0JsdXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi17Ci0gICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBjb25zaWRlciBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBpZiBub2JvZHkgaGFzIGFueSBz
aGFkb3dzLgotICAgIGlmIChzaGFkb3dJc0NsZWFyZWQoc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
KSAmJiBzaGFkb3dJc0NsZWFyZWQobV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCwgbV9jdXJy
ZW50U3RhdGUuc2hhZG93LmJsdXIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncyBzdGF0ZUNoYW5nZUZsYWdzOwotCi0gICAgaWYgKHNoYWRvd09mZnNldCAhPSBtX2N1
cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0IHx8IHNoYWRvd0JsdXIgIT0gbV9jdXJyZW50U3RhdGUu
c2hhZG93LmJsdXIgfHwgc2hhZG93Q29sb3IgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93LmNvbG9y
KSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd09mZnNldCA9IHNoYWRvd09mZnNldDsKLSAgICAg
ICAgbmV3U3RhdGUuc2hhZG93Qmx1ciA9IHNoYWRvd0JsdXI7Ci0gICAgICAgIG5ld1N0YXRlLnNo
YWRvd0NvbG9yID0gc2hhZG93Q29sb3I7Ci0gICAgICAgIHN0YXRlQ2hhbmdlRmxhZ3MuYWRkKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotICAgIH0KLSAgICBpZiAoc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgIT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVk
ICYmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6
WWVzKSAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcykgewotICAgICAg
ICBuZXdTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IChzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKLSAgICAgICAgc3RhdGVDaGFu
Z2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlKTsKLSAgICB9Ci0gICAgaWYgKHN0YXRlQ2hhbmdlRmxhZ3MuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgc3RhdGVD
aGFuZ2VGbGFncyk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0ID0gc2hhZG93
T2Zmc2V0OwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyID0gc2hhZG93Qmx1cjsKLSAg
ICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuY29sb3IgPSBzaGFkb3dDb2xvcjsKLSAgICBtX2N1cnJl
bnRTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9IChzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKKyAgICBtX293bmVyLnNldERyb3BT
aGFkb3coZHJvcFNoYWRvdyk7CisgICAgbV9vd25lci5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVz
KTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVm
IHN0eWxlKQogewogICAgIGlmIChDR1N0eWxlR2V0VHlwZShzdHlsZSkgIT0ga0NHU3R5bGVTaGFk
b3cpIHsKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbW9yZSBraW5kcyBvZiBDR1N0eWxlcy4K
LSAgICAgICAgdXBkYXRlU2hhZG93KHswLCAwfSwgMCwgQ29sb3IoKSwgU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM6OlVuc3BlY2lmaWVkKTsKKyAgICAgICAgdXBkYXRlU2hhZG93KHsgfSwgU2hhZG93
c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjYxLDcgKzE3Nyw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFk
b3coQ0dTdHlsZVJlZiBzdHlsZSkKICAgICBhdXRvIHJhZCA9IGRlZzJyYWQoc2hhZG93U3R5bGUu
YXppbXV0aCAtIDE4MCk7CiAgICAgYXV0byBzaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc3RkOjpj
b3MocmFkKSwgc3RkOjpzaW4ocmFkKSkgKiBzaGFkb3dTdHlsZS5oZWlnaHQ7CiAgICAgYXV0byBz
aGFkb3dDb2xvciA9IENHU3R5bGVHZXRDb2xvcihzdHlsZSk7Ci0gICAgdXBkYXRlU2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93U3R5bGUucmFkaXVzLCBDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVD
b2xvclNwYWNlKHNoYWRvd0NvbG9yKSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7Cisg
ICAgdXBkYXRlU2hhZG93KHsgc2hhZG93T2Zmc2V0LCBzdGF0aWNfY2FzdDxmbG9hdD4oc2hhZG93
U3R5bGUucmFkaXVzKSwgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dD
b2xvcikgfSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CiB9CiAKIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjpyZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0
YXRlUmVmIGdzdGF0ZSwgQ0dSZWN0KQpAQCAtMzI4LDggKzI0NCw4IEBAIHZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRl
UmVmIGdzdGF0CiAKICAgICBhdXRvIGZpbGxDb2xvciA9IENHR1N0YXRlR2V0RmlsbENvbG9yKGdz
dGF0ZSk7CiAgICAgYXV0byBzdHJva2VDb2xvciA9IENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0
YXRlKTsKLSAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JT
cGFjZShmaWxsQ29sb3IpKTsKLSAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5k
UHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CisgICAgdXBkYXRlRmlsbEJydXNoKENv
bG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7CisgICAgdXBkYXRl
U3Ryb2tlQnJ1c2goQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xv
cikpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCiAgICAg
YXV0byBmb250U2l6ZSA9IENHR1N0YXRlR2V0Rm9udFNpemUoZ3N0YXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29y
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dENhc2NhZGVDb3JlVGV4dC5jcHAKaW5kZXggNTExZTA5Yjk2Y2VmMDMyNTA5MGUyM2FmOTE0YWUz
NWYyYWI4ZWQyZS4uODBhOGM4YWU2NTQ4ZDBiNmE5NmFhMzJkN2MwNTVkYjY4NjQ5MTYwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENh
c2NhZGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAgLTI0MiwxMCArMjQyLDcgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNvbnRleHQp
OwogICAgIENHQ29udGV4dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUo
KSk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7
Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgY29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgYXV0byBkcm9wU2hhZG93ID0gY29u
dGV4dC5kcm9wU2hhZG93KCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGV4dENUTSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgZmxvYXQgc3ludGhldGljQm9sZE9mZnNldCA9IGZvbnQuc3lu
dGhldGljQm9sZE9mZnNldCgpOwpAQCAtMjU4LDE2ICsyNTUsMTYgQEAgdm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEcKICAgICAgICAgfQogICAgIH07CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNo
YWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29s
b3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwg
Y29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4
dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNv
bnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIGRyb3BT
aGFkb3cuY29sb3IuaXNWYWxpZCgpICYmICFkcm9wU2hhZG93LmJsdXJSYWRpdXMgJiYgIXBsYXRm
b3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJh
bnNmb3JtcygpIHx8IGNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQo
KSkgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgaWYgKGhhc1NpbXBs
ZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5z
dGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBh
bnRpYWxpYXNpbmcuCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29s
b3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKLSAgICAgICAgQ29sb3Igc2hhZG93
RmlsbENvbG9yID0gc2hhZG93Q29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENv
bG9yLmFscGhhQXNGbG9hdCgpKTsKKyAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gZHJv
cFNoYWRvdy5jb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShmaWxsQ29sb3IuYWxwaGFB
c0Zsb2F0KCkpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3Ip
OwotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53
aWR0aCgpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIGRyb3BTaGFk
b3cub2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRy
YW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5
ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9p
bnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQu
eSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5
cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0
UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsK
QEAgLTI4MCw3ICsyNzcsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICBzaG93
R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9m
ZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMsIHRleHRNYXRyaXgpOwogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAg
Y29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7
CisgICAgICAgIGNvbnRleHQuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRTbW9vdGhGb250cyAhPSBvcmlnaW5hbFNo
b3VsZFVzZUZvbnRTbW9vdGhpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyZTJm
NGY0ZjJjYjU1ZDM2NWU1YWUzOTkzMjVkMDVmMmMxNzM2MWZkLi4yYjAzY2U0YTY2ZTJkOGFhMGZh
ZDgxYTY0NGFlYjFlZGZkZTFjODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkw
LDEwICs5MCw3IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRG
bGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4
dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewogICAgICAgICAgICAgY29uc3Qg
YXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBG
SVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5n
ZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVt
LnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdl
RmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9
PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDIzZDBiYmNjNzFj
MjgxYzUyYzM1YThjMjUyZGE5NmMwYWIxMmE5OGMuLmI2NmM4NDhhMzNiZGQ5MjM2MGZlYTg1MzM3
ZmFiNWRiMmQyZDAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAg
LTE0OCwyNCArMTQ4LDE5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmIHN0YXRlKQogICAgIHJldHVybiB0czsK
IH0KIAotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBt
X3N0YXRlQ2hhbmdlKHN0YXRlLCBmbGFncykKLXsKLX0KLQotU2V0U3RhdGU6OlNldFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKLSAgICA6IG1fc3Rh
dGVDaGFuZ2Uoc3RhdGVDaGFuZ2UpCitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKQorICAgIDogbV9zdGF0ZShzdGF0ZSkKIHsKIH0KIAogdm9pZCBT
ZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIG1fc3RhdGVD
aGFuZ2UuYXBwbHkoY29udGV4dCk7CisgICAgY29udGV4dC51cGRhdGVTdGF0ZShtX3N0YXRlKTsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNldFN0YXRlJiBzdGF0ZSkKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKIHsKLSAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNo
YW5nZSgpOworICAgIHRzIDw8IGl0ZW0uc3RhdGUoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDk3Y2I1ZmM4ZDA0YmE4NjYyYjcyYzdk
ZGVlYmM0NDE1NWMyODI1YjcuLjk2OTRkNjhkMTVlOThkNTY3ZDM4ZDNhYzliMmMwOTlmMzBkMGE1
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjQ3LDEwICsyNDcsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNl
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCi0gICAgY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZUNoYW5nZTsgfQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5n
ZSgpIHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNv
ZGVyJik7CkBAIC0yNTgsMjg4ICsyNTcsMjQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKLQotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgbV9zdGF0ZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGNo
YW5nZUZsYWdzID0gbV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzOwotICAgIGVuY29kZXIgPDwg
Y2hhbmdlRmxhZ3M7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZTsK
LQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VHcmFkaWVu
dCk7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIH0KLQot
ICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwot
ICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOwotICAgIH0KLQotICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50
Q2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuZmlsbEdyYWRpZW50KTsKLSAgICAgICAg
ZW5jb2RlciA8PCAqc3RhdGUuZmlsbEdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7
Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwg
KnN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dC
bHVyOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2Rl
Q2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNv
bG9yQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VDb2xvcjsKLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9y
Q2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsQ29sb3I7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hh
bmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxSdWxlOwotCi0gICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFu
Z2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwotCi0gICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVD
aGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmJsZW5kTW9kZTsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmFscGhh
OwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZEFu
dGlhbGlhczsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnNob3VsZFNtb290aEZvbnRzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOworICAgIGVuY29kZXIgPDwgbV9zdGF0ZTsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzPiBjaGFuZ2VGbGFnczsKLSAgICBkZWNvZGVyID4+IGNoYW5n
ZUZsYWdzOwotICAgIGlmICghY2hhbmdlRmxhZ3MpCisgICAgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4gc3RhdGU7CisgICAgZGVjb2RlciA+PiBzdGF0ZTsKKyAgICBpZiAoIXN0
YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0gICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9
ICpjaGFuZ2VGbGFnczsKLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKLSAgICAg
ICAgYXV0byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAg
ICAgIGlmICghc3Ryb2tlR3JhZGllbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3Zl
KCpzdHJva2VHcmFkaWVudCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2Up
KSB7Ci0gICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVy
KTsKLSAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBX
VEZNb3ZlKCpzdHJva2VQYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hh
bmdlKSkgewotICAgICAgICBhdXRvIGZpbGxHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVj
b2Rlcik7Ci0gICAgICAgIGlmICghZmlsbEdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxHcmFkaWVudCA9
IFdURk1vdmUoKmZpbGxHcmFkaWVudCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hh
bmdlKSkgewotICAgICAgICBhdXRvIGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29k
ZXIpOwotICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RG
TW92ZSgqZmlsbFBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0g
ICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIGRl
Y29kZXIgPj4gc2hhZG93T2Zmc2V0OwotICAgICAgICBpZiAoIXNoYWRvd09mZnNldCkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaGFkb3dPZmZzZXQgPSAqc2hhZG93T2Zmc2V0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IHNoYWRvd0JsdXI7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93Qmx1cjsKLSAgICAg
ICAgaWYgKCFzaGFkb3dCbHVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKLQot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzaGFkb3dDb2xvcjsKLSAgICAgICAgZGVjb2Rl
ciA+PiBzaGFkb3dDb2xvcjsKLSAgICAgICAgaWYgKCFzaGFkb3dDb2xvcikKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFk
b3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFNoYWRvd1Jh
ZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93UmFk
aXVzTW9kZTsKLSAgICAgICAgaWYgKCFzaGFkb3dSYWRpdXNNb2RlKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd1Jh
ZGl1c01vZGUgPSBXVEZNb3ZlKCpzaGFkb3dSYWRpdXNNb2RlKTsKLSAgICB9Ci0KLSAgICBpZiAo
c3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBz
dHJva2VUaGlja25lc3M7Ci0gICAgICAgIGRlY29kZXIgPj4gc3Ryb2tlVGhpY2tuZXNzOwotICAg
ICAgICBpZiAoIXN0cm9rZVRoaWNrbmVzcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSAqc3Ry
b2tlVGhpY2tuZXNzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKSB7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5n
TW9kZTsKLSAgICAgICAgZGVjb2RlciA+PiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAgIGlmICgh
dGV4dERyYXdpbmdNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IFdURk1vdmUoKnRleHRE
cmF3aW5nTW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzdHJva2VDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+
PiBzdHJva2VDb2xvcjsKLSAgICAgICAgaWYgKCFzdHJva2VDb2xvcikKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VD
b2xvciA9ICpzdHJva2VDb2xvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkg
ewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7Ci0gICAgICAgIGRlY29k
ZXIgPj4gZmlsbENvbG9yOwotICAgICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29s
b3IgPSAqZmlsbENvbG9yOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpIHsK
LSAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFs
PFdpbmRSdWxlPiBmaWxsUnVsZTsKLSAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKLSAgICAg
ICAgaWYgKCFmaWxsUnVsZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUnVsZSA9ICpmaWxsUnVsZTsKLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgZGVjb2Rl
ciA+PiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgaWYgKCFjb21wb3NpdGVPcGVyYXRvcikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9ICpjb21wb3NpdGVPcGVyYXRvcjsKLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5k
TW9kZT4gYmxlbmRNb2RlOwotICAgICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKLSAgICAgICAg
aWYgKCFibGVuZE1vZGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
ICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYmxlbmRNb2RlID0gKmJsZW5kTW9kZTsKLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpIHsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eTsKLSAgICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgICAg
ICBpZiAoIWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSA9ICppbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgIH0KLQotICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpBbHBoYUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGE7Ci0g
ICAgICAgIGRlY29kZXIgPj4gYWxwaGE7Ci0gICAgICAgIGlmICghYWxwaGEpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxw
aGEgPSAqYWxwaGE7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRBbnRpYWxpYXM7Ci0gICAgICAgIGRl
Y29kZXIgPj4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBpZiAoIXNob3VsZEFudGlhbGlhcykK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMgPSAqc2hvdWxkQW50aWFsaWFzOwotICAgIH0KLQotICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBzaG91bGRTbW9vdGhGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTbW9vdGhG
b250czsKLSAgICAgICAgaWYgKCFzaG91bGRTbW9vdGhGb250cykKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9v
dGhGb250cyA9ICpzaG91bGRTbW9vdGhGb250czsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHM7Ci0gICAgICAgIGlmICghc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0
ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwot
ICAgICAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgIH0KLQotICAgIHJl
dHVybiB7IHsgc3RhdGVDaGFuZ2UgfSB9OworICAgIHJldHVybiBTZXRTdGF0ZSgqc3RhdGUpOwog
fQogCiBjbGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCBlZWU0NDcxZDM1NGU3NTE1MzEyNTE4OWRmY2M5NDE4YTM5NDUxNGExLi5m
ZTkyODE2N2QxNGVkZTVmZWY3ODY5M2FlN2UxNDBjZTY0YWNhYjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01Myw0NSArNTMsMzQgQEAgUmVjb3JkZXI6
On5SZWNvcmRlcigpCiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPT0gMSk7IC8vIElm
IHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KIH0KIAot
c3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdl
SXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBpbmxpbmVTdGF0
ZUNoYW5nZUZsYWdzIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSwKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlLAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLAotICAg
IH07Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lU3RhdGVD
aGFuZ2VGbGFncykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpICYmICFj
aGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoc3RhdGUuY2hhbmdlcygpKTsKKyAgICAKKyAgICBp
ZiAoc3RhdGUuaGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSkgeworICAgICAgICBpZiAoc3RhdGUu
Y2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVz
aCkpCisgICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmZpbGxDb2xvcigpLnRy
eUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0YXRlLmZp
bGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlN0cm9rZUJydXNoKSkKKyAgICAgICAgICAgIHJlY29yZFNldElubGluZVN0cm9rZUNv
bG9yKCpzdHJva2VDb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIHJldHVybiB0
cnVlOwotfQorICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCisgICAgICAgICAgICByZWNvcmRT
ZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKCkpOwogCi12b2lkIFJlY29yZGVyOjph
cHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNo
YW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdz
KQotewotICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNo
YW5nZUZsYWdzKSkgewotICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRl
LnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50
aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUu
ZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxl
SW1hZ2UoKSk7Ci0gICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdl
RmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAg
IHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3Iu
dHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoKSkgeworICAgICAgICBpZiAo
YXV0byBwYXR0ZXJuID0gZmlsbFBhdHRlcm4oKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNl
VXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0g
ICAgICAgIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzKTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJu
ID0gc3Ryb2tlUGF0dGVybigpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVy
bi0+dGlsZUltYWdlKCkpOworICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0
SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFC
eXRlcygpKTsKKyAgICByZWNvcmRTZXRTdGF0ZShzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKQEAgLTk5LDI1ICs4OCwyNSBAQCB2
b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgY3VycmVudGx5IGludm9rZWQgaW4gYW4gYWQtaG9jIG1hbm5lciB3aGVu
IHJlY29yZGluZyBkcmF3aW5nIGl0ZW1zLiBXZSBzaG91bGQgY29uc2lkZXIgZWl0aGVyCiAgICAg
Ly8gc3BsaXR0aW5nIEdyYXBoaWNzQ29udGV4dCBzdGF0ZSBjaGFuZ2VzIGludG8gaW5kaXZpZHVh
bCBkaXNwbGF5IGxpc3QgaXRlbXMsIG9yIHJlZmFjdG9yaW5nIHRoZSBjb2RlIHN1Y2ggdGhhdAog
ICAgIC8vIHRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgaW52b2tlZCB3aGVuIHJlY29yZGlu
ZyBhIGRyYXdpbmcgaXRlbS4KLSAgICBhdXRvJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUo
KS5zdGF0ZUNoYW5nZTsKLSAgICBhdXRvIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFu
Z2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0g
ICAgaWYgKCFjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkKKyAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRT
dGF0ZSgpLnN0YXRlOworICAgIGlmICghc3RhdGUuY2hhbmdlcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3
aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNo
YW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKLSAgICBhcHBlbmRTdGF0ZUNo
YW5nZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgc3RhdGVD
aGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07Ci0gICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdp
bmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOworICAgIExPR19XSVRIX1NUUkVBTShEaXNw
bGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IHN0YXRl
KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5
Q2hhbmdlcygpOworICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZTsK
IH0KIAogY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIFJlY29yZGVyOjpzdGF0ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAg
cmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlOwogfQogCi12b2lkIFJlY29yZGVyOjpkaWRVcGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIGN1cnJlbnRTdGF0ZSgp
LnN0YXRlQ2hhbmdlLmFjY3VtdWxhdGUoc3RhdGUsIGZsYWdzKTsKKyAgICBjdXJyZW50U3RhdGUo
KS5zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3Rh
dGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIFJlY29yZGVyOjpz
ZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTIyMiwxMiArMjExLDE1IEBAIHZvaWQgUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwKIAogdm9pZCBSZWNvcmRlcjo6c2F2ZSgpCiB7CisgICAgR3JhcGhpY3ND
b250ZXh0OjpzYXZlKCk7CiAgICAgcmVjb3JkU2F2ZSgpOwotICAgIG1fc3RhdGVTdGFjay5hcHBl
bmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CisgICAgbV9zdGF0ZVN0YWNr
LmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cmVzdG9y
ZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCk7CisKICAgICBpZiAoIW1fc3Rh
dGVTdGFjay5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc1LDE2ICsyNjcsMjQgQEAg
QWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRl
RGV2aWNlU2NhbGUpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3BhY2l0eSkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIob3BhY2l0eSk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2Fy
eSgpOwogICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9z
dGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJlbmN5
TGF5ZXIoKSk7CisgICAgCisgICAgbV9zdGF0ZS5hbHBoYSA9IDE7CiB9CiAKIHZvaWQgUmVjb3Jk
ZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmVuZFRy
YW5zcGFyZW5jeUxheWVyKCk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2Fy
eSgpOwogICAgIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9zdGF0ZVN0YWNr
LnJlbW92ZUxhc3QoKTsKKworICAgIG1fc3RhdGUuYWxwaGEgPSBjdXJyZW50U3RhdGUoKS5zdGF0
ZS5hbHBoYTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAppbmRleCA4NDVlYzAwNzcyZWQyYzU0YTFlNmNiMjZiMjE1MWRhYmFhNmVjMDc1Li5h
MmEyMjY4ZTVlZDVlYjVjMGE5Y2ZlM2NmZWViYTc3MDFjMmFlZjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8dWlu
dDhfdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZs
b2F0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkm
LCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVK
b2luKExpbmVKb2luKSA9IDA7CkBAIC0xMzUsMzAgKzEzNSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CiAKICAgICBzdHJ1Y3Qg
Q29udGV4dFN0YXRlIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IGxhc3REcmF3aW5nU3RhdGU7
CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAgICAgICAgIEZsb2F0UmVjdCBjbGlwQm91
bmRzOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKIAotICAgICAgICBD
b250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQotICAgICAgICAg
ICAgOiBjdG0odHJhbnNmb3JtKQotICAgICAgICAgICAgLCBjbGlwQm91bmRzKGNsaXApCi0gICAg
ICAgICAgICAsIGxhc3REcmF3aW5nU3RhdGUoc3RhdGUpCisgICAgICAgIENvbnRleHRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Y3RtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXBCb3VuZHMpCisgICAgICAgICAgICA6IHN0YXRlKHN0
YXRlKQorICAgICAgICAgICAgLCBjdG0oY3RtKQorICAgICAgICAgICAgLCBjbGlwQm91bmRzKGNs
aXBCb3VuZHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIENvbnRleHRTdGF0ZSBj
bG9uZUZvclNhdmUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBDb250ZXh0U3RhdGUg
c3RhdGUobGFzdERyYXdpbmdTdGF0ZSwgY3RtLCBjbGlwQm91bmRzKTsKLSAgICAgICAgICAgIHN0
YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVDaGFuZ2U7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7
Ci0gICAgICAgIH0KLQogICAgICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JUcmFuc3BhcmVuY3lM
YXllcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBjbG9uZUZv
clNhdmUoKTsKLSAgICAgICAgICAgIHN0YXRlLmxhc3REcmF3aW5nU3RhdGUuYWxwaGEgPSAxOwot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRlOworICAgICAgICAgICAgYXV0byBjb3B5ID0gKnRoaXM7
CisgICAgICAgICAgICBjb3B5LnN0YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAg
ICAgICAgICAgIGlmIChjb3B5Lmxhc3REcmF3aW5nU3RhdGUpCisgICAgICAgICAgICAgICAgY29w
eS5sYXN0RHJhd2luZ1N0YXRlLT5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAg
ICAgICByZXR1cm4gY29weTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGZs
b2F0IHgsIGZsb2F0IHkpOwpAQCAtMTg5LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5h
bDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0Nv
bnRleHRTdGF0ZSYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lQ2Fw
KExpbmVDYXApIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZURhc2goY29u
c3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CkBAIC0yNzAsNyArMjY1LDcg
QEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBp
eGVscyhjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkgZmlu
YWw7CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0gICAg
dm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgdm9pZCBh
cHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAogICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IDFmZGM2YmE1NmJmZGIyNjM2ZWZi
MzQ2MmFkYTJhOTkwZDMzODk5NDUuLjc5ZGQxMDIwNDYyMjZmYzBhMTFlZGUzYmUzYjk1MmVjYjg3
ZDM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNw
cApAQCAtMTA0LDkgKzEwNCw5IEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdHJva2VU
aGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogICAgIGFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+
KHRoaWNrbmVzcyk7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBhcHBlbmQ8U2V0
U3RhdGU+KHN0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgYXBwZW5kPFNldFN0YXRlPihzdGF0ZSk7
CiB9CiAKIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNh
cCkKQEAgLTQxNywxNiArNDE3LDEzIEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2hhZG93UGFpbnRp
bmdFeHRlbnQoZmxvYXQgYmx1clJhZGl1cykKIAogRmxvYXRSZWN0IFJlY29yZGVySW1wbDo6ZXh0
ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBG
bG9hdFJlY3QgYm91bmRzID0gcmVjdDsKKyAgICBhdXRvIGJvdW5kcyA9IHJlY3Q7CiAgICAgYXV0
byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKTsKIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7
Ci0gICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlm
IChnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkgewot
ICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50ID0gYm91bmRzOwotICAgICAgICBzaGFkb3dF
eHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOwotICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShz
aGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRpdXMpKTsKKyAgICBpZiAoaGFzU2hhZG93KCkp
IHsKKyAgICAgICAgYXV0byBzaGFkb3dFeHRlbnQgPSBib3VuZHM7CisgICAgICAgIHNoYWRvd0V4
dGVudC5tb3ZlKGRyb3BTaGFkb3coKS5vZmZzZXQpOworICAgICAgICBzaGFkb3dFeHRlbnQuaW5m
bGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChkcm9wU2hhZG93KCkuYmx1clJhZGl1cykpOwogICAg
ICAgICBib3VuZHMudW5pdGUoc2hhZG93RXh0ZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5kZXggNjQyMjY1ZjA5ODAyMmNmMmIwNWYx
ODBjMTc0ZmEwMzQ2MmYyZGQ0MC4uYWMyZDMxNzk2NzU4YzYyY2M2MTUwYTE1NDlkN2EwOTQwNmVl
ZmFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xv
cihTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VD
b2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlj
a25lc3MoZmxvYXQpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
ZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAg
ICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZz
ZXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZjE5ZDAwMzU0
Y2RiZWRlM2E1YmExYWY3NThjZmYwMjNhMjVhMjIuLmYzYzhjOTBjZDg4YmJlMGM1MWUxZDRmYTEz
M2M1MWU4M2I4MGIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKQEAgLTk3LDEwICs5NywxMCBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAKLSAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZp
ZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3Rh
dGUuc3Ryb2tlUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0g
Zml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0
ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAotICAgIGlmIChhdXRv
IGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRl
Q2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJ
ZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxs
QnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuICppbWFnZUlkZW50aWZpZXI7CiAKICAg
ICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDkxMTQ2ZGZjNmZkODRk
ZjhlMjk1NGYwMzc3ZDAwNjZhNzcyMzNjYzkuLmIwMTUyOTlmOGU1NTllOTBiN2ViNzU3MTMwZWFm
YWEwNzdhNmEzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC04Miw5ICs4Miw5IEBAIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5k
TGlzdCkKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgeyB9LCB7IH0sIEZsb2F0UmVjdDo6aW5m
aW5pdGVSZWN0KCkgfSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBk
YXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQog
ewotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3ND
aGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpIHsKICAgICAgICAgc3RydWN0IFN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRh
PGZsb2F0PiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TdHJva2VUaGlja25lc3NDaGFuZ2UoKSA9
IGRlZmF1bHQ7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwog
ICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTdHJva2VUaGlja25lc3NDaGFuZ2U+KHN0YXRl
LnN0cm9rZVRoaWNrbmVzcykpOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCku
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKSB7CiAg
ICAgICAgIHN0cnVjdCBTdHJva2VTdHlsZUNoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9u
LCBPcGVyYXRpb25EYXRhPFN0cm9rZVN0eWxlPiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TdHJv
a2VTdHlsZUNoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVN0eWxl
Q2hhbmdlPihzdGF0ZS5zdHJva2VTdHlsZSkpOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpIHsKKyAgICBpZiAo
c3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNv
bXBvc2l0ZU9wZXJhdGlvbikpIHsKICAgICAgICAgc3RydWN0IENvbXBvc2l0ZU9wZXJhdGlvbkNo
YW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGU+IHsKICAgICAgICAgICAgIHZpcnR1YWwgfkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEcKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlPihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlv
biwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoZmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSB7CisgICAg
aWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpTaG91bGRBbnRpYWxpYXMpKSB7CiAgICAgICAgIHN0cnVjdCBTaG91bGRBbnRpYWxpYXNDaGFu
Z2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxib29sPiB7CiAgICAg
ICAgICAgICB2aXJ0dWFsIH5TaG91bGRBbnRpYWxpYXNDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAg
LTI5Miw3ICsyOTIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIH07CiAKICAgICBh
dXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Rmls
bFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4o
cmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVu
dFNwYWNlVHJhbnNmb3JtKCkpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAt
MzE2LDcgKzMxNiw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsCiAgICAgfTsKIAogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxs
UmVjdD4ocmVjdCwgY29sb3IsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIENhaXJvOjpT
aGFkb3dTdGF0ZShzdGF0ZSksIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yKSk7CisgICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRvciwg
YmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVNb2Rl
Lm9wZXJhdGlvbikpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRSZWN0CiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0
LCBjb2xvciwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVj
dD4ocm91bmRlZFJlY3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgYmxl
bmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvcikKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaAogICAg
ICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwKICAgICAgICAgUmVmUHRyPGNh
aXJvX3NjYWxlZF9mb250X3Q+KGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKSwKICAg
ICAgICAgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIFdURk1vdmUoY2Fpcm9HbHlwaHMpLCB4
T2Zmc2V0LCBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsCi0gICAgICAgIHN0YXRlLnN0cm9rZVRoaWNr
bmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwgZm9udFNtb290aGlu
ZykpOworICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zm
c2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBmb250U21vb3RoaW5nKSk7CiB9CiAKIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKQpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lCiAgICAgfTsK
IAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0
YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcikpOworICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxCcnVzaC5j
b2xvcigpLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQpAQCAtNjIyLDcgKzYyMiw3IEBA
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQxLCBjb25zdCBGbG9hdFBvaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0
YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZT4o
cG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKKyAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxl
LCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRl
LnNob3VsZEFudGlhbGlhcykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywg
Y29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJs
aW5lcywgU3Ryb2tlU3R5bGUpCkBAIC02ODQsNyArNjg0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAog
ICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwg
c3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOworICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPERyYXdFbGxpcHNlPihyZWN0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwg
c3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9r
ZVRoaWNrbmVzcykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCmluZGV4IDgzYzZkMjdkNmVhMzZjNzliZWJkNzgyNWY5OWI3YzQzOTA4
ZWU1NGIuLjRkZjI3MDk3OGRhODAxZmZiZDRkNmJjNTYzOTAzOWEyOTNjZmJlMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKFdlYkNvcmU6
OkxpbmVDYXApIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgV2ViQ29yZTo6
RGFzaEFycmF5JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBjMTllNzQxNTU3YzMwOGM5NDFl
NGVmNzE1ZTNkYjQ2NTk0ZDE4NWI2Li4yY2Q3ODY1ZWNhODI5ZWI0NTc4MGU5ZmIwZTcyNDdhMzcx
MmJjYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcApAQCAtMTc2LDI1ICsxNzYsMjIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXpl
KCkpOwogICAgIEZvbnRDYXNjYWRlOjpzZXRDR0NvbnRleHRGb250UmVuZGVyaW5nU3R5bGUoY2dD
b250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC5w
bGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0Owot
ICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9y
KTsKKyAgICBhdXRvIGRyb3BTaGFkb3cgPSBncmFwaGljc0NvbnRleHQuZHJvcFNoYWRvdygpOwog
Ci0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAm
JiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9y
RmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50
ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgZHJvcFNoYWRvdy5j
b2xvci5pc1ZhbGlkKCkgJiYgIWRyb3BTaGFkb3cuYmx1clJhZGl1cyAmJiAoIWdyYXBoaWNzQ29u
dGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0o
KS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFzU2ltcGxl
U2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0
ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFu
dGlhbGlhc2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAg
ICAgIENvbG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC5maWxsQ29sb3IoKTsKLSAgICAg
ICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gc2hhZG93Q29sb3IuY29sb3JXaXRoQWxwaGFNdWx0
aXBsaWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKKyAgICAgICAgQ29sb3Igc2hhZG93
RmlsbENvbG9yID0gZHJvcFNoYWRvdy5jb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShm
aWxsQ29sb3IuYWxwaGFBc0Zsb2F0KCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKHNoYWRvd0ZpbGxDb2xvcik7Ci0gICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9p
bnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRY
ID0gcG9pbnQueCgpICsgZHJvcFNoYWRvdy5vZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYg
c2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQg
dGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KLSAgICAgICAg
ZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAo
Z3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworICAg
ICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIGRyb3BTaGFkb3cub2Zmc2V0Lmhl
aWdodCgpICogKGdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEg
OiAxKTsKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgc2hhZG93
VGV4dFgsIHNoYWRvd1RleHRZKTsKICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocyk7CiAgICAgICAgIGlm
IChmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewotICAgICAgICAgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkg
KyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0Lmhl
aWdodCgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQs
IHBvaW50LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSwgcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocyk7CiAgICAgICAgIH0KICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwpAQCAtMjA4LDcgKzIwNSw3IEBAIHZvaWQgRm9u
dENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZvbnQmIGZvbnQsCiAgICAgfQogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldERyb3BTaGFkb3coZHJvcFNo
YWRvdyk7CiAKICAgICBGb250Q2FzY2FkZTo6c2V0Rm9udFNtb290aGluZ1N0eWxlKGNnQ29udGV4
dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNn
Q29udGV4dCwgc2F2ZWRNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggN2VkNTM3YzkyNzkzNzcwZjQ0ODhhZTI5ZGY0MDcyN2Q3
ZWIxYTNhOS4uNjE3OGFlYjFjODc2Mzc3MjE5NWY5ZTQ0NzYxMGU0OTBlNzY0ZjViOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02OSw3
ICs2OSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tl
Qm91bmRpbmdCb3goKSBjb25zdAogc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGdyYWRpZW50ID0gY29udGV4
dC5zdHJva2VHcmFkaWVudCgpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3Jh
ZGllbnQsIGNvbnRleHQuc3RhdGUoKS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAg
ICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50LCBjb250ZXh0LnN0cm9rZUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgZWxzZSBpZiAoUGF0dGVybiogcGF0dGVybiA9
IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJu
KCpwYXR0ZXJuKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
NTQzODE4MmRkZTg3NjNlYmFkMzhmMTkyZGY3OTVhYTA2MGI2NTFiYi4uOWUzNzg2ZTBmZGNkYjg5
ZmIwNjYyOGM4ZmNjNmRjODdiNzdjM2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtMTI4LDEwICsxMjgsMTAgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpz
ZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9OwogCi0gICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFu
Z2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRp
bGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCkubV9z
dGF0ZS5maWxsUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0
ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDg1NzdjYmJkZTZkMzkwMWQzNDcwNzYxZWQzMGY3OWQ5
OGU4MmI5OGQuLjliYWY5YTM1Yzk3MGY5Yjc1MTAzMDU2Y2I1YmQ3ODE2YWVjYWQ3NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTExNyw5ICsx
MTcsOSBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Ry
b2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKSk7CiB9CiAK
LXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6
OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNw
bGF5TGlzdDo6U2V0U3RhdGUgeyBzdGF0ZSwgZmxhZ3MgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0
ZSB7IHN0YXRlIH0pKTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6
OnJlY29yZFNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXggOWIzM2EwNjdmZDE2YmNjZjE0MDQyYzE5NzRkZDY5
MTk0MjI2MjQ2OC4uYmVkMzYzZTA2MjQ1MzUyN2Y5YTA2MjA4OGNlNjc3YzJiOTkyMjVlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC03NCw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoV2ViQ29yZTo6
U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29s
b3IoV2ViQ29yZTo6U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ry
b2tlVGhpY2tuZXNzKGZsb2F0KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lkIHJl
Y29yZFNldExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRT
ZXRMaW5lRGFzaChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVKb2luKFdlYkNvcmU6OkxpbmVKb2luKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAw
MTY2YTUzOWM3MTJjNGM3NGVlNjZkNDYxNjVkZjI0YmMxN2Y5ZThjLi43MDcwMGEwZWI2YzI2NDVk
NTMwOTVmMThmZTY5MjM0ZDhjM2FhZWZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTggIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtl
IEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJl
IGFwcGxpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzODA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjItMDMtMTcgIEpvbmF0
aGFuIEJlZGFyZCAgPEpvbldCZWRhcmRAZ21haWwuY29tPgogCiAgICAgICAgIGNvbmZpZ3VyZS14
Y29kZS1mb3ItZW1iZWRkZWQtZGV2ZWxvcG1lbnQgZmFpbHMgd2l0aCBYY29kZSAxMy4zCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3Jh
cGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKaW5kZXggMjQ3MzU4MGYxOTBlMGZkNjc0YzM2N2RhNDdj
OWYxOTJiYTI0ODVlNC4uMjE1YzE3YzY2NTdhZWRhNmE2ZTJjZDBhZTBjOWM5MjZmM2JkODJiMCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNz
Q29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtNTIsNyArNTIsNyBAQCBURVNUKEdy
YXBoaWNzQ29udGV4dFRlc3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBvc2l0ZU9w
ZXJhdG9yKQogICAgIEdyYXBoaWNzQ29udGV4dENHIGN0eChjZ0NvbnRleHQuZ2V0KCkpOwogCiAg
ICAgRVhQRUNUX0VRKGN0eC5jb21wb3NpdGVPcGVyYXRpb24oKSwgQ29tcG9zaXRlT3BlcmF0b3I6
OlNvdXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlT3BlcmF0aW9uKCksIEJs
ZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZSgpLCBCbGVuZE1v
ZGU6Ok5vcm1hbCk7CiAKICAgICBhdXRvIGdyZWVuUGl4ZWxDRyA9IGdyZWVuSW1hZ2UoKTsKICAg
ICBhdXRvIGdyZWVuUGl4ZWxOYXRpdmUgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGdyZWVuUGl4ZWxD
Ry5nZXQoKSk7CkBAIC03MSw3ICs3MSw3IEBAIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdHMsIERy
YXdOYXRpdmVJbWFnZURvZXNOb3RMZWFrQ29tcG9zaXRlT3BlcmF0b3IpCiAgICAgRVhQRUNUX0VR
KHByaW1hcnlEYXRhWzJdLCAwKTsKIAogICAgIEVYUEVDVF9FUShjdHguY29tcG9zaXRlT3BlcmF0
aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEoY3R4
LmJsZW5kTW9kZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNUX0VR
KGN0eC5ibGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDFhM2RhZmY3Zjk2M2I5NWFkNjViODBiMDUzNGRjZDZl
MDFlNmMxYS4uMmQwNjc2MzRjYmNkZGM4Nzk5NTA5MTEyODAzYmU0ZmJmZjYyOGU5MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0
ZSBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgdGlsbCB0aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRl
bnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMv
ZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRpc3Bs
YXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQ6CisKIDIwMjItMDMtMTcgIE1h
dHRlbyBGbG9yZXMgIDxtYXR0ZW9fZmxvcmVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIyOTExMjktcjI5MTEyOCk6IFtXSzEgRVdTXSAzIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvYW5pbWF0aW9uLW1vZGVsL2FuaW1hdGlvbi10eXBlcy8q
IHRlc3RzIGFyZSBhIGNvbnN0YW50IHRleHQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0
CmluZGV4IDUxMWI3YzBjNTRkMzMyMTZiN2M2ZWFmMDQzYTc1YzE2NzY2ZDA0MjcuLmIyOWZlMmY1
MzlhZDk2NmY1MDJhNTNiNzM3OTFlZmUxNGEwZTljYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50
eHQKQEAgLTQsMTEgKzQsMTIgQEAKICAgKHkgMC4wMCkpCiAoc2F2ZSkKIChzZXQtc3RhdGUKLSAg
KGNoYW5nZS1mbGFncyA1MTIpCi0gIChzaGFkb3ctYmx1ciAxMi4wMCkKLSAgKHNoYWRvdy1vZmZz
ZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQotICAoc2hhZG93LWNvbG9yICMwMDAwMDApCi0gIChzaGFk
b3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApKQorICAoY2hhbmdlLWZsYWdzIFtkcm9wLXNoYWRvd10p
CisgIChkcm9wLXNoYWRvdworICAgIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkK
KyAgICAoc2hhZG93LWJsdXIgMTIuMDApCisgICAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQorICAg
IChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApKSkKIChmaWxsLWNvbXBvc2l0ZWQtcmVjdAog
ICAocmVjdCBhdCAoNTAsNTApIHNpemUgMTAweDEwMCkKICAgKGNvbG9yICMwMDAwRkYpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9y
bXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRl
cy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dAppbmRleCAzODZlMzk0MTE4NWYwOWEzYzY4ZWM2YzJh
ZTg4ZGYxMWM3MGIwYTY5Li4xZGNhYmJlN2NlMDViY2JlOTRlMjMzNjRlYmUyOWVhNzZmZjBmNTk4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRy
YW5zZm9ybXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRl
bnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKQEAgLTYsMTEgKzYsMTIgQEAKICAg
KGN0bSB7bT0oKDAuODcsMC41MCkoLTAuNTAsMC44NykpIHQ9KDgxLjcwLC0xOC4zMCl9KSkKIChz
YXZlKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikKLSAgKHNoYWRvdy1ibHVyIDEy
LjAwKQotICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChzaGFkb3ctY29s
b3IgIzAwMDAwMCkKLSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisgIChjaGFuZ2Ut
ZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAgKGRyb3Atc2hhZG93CisgICAgKHNoYWRvdy1vZmZzZXQg
d2lkdGg9MTAgaGVpZ2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAxMi4wMCkKKyAgICAoc2hhZG93
LWNvbG9yICMwMDAwMDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpKQogKGZp
bGwtY29tcG9zaXRlZC1yZWN0CiAgIChyZWN0IGF0ICgwLDApIHNpemUgMTAweDEwMCkKICAgKGNv
bG9yICMwMDAwRkYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXIt
ZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVy
LWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dAppbmRleCBiYzE3YjUxMTQ5OWY4MjU2Yzk5MjkwZGFl
ODYxNGQ0ODk0Y2FmOWNjLi40ZGEwNmIzYzM4NzYyZWQ3MjU2ODU0YzRlM2Y0ZTA3ODNhNjVmYjY1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXkt
bGlzdC1leHBlY3RlZC50eHQKQEAgLTgsOSArOCwxMCBAQAogICAoY29tcG9zaXRlLW9wZXJhdGlv
biBzb3VyY2Utb3ZlcikKICAgKGJsZW5kLW1vZGUgbm9ybWFsKSBleHRlbnQgYXQgKDAsMCkgc2l6
ZSAxMDR4MTA0KQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDMyOTYwKQotICAoZmlsbC1j
b2xvciAjMDAwMEZGKQotICAoc3Ryb2tlLXN0eWxlIDApCisgIChjaGFuZ2UtZmxhZ3MgW2ZpbGwt
YnJ1c2gsIHN0cm9rZS1zdHlsZSwgc2hvdWxkLWFudGlhbGlhc10pCisgIChmaWxsLWJydXNoCisg
ICAgKGNvbG9yICMwMDAwRkYpKQorICAoc3Ryb2tlLXN0eWxlIE5PLVNUUk9LRSkKICAgKHNob3Vs
ZC1hbnRpYWxpYXMgMCkpCiAoZHJhdy1yZWN0CiAgIChyZWN0IGF0ICgwLDApIHNpemUgMTA0eDIp
Cg==
</data>
<flag name="commit-queue"
          id="482937"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455077</attachid>
            <date>2022-03-18 01:32:14 -0700</date>
            <delta_ts>2022-03-18 02:44:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220318013213.patch</filename>
            <type>text/plain</type>
            <size>193591</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uZGY2MzAzNGJlZDU1NjdhZjY3Y2EwYzExZjc2OGEz
NmIwZTU4NDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGN1bGF0ZURyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBseVNoYWRvd09mZnNldFdvcmthcm91
bmRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDR1NoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENHOjpzdHJva2VFbGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJy
dXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlQ1RNKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9r
ZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0lzQ2xlYXJlZCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVt
cEZvckZsYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU6OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNo
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29udGFpbnNPbmx5SW5saW5lU3Rh
dGVDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JUcmFuc3Bh
cmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JTYXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
U2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
ZXh0ZW50RnJvbUxvY2FsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlk
VXBkYXRlU3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZmlsbFJlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1JlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0xpbmUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdv
b2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBz
aG91bGQgYWx3YXlzIGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2Vh
YWQwNmJlN2Y4Y2VlMDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUw
Mjc5NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2Ug
R3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUg
YXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpyZWNvcmRTZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlB
Y3Rpdml0eUluTWFuYWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4u
ZWJjYjUzMTdjZDdmMzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xNTcxLDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExv
Y2FsaXplQXhpc05hbWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlSW1hZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMz
OWZmOGYyMjRlZjZhODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRl
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQw
Zjg5Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIy
ZWZkYzJjZWRkNTNmYzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2
NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBG
aWx0ZXJSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9t
YWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2
NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4
Rjc1MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcy
RkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8q
IFNvdXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NG
RTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3
NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBK
U01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU3OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07
CkBAIC0xMTQyOCw2ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3RBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyRkIyMzk2MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2gu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMg
LyogU291cmNlQnJ1c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNl
QnJ1c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjkxNTIsNiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAv
KiBTaGFkb3dCbHVyLmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hh
ZG93Qmx1ci5oICovLAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2Nh
bGl6ZUF4aXNOYW1lcy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3Vy
Y2VCcnVzaC5jcHAgKi8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJy
dXNoLmggKi8sCiAJCQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwICovLAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZm
ZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBE
NEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8q
IFNvdXJjZUFscGhhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NE
QUMgLyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdB
OUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REYxMzUwOTI0QzlGQ0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNj
Yjc4ODExN2RlNjkzOGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiB0ZXh0UnVuLCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICog
bWFza1JlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwotICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7Ci0gICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRy
b3BTaGFkb3coKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3Qp
OwotICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0g
ICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAg
ICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAg
ICAgICBjLT5jbGlwKHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0g
b2Zmc2V0OworICAgICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAg
ICAgICAgICBjLT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0Nv
bG9yLCBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93
KGRyb3BTaGFkb3cub2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29s
b3IsIFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQog
ICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZh
NGNiMmEyLi4xYmQ2NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJl
dHVybiBtX3ByaW1hcnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lk
IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0
ZVN0YXRlKCkgaW5zdGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAg
IC8vIGFyZSBhbHNvIGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGUsIHNvIHRoYXQgY29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0
aGF0IHJlYWRzIGZyb20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3By
aW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlD
b250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51
cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0
YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1Mp
ICYmICFVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0
MmI3Mzc3NzI3YzExYTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQy
ZTM2N2RkMzdmMDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9T
KFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKiBkZXByZWNhdGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5k
ZXggMjVhM2QzZmU4NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgy
MmYxMTNkYmJiMDYxNDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwx
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250
JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQo
KTsKIAotICAgIHZvaWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0g
bnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsK
KyAgICB2b2lkIHVwZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQg
dXBkYXRlU3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIHsKICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAg
Tm8KICAgICB9OwotICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hh
ZG93JiwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYg
IVBMQVRGT1JNKFdJTikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTEx
MSwyNyArMTExLDEzIEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxU
ZXh0TWF0cml4OwogCiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsK
LSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBn
cmFkaWVudDsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNm
b3JtOwotICAgICAgICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0g
ICAgICAgIFN0eWxlIGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAg
ICAgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VC
cnVzaDsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hh
ZG93U3RhdGUgewotICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZs
b2F0IGJsdXIgeyAwIH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJv
b2wgaWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRv
d1N0YXRlIHNoYWRvdzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBi
b29sIGlnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmln
aW5hbFN0YXRlOwotICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJj
OGEzZTg2My4uMDMxMDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC00Myw2ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2VGbGFncyYgY2hhbmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQor
CiBHcmFwaGljc0NvbnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0
YWNrLmlzRW1wdHkoKSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmUoKQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0Ojp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7
Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShzdGF0ZSwgZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0
RHJhd2luZ1N0YXRlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAt
OTMsODQgKzk4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxw
dHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBT
aGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7Ci0gICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVz
TW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
LXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUu
c2hhZG93Qmx1ciA9IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAg
bV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBt
X3N0YXRlLnNoYWRvd09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAg
IGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0g
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJl
ZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsK
LSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17
Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwot
ICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9
OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50
Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAg
bV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklY
TUU6IGFsc28gZmlsbCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3Vu
dDsKQEAgLTQ5MSwxMyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRG
aWxsQ29sb3Iob2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRl
T3BlcmF0aW9uQ2hhbmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVU
b1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0
cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRo
cywgd2UgYWRkIGluIDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0
IGFyaXRobWV0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZk
M2ZlZi4uZmIyMzdhNTBlOWIwNTk0MmM5OTI5NWM2MTY3MzhiY2U0ZWU1MjZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTY0LDkgKzY0LDggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFz
cyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29u
dGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlRmxhZ3MmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0Nv
bnRleHQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtODAsODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENv
bnRleHQgU3RhdGUKIAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVz
cykgeyBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0K
LSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9r
ZVRoaWNrbmVzczsgfQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHls
ZSkgeyBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0K
LQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsK
LSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUNvbG9yOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4o
UmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmls
bENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAg
IEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVz
aC5ncmFkaWVudCgpOyB9CisgICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmZpbGxCcnVzaC5wYXR0ZXJuKCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1
c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNo
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYg
cGF0dGVybikgeyBtX3N0YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9
IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VU
cmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgPSB7IH0pOwotICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0Rmls
bFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFu
Z2UpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZp
bGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0
YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ry
b2tlQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIFBhdHRlcm4q
IHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRl
cm4oKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVz
aCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsg
bV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYm
IGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7
IG1fc3RhdGUuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNm
b3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tl
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRT
dHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwot
ICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0
dGVybi5nZXQoKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tl
U3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBz
aGFkb3dCbHVyKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAg
ICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCku
Y29sb3I7IH0KKyAgICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNo
YWRvdykgeyBtX3N0YXRlLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQs
IGZsb2F0IGJsdXJSYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBz
aGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hh
ZG93KHsgb2Zmc2V0LCBibHVyUmFkaXVzLCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQor
ICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9v
bCBoYXNWaXNpYmxlU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJs
ZSgpOyB9CisgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNo
YWRvdygpLmlzQmx1cnJlZCgpOyB9CisgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVy
biBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBv
c2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21w
b3NpdGVNb2RlKCkub3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBv
c2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9z
aXRlTW9kZShjb21wb3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2Rl
KHsgb3BlcmF0aW9uLCBibGVuZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9
IHsgfSk7Ci0gICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmFscGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0
YXRlLnNldEFscGhhKGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cykgeyBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtczsg
fQorICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01v
ZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4
dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgCisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQor
ICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFs
aWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hh
bmdlKTsgfQogICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNo
b3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxp
YXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHMgPSBzaG91bGRTbW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
U21vb3RoRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9
CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7
IG1fc3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhl
bC1xdWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxp
Z25pbmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRv
IHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lk
IHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29s
IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5z
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsg
fQotICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAg
IHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9
Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7IH0KLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0
RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdM
dW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBi
b29sIGRyYXdMdW1pbmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5h
bmNlTWFzazsgfQotCi0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkgeyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
OyB9Ci0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwg
U2hhZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAg
IGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29s
b3IuaXNWaXNpYmxlKCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93
T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAg
Ym9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygp
ICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2so
Ym9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRy
YXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29s
IHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJr
QXBwZWFyYW5jZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBz
ZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0
VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5t
ZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERy
YXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkg
Y2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdh
dGUgY2hhbmdlcwogICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAg
dmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCByZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkz
NTQwODY2NGMyNzZmY2UzZDU5OWU2MTRmOWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1
NzdhNTcwN2I5N2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgog
Ci0jaW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
ZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVy
dHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmxh
Zyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAg
OiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0g
ICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFw
aGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3Mm
IGNoYW5nZUZsYWdzKQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdy
YXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1H
cmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3ND
b250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1
bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIGZsYWdzKQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2
ZUNoYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQg
PSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0
cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3Jh
ZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xv
ciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdy
YWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0K
LQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAg
ICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9
IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hh
ZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNr
bmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4
dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAg
IHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1
bGUgPSBzdGF0ZS5maWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHBy
aW1pdGl2ZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ry
b2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0
ZS5hbHBoYTsKKyAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZl
Q2hhbmdlRmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNv
bXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5k
TW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlh
bGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZv
bnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
Ci0gICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFz
a0NoYW5nZSkpCi0gICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KIAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5n
ZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVy
dHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8
IHRoaXMtPipwcm9wZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hh
bmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0
YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxl
LCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7
CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0
eWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHls
ZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMsICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0g
c3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0Fw
cGVhcmFuY2UpOwogI2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQ
YXR0ZXJuKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFu
Z2UsIGZpbGxHcmFkaWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBh
dHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0
YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1f
c3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0
YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxh
Z3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25l
c3MpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5n
ZSwgdGV4dERyYXdpbmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxDb2xvckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTdHJva2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAg
ICAgICAmJiAobV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciB8fCBtX3N0YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAg
IGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KFNob3VsZEFudGlhbGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9u
dHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19G
T1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VE
YXJrQXBwZWFyYW5jZSk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoKSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9
IDE7CiAjZW5kaWYKLQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
c3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3Mp
OwotCi0gICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1v
dmUoc3Ryb2tlRmxhZ3MpOwotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGll
bnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAg
IGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdz
LnJlbW92ZShmaWxsRmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNo
YW5nZU5hbWVzW10gPSB7CisgICAgICAgICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVs
ZSIsCisKKyAgICAgICAgInN0cm9rZS1icnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNz
IiwKKyAgICAgICAgInN0cm9rZS1zdHlsZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwK
KyAgICAgICAgImRyb3Atc2hhZG93IiwKKworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1h
Z2UtaW50ZXJwb2xhdGlvbi1xdWFsaXR5IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwK
KworICAgICAgICAic2hvdWxkLWFudGlhbGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZv
bnRzIiwKKyAgICAgICAgInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAg
ICJzaGFkb3dzLWlnbm9yZS10cmFuc2Zvcm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1h
c2siCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmst
YXBwZWFyYW5jZSIKKyNlbmRpZgorICAgIH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9y
RmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxh
Z3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhbmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYg
bWFzaykpOwogCi0gICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0
ZUNoYW5nZU5hbWVzW2luZGV4XTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0
YXRlLnN0cm9rZVBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxQYXR0ZXJuKCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwg
bV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRUZXh0RHJhd2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNv
bG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0
YXRlLmZpbGxDb2xvcik7CisgICAgYXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8g
R3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7Cisg
ICAgICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KG5hbWUsIHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHls
ZSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAK
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1
bGUpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAg
ICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFD
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1
bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OlN0cm9rZUJydXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVt
cChDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5n
ZTo6U3Ryb2tlU3R5bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1v
ZGUpOworICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNo
YWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxp
YXMobV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZv
bnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0
LnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dERyYXdMdW1pbmFuY2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkobV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1w
KENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6YWxwaGEsICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdl
OjpBbHBoYSkpOworICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0
YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBk
dW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hh
bmdlOjpUZXh0RHJhd2luZ01vZGUpKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMs
ICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOwor
ICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFt
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cywgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAg
ICBkdW1wKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBw
ZWFyYW5jZShtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNl
RGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFy
a0FwcGVhcmFuY2UsICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSkpOwogI2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBj
aGFuZ2UpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZs
YWdzLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdHJva2UtZ3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVy
biIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGll
bnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJm
aWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0Js
dXIpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNo
YWRvd09mZnNldCk7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9z
dGF0ZS5zaGFkb3dDb2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2Ut
bGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNN
b2RlOjpMZWdhY3kpOwotICAgIH0KLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRy
YXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRl
LnN0cm9rZUNvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBt
X3N0YXRlLmZpbGxSdWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
YWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxl
bmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFu
dGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInNob3VsZC1zbW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNl
TWFzayk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1f
c3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VO
YW1lKGNoYW5nZSk7CisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVD
aGFuZ2UpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0g
ICAgcmV0dXJuIHRzOworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFm
ZGJmMDdmOGE1OTU5NTk2Ny4uYTkyMTI3OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUg
IlNvdXJjZUJydXNoLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgR3JhZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRv
cj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90
IHsKLSAgICAgICAgU3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAwLAotICAgICAgICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDEsCi0gICAgICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMiwKLSAgICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAzLAotICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDQsCi0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSAgICAgICAgICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01v
ZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRp
YWxpYXNDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRT
bW9vdGhGb250c0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAg
ICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAg
IGVudW0gY2xhc3MgQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMSwKKworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8
IDIsCisgICAgICAgIFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAg
ICAgU3Ryb2tlU3R5bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBv
c2l0ZU1vZGUgICAgICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAg
ICAgICAgICAgICAgID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8
PCA4LAorICAgICAgICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAg
ICAgICAgU2hvdWxkQW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hv
dWxkU21vb3RoRm9udHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgICAgID0gMSA8PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0g
MSA8PCAxNCwKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJr
QXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1
c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hh
bmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VG
bGFncyBjaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRp
ZEFwcGx5Q2hhbmdlcygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0Rmls
bEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZp
bGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAg
IHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3Ig
fSk7IH0KKyAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdy
YWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFk
ZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7
IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1
bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSwgZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdy
YWRpZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0
U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNo
KTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
QnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkg
eyBzdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zv
cm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNl
dFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQ
YXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VC
cnVzaCk7IH0KKworICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNr
bmVzcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lk
IHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U3Ryb2tlU3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0
cm9rZVN0eWxlKTsgfQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUg
Y29tcG9zaXRlTW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2
b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgZHJvcFNoYWRvdyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxw
aGEpOyB9CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAg
dm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdN
b2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9p
ZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzLCBzaG91bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250
cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3Vs
ZFNtb290aEZvbnRzKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJh
d0x1bWluYW5jZU1hc2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1h
c2spOyB9CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURh
cmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpVc2VEYXJrQXBwZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSwgdXNlRGFya0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGZpbGxHcmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47Cisg
ICAgYm9vbCBoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKKyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKLSAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENv
bG9yIGZpbGxDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBz
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAg
IFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZp
bGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJv
a2VCcnVzaCB7IENvbG9yOjpibGFjayB9OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAg
fTsKLSAgICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9Owot
CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRS
dWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9k
ZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNv
dXJjZU92ZXIgfTsKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwg
fTsKKyAgICAKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVy
YXRvcjo6U291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRy
b3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5
OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hh
ZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRB
bnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29s
IHNob3VsZEFudGlhbGlhcyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsg
dHJ1ZSB9OworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJh
d0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
Ci0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSB7IGZhbHNlIH07CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMtPipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy0+KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChj
aGFuZ2UpOworICAgIH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3Rh
dGUoc3RhdGUpCi0gICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAo
dGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRk
KGNoYW5nZSk7CiAgICAgfQorfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBj
b25zdDsKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsm
XShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsK
KyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBl
bmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0g
ICAgCi0gICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIg
PDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19
OworICAgIGVuY29kZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxs
UnVsZSwgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxS
dWxlKTsKKworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKwor
ICAgIGVuY29kZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9w
U2hhZG93KTsKKworICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdp
bmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2lu
Z01vZGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29k
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFu
Y2UpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJv
cGVydHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2Up
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBl
ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxQcm9wZXJ0eVR5cGU+IHZhbHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHN0YXRlLipwcm9wZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
IAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFn
cz4gY2hhbmdlRmxhZ3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNo
YW5nZUZsYWdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgc3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25l
c3MpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VTdHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhh
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxk
QW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSk7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCAr
MjU5LDI3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwK
LSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5h
bmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxl
LAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU1vZGUsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkRyb3BTaGFkb3csCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6QWxwaGEsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlRleHREcmF3aW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRz
LAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlm
CiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuY3BwCmluZGV4IDE1ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0Yjdh
OTNhYjQuLjEyZTRmZmJmMDg0NzM5MzkzOGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBA
IC0xMzYsNiArMTM2LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxl
bmRNb2RlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29t
cG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdGlvbiIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoImJsZW5kLW1vZGUiLCBjb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cm9wU2hhZG93JiBkcm9wU2hhZG93KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9m
ZnNldCIsIGRyb3BTaGFkb3cub2Zmc2V0KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1i
bHVyIiwgZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRv
dy1jb2xvciIsIGRyb3BTaGFkb3cuY29sb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
cy11c2UtbGVnYWN5LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRp
dXNNb2RlOjpMZWdhY3kpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkpCit7CisgICAgc3dpdGNoIChpbnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRl
cnBvbGF0ZToKKyAgICAgICAgdHMgPDwgIkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwg
IkxPVyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1l
ZGl1bToKKyAgICAgICAgdHMgPDwgIk1FRElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxl
KSB7CkBAIC0xODIsNCArMjIwLDQyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIExpbmVKb2luIGpvaW5TdHlsZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQor
eworICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0
cm9rZToKKyAgICAgICAgdHMgPDwgIk5PLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3Ryb2tlU3R5bGU6OlNvbGlkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tF
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgor
ICAgICAgICB0cyA8PCAiRE9UVEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0Ui
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6Cisg
ICAgICAgIHRzIDw8ICJET1VCTEUtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dHJva2VTdHlsZTo6V2F2eVN0cm9rZToKKyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkK
K3sKKyAgICBzd2l0Y2ggKHRleHREcmF3aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdN
b2RlOjpGaWxsOgorICAgICAgICB0cyA8PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVGV4dERyYXdpbmdNb2RlOjpTdHJva2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgKaW5kZXggZGVjNDM0NzAyY2Y3NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcy
OTc4MzFhMmJmMzQ2OGNhZWM4ZjUyMDBmMDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVu
ZE1vZGUgOiB1aW50OF90IHsKICAgICBQbHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0
ZU1vZGUgeworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUg
YmxlbmRNb2RlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90
aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24g
JiYgYmxlbmRNb2RlID09IG90aGVyLmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0
ZU1vZGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
b3BlcmF0aW9uOworICAgIGVuY29kZXIgPDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9w
ZXJhdG9yPiBvcGVyYXRpb247CisgICAgZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFv
cGVyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAg
IGlmICghYmxlbmRNb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyAqb3BlcmF0aW9uLCAqYmxlbmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50
TWFya2VyTGluZVN0eWxlIHsKICAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAg
ICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2
ICsxNDksNjcgQEAgc3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUs
ICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1
ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8g
SXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNo
YWRvd1JhZGl1c01vZGUgOiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKwor
c3RydWN0IERyb3BTaGFkb3cgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1
clJhZGl1cyB7IDAgfTsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJh
ZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0Js
dXJyZWQoKSBjb25zdCB7IHJldHVybiBpc1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAg
Ym9vbCBoYXNPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJs
ZSgpICYmICFvZmZzZXQuaXNaZXJvKCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJv
cFNoYWRvdyYgYikKK3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVy
UmFkaXVzID09IGIuYmx1clJhZGl1cyAmJiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNN
b2RlID09IGIucmFkaXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RHJvcFNoYWRvdzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBvZmZzZXQ7CisgICAgZW5jb2RlciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwg
Y29sb3I7CisgICAgZW5jb2RlciA8PCByYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorc3RkOjpvcHRpb25hbDxEcm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0Owor
ICAgIGRlY29kZXIgPj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAg
ICBkZWNvZGVyID4+IGJsdXJSYWRpdXM7CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7Cisg
ICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNN
b2RlOworICAgIGRlY29kZXIgPj4gcmFkaXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpi
bHVyUmFkaXVzLCAqY29sb3IsICpyYWRpdXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFk
aWVudFNwcmVhZE1ldGhvZCA6IHVpbnQ4X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAt
MTU4LDEzICsyNTcsNiBAQCBlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3Qgewog
fTsKIHVzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9k
ZT47CiAKLS8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBh
bmQgLXdlYmtpdC1ib3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2Yg
cmFkaWkgPiA4cHguCi1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBE
ZWZhdWx0LAotICAgIExlZ2FjeQotfTsKLQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhh
YmV0aWNUZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwx
NCBAQCBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29t
cG9zaXRlTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25R
dWFsaXR5KTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBMaW5lQ2FwKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUp
OworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFRleHREcmF3aW5nTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3Yzlh
MTFiNDIyNDY4ODVlLi42YzMzMzM5NjI3MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBo
aWNzQ29udGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWlu
dEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50
ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29u
cyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsg
fQogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNp
ZiBVU0UoQ0cpCiAgICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
aW5kZXggYmIxMzhiNTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFh
YmZjZTM4MDgxODNhM2IyMzFmYmNlMGZmYjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNo
YWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQog
Ci1TaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkKLSAgICA6IG1fY29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMo
c3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRl
LnNoYWRvd09mZnNldCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BT
aGFkb3cmIGRyb3BTaGFkb3csIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBt
X2NvbG9yKGRyb3BTaGFkb3cuY29sb3IpCisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5i
bHVyUmFkaXVzLCBkcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hh
ZG93Lm9mZnNldCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3Jy
ZWN0bHkgcmVuZGVycyBzaGFkb3dzIHdpdGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0v
ODEwMzQ0Mj4pLAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVo
YXZpb3IgZm9yIGNhbnZhcyBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5z
aGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBm
bG9hdCBzaGFkb3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7
CisgICAgaWYgKGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdh
Y3kpIHsKKyAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRy
b3BTaGFkb3cuYmx1clJhZGl1cyk7CiAgICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShz
aGFkb3dCbHVyLCBzaGFkb3dCbHVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3
ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhLi44ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2
MTc3MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlOworc3RydWN0IERyb3BTaGFkb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3Mg
U2hhZG93Qmx1ciB7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIo
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
ZmFsc2UpOwotICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1z
ID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCcnVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCcnVzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUw
NzM1MjQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJydXNoLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTb3VyY2VCcnVzaC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpT
b3VyY2VCcnVzaChjb25zdCBDb2xvciYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1
c2gpCisgICAgOiBtX2NvbG9yKGNvbG9yKQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkK
K3sKK30KKworY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRy
YW5zZm9ybT4gaWRlbnRpdHk7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRl
bnRpdHkuZ2V0KCk7CisKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVz
aDo6TG9naWNhbEdyYWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3Jh
ZGllbnQtPnNwYWNlVHJhbnNmb3JtOworCisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQor
CitHcmFkaWVudCogU291cmNlQnJ1c2g6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
YnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9
IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisg
ICAgICAgIHJldHVybiBncmFkaWVudC0+Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1BhdHRlcm4qIFNvdXJjZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0
ZXJuID0gc3RkOjpnZXRfaWY8UmVmPFBhdHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAg
ICByZXR1cm4gcGF0dGVybi0+cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
U291cmNlQnJ1c2g6OnNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVz
aDo6TG9naWNhbEdyYWRpZW50IHsgV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0g
fTsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKQoreworICAgIG1fYnJ1c2ggPSB7IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYg
YnJ1c2gpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOwor
CisgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImdyYWRpZW50IiwgZ3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVy
biA9IGJydXNoLnBhdHRlcm4oKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwg
cGF0dGVybik7CisKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5YjlmYWU1NDk0MzQ5ZGI1NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5o
CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgorI2luY2x1ZGUgIlBhdHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTb3VyY2VCcnVzaCB7CitwdWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAg
ICAgc3RydWN0IExvZ2ljYWxHcmFkaWVudCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdy
YWRpZW50OworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisg
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxMb2dpY2FsR3JhZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAg
IH07CisKKyAgICAgICAgc3RkOjp2YXJpYW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+
PiBicnVzaDsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAg
ICBTb3VyY2VCcnVzaCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVz
aChjb25zdCBDb2xvciYsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOwor
CisgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAg
IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBt
X2JydXNoOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBzcGFjZVRyYW5zZm9ybSA9IHsgfSk7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmKTsKKworICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAm
JiBtX2NvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVy
Jik7CisKK3ByaXZhdGU6CisgICAgQ29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAg
IHN0ZDo6b3B0aW9uYWw8QnJ1c2g+IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBT
b3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5n
cmFkaWVudC5wdHIoKSA9PSBiLmdyYWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0g
Yi5zcGFjZVRyYW5zZm9ybTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3Vy
Y2VCcnVzaDo6QnJ1c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihhLmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJy
dXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBiR3JhZGllbnQgPSBzdGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudD4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQg
PT0gKmJHcmFkaWVudDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogYlBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1
c2gmIGIpCit7CisgICAgcmV0dXJuIGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgp
ID09IGIuYnJ1c2goKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8
PCBzcGFjZVRyYW5zZm9ybTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNo
OjpCcnVzaDo6TG9naWNhbEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdy
YWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNw
YWNlVHJhbnNmb3JtOworICAgIGlmICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNl
VHJhbnNmb3JtIH0gfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBX
VEY6OnN3aXRjaE9uKGJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYg
Z3JhZGllbnQpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAg
ICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNv
dXJjZUJydXNoOjpCcnVzaD4gU291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29k
ZXIgPj4gaGFzR3JhZGllbnQ7CisgICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBn
cmFkaWVudCA9IExvZ2ljYWxHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAo
IWdyYWRpZW50KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpncmFkaWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVy
biA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9
IH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7Cisg
ICAgZW5jb2RlciA8PCBtX2JydXNoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxTb3VyY2VCcnVzaD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4g
Y29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29k
ZXIgPj4gYnJ1c2g7CisgICAgaWYgKCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBTb3VyY2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9
CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBT
b3VyY2VCcnVzaCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cAppbmRleCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi5lODQ4YzU2
YzJjNjQzY2U0Y2QzYzQyYjRjYjg1NzcxMGUxYTIyOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
QEAgLTU1OSw0MiArNTU5LDQyIEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAg
ICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRl
cm4pIHsKLSAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVy
bi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1
dG8gZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBh
dHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0
YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdl
ID0gZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0
ZXJuSW1hZ2Uuc2l6ZSgpOwotICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRY
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZ
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZp
bGxHcmFkaWVudCkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAg
ICAgICAgcGF0dGVybi50cmFuc2Zvcm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNm
b3JtKCk7CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7
CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAg
fSBlbHNlIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgp
KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4o
MSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlm
IChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9
IHN0YXRlLmZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1
c3RlZCA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bG9yID0gc3RhdGUuZmlsbENvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5j
b2xvcigpOwogfQogCiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAg
ICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0
YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0o
KSkpOwotICAgIGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRp
ZW50LmJhc2UgPSBzdGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJu
ID0gc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgp
KSk7CisgICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNo
LmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRl
LmFscGhhLCBzdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihz
dGF0ZS5hbHBoYSwgc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAg
Y29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hh
ZG93U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAs
IGNvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cu
b2Zmc2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBj
b2xvcihzdGF0ZS5kcm9wU2hhZG93LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhh
KQotICAgICwgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Ip
CisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3Bl
cmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhN2FmMGNlYjUyNDkwNDA0MWVlMTJkNTFmODlj
NmRmMTZjYjM2MDM3Li5mZTczOGJkZjc3ZThjZTc2MmFjYzlhMGYwZjg0ZGQ4MzYxYzY5YzExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBh
dXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0dseXBocygqY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6
U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwg
cG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zm
c2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwKKyAgICAgICAgc3RhdGUu
dGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cu
b2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nTW9k
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKaW5kZXggOTAwOTZhYzY0NTIyNGRiZmRjNjBiZmE2Y2Fj
YWQwMzA3NmNiMjk3ZC4uODU3Y2VkMWEyNzAzNzYxYjFkMzc4M2JkZWUzMDgzNzQ4NzM2MWY4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGll
bnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhZGllbnRDYWlyby5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBSZWZQdHI8Y2Fpcm9fcGF0dGVy
bl90PiBHcmFkaWVudDo6Y3JlYXRlUGF0dGVybihmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgQWZm
aW5lVAogCiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4o
MS4wLCBjb250ZXh0LnN0YXRlKCkuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1
dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4wLCBjb250ZXh0LmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOwogICAgIGlmICghcGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYzMyMzA0NDUzNTFiMDNmMmFhODczNmFlZTJi
Y2U3OGJjNDM2MWY0OS4uZTRlOGY0NjgwZTExOGZhYjIwMTI2ZTgzOTU0NWE0MDMxNzI2ZmE2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjg0LDI4ICsyODQsMzAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAg
Q2Fpcm86OnRyYW5zbGF0ZSgqdGhpcywgeCwgeSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIENhaXJvOjpTdGF0
ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCi0g
ICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKQor
ICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U3Ryb2tlU3R5bGUpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVN0eWxl
KCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93KSkgewogICAgICAg
ICBpZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgICAgIC8vIE1l
YW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNp
bmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKLSAgICAgICAgICAg
IGF1dG8mIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgICAgIG1f
c3RhdGUuc2hhZG93T2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNl
dC5oZWlnaHQoKSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJv
cFNoYWRvdy5vZmZzZXQ7CisgICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zmc2V0ID0g
eyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVP
cGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUp
OworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uKSkKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRD
b21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBz
dGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5jaGFu
Z2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFs
aWFzKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMoKnRoaXMsIHN0
YXRlLnNob3VsZEFudGlhbGlhcyk7CisKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggNTY0NjFjMTU5
YTU4M2M4OWM2MWU4ZjAyZTRlMGJlZTdiMDU5MzJlZi4uNzMyMTQ3MGZjNGYxYzdmYjFmM2FmN2Ji
NDY4ZWFhMTdjNWUxZDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFs
OwogICAgIEdyYXBoaWNzQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5h
bDsKIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgdm9pZCBkaWRV
cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCiAgICAgdm9pZCBzZXRMaW5lQ2Fw
KExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5Jiwg
ZmxvYXQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDMyNDVjNjAwNDMxNTUyZDUxM2I3
NGVlYmMwOWYzMThlZWMzZGQ3MmEuLmY5ZmVhYjRlMjZmMjk4MzM4MWRjZGRhNGQ1NGM1MGI3NTM4
ZTc4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE4NSwxMyArMTg1LDE0IEBAIHN0YXRpYyB2
b2lkIHNldENHQmxlbmRNb2RlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlCiB9CiAKIEdyYXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRleHRD
RyhDR0NvbnRleHRSZWYgY2dDb250ZXh0KQorICAgIDogR3JhcGhpY3NDb250ZXh0KHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTdHJva2VCcnVzaCwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
VGhpY2tuZXNzIH0pCiB7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0
KTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIg
c3RhdGUuCi0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UgfSk7CisgICAg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7CiAgICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5ID0gY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4dEdldEludGVycG9sYXRp
b25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKQEAgLTMzOCw3ICszMzksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2
ZUltYWdlLCBjb25zdCBGbG9hdFNpegogI2VuZGlmCiAKICAgICBhdXRvIG9sZENvbXBvc2l0ZU9w
ZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgYXV0byBvbGRCbGVuZE1vZGUgPSBi
bGVuZE1vZGVPcGVyYXRpb24oKTsKKyAgICBhdXRvIG9sZEJsZW5kTW9kZSA9IGJsZW5kTW9kZSgp
OwogICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3Io
KSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBNYWtlIHRoZSBvcmlnaW4gYmUgYXQg
YWRqdXN0ZWREZXN0UmVjdC5sb2NhdGlvbigpCkBAIC01NTUsMTMgKzU1NiwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiB7Ci0gICAgaWYgKCFt
X3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKCFzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQo
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IEFmZmluZVRyYW5zZm9ybShn
ZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4g
PSBtX3N0YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNl
Q1RNKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IHN0cm9rZVBhdHRlcm4oKS0+Y3JlYXRl
UGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJu
KQogICAgICAgICByZXR1cm47CiAKQEAgLTU3NCwxMyArNTc1LDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6
OmFwcGx5RmlsbFBhdHRlcm4oKQogewotICAgIGlmICghbV9zdGF0ZS5maWxsUGF0dGVybikKKyAg
ICBpZiAoIWZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJl
ZiBjZ0NvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNl
clRvQmFzZUNUTSA9IEFmZmluZVRyYW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkp
OwogCi0gICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5jcmVh
dGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CisgICAgYXV0byBwbGF0Zm9ybVBhdHRl
cm4gPSBmaWxsUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7
CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTkxLDEx
ICs1OTIsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybigpCiAg
ICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRlcm4oY2dDb250ZXh0LCBwbGF0Zm9ybVBhdHRlcm4uZ2V0
KCksICZwYXR0ZXJuQWxwaGEpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJh
d2luZ01vZGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDR1BhdGhEcmF3aW5n
TW9kZSYgbW9kZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9kZShjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHUGF0aERyYXdpbmdNb2RlJiBtb2RlKQogewot
ICAgIGJvb2wgc2hvdWxkRmlsbCA9IHN0YXRlLmZpbGxQYXR0ZXJuIHx8IHN0YXRlLmZpbGxDb2xv
ci5pc1Zpc2libGUoKTsKLSAgICBib29sIHNob3VsZFN0cm9rZSA9IHN0YXRlLnN0cm9rZVBhdHRl
cm4gfHwgKHN0YXRlLnN0cm9rZVN0eWxlICE9IE5vU3Ryb2tlICYmIHN0YXRlLnN0cm9rZUNvbG9y
LmlzVmlzaWJsZSgpKTsKLSAgICBib29sIHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxlID09IFdp
bmRSdWxlOjpFdmVuT2RkOworICAgIGJvb2wgc2hvdWxkRmlsbCA9IGNvbnRleHQuZmlsbFBhdHRl
cm4oKSB8fCBjb250ZXh0LmZpbGxDb2xvcigpLmlzVmlzaWJsZSgpOworICAgIGJvb2wgc2hvdWxk
U3Ryb2tlID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkgfHwgKGNvbnRleHQuc3Ryb2tlU3R5bGUo
KSAhPSBOb1N0cm9rZSAmJiBjb250ZXh0LnN0cm9rZUNvbG9yKCkuaXNWaXNpYmxlKCkpOworICAg
IGJvb2wgdXNlRU9GaWxsID0gY29udGV4dC5maWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2Rk
OwogCiAgICAgaWYgKHNob3VsZEZpbGwpIHsKICAgICAgICAgaWYgKHNob3VsZFN0cm9rZSkgewpA
QCAtNjI0LDkgKzYyNSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdQYXRoKGNvbnN0
IFBhdGgmIHBhdGgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlID0gbV9zdGF0ZTsKIAotICAgIGlmIChzdGF0ZS5maWxsR3JhZGllbnQgfHwgc3RhdGUuc3Ry
b2tlR3JhZGllbnQpIHsKKyAgICBpZiAoZmlsbEdyYWRpZW50KCkgfHwgc3Ryb2tlR3JhZGllbnQo
KSkgewogICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFueSBvcHRpbWl6ZWQgd2F5IHRvIGZpbGwg
JiBzdHJva2UgYSBwYXRoIHVzaW5nIGdyYWRpZW50cwogICAgICAgICAvLyBGSVhNRTogQmUgc21h
cnRlciBhYm91dCB0aGlzLgogICAgICAgICBmaWxsUGF0aChwYXRoKTsKQEAgLTYzNCwxMyArNjM0
LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pCisg
ICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKLSAgICBp
ZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAg
ICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKIAogICAgIENHUGF0aERyYXdpbmdNb2RlIGRyYXdpbmdN
b2RlOwotICAgIGlmIChjYWxjdWxhdGVEcmF3aW5nTW9kZShzdGF0ZSwgZHJhd2luZ01vZGUpKSB7
CisgICAgaWYgKGNhbGN1bGF0ZURyYXdpbmdNb2RlKCp0aGlzLCBkcmF3aW5nTW9kZSkpIHsKICNp
ZiBIQVZFKENHX0NPTlRFWFRfRFJBV19QQVRIX0RJUkVDVCkKICAgICAgICAgQ0dDb250ZXh0RHJh
d1BhdGhEaXJlY3QoY29udGV4dCwgZHJhd2luZ01vZGUsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51
bGxwdHIpOwogI2Vsc2UKQEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgewor
ICAgIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHRoaXMtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAg
ICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRo
LmZhc3RCb3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBn
ZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKQEAgLTY3MCwzMyArNjcwLDMzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obGF5ZXJDb250ZXh0LCAtcmVjdC54KCksIC1yZWN0Lnko
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAg
ICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJDb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgp
KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUu
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0
Q1RNKGxheWVyQ29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAg
ICAgICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAg
ICAgIENHQ29udGV4dEVPQ2xpcChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsKIAotICAgICAgICAgICAg
bV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBm
aWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRE
cmF3TGF5ZXJJblJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAg
ICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAg
ICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBmaWxs
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkg
PT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNv
bnRleHQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAo
Y29udGV4dCk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhp
cyk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikK
KyAgICBpZiAoZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogI2lm
IEhBVkUoQ0dfQ09OVEVYVF9EUkFXX1BBVEhfRElSRUNUKQogICAgIENHQ29udGV4dERyYXdQYXRo
RGlyZWN0KGNvbnRleHQsIGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQgPyBrQ0dQYXRo
RU9GaWxsIDoga0NHUGF0aEZpbGwsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIpOwpAQCAt
NzE3LDcgKzcxNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3Qg
UGF0aCYgcGF0aCkKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0
KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlmIChhdXRvIHN0
cm9rZUdyYWRpZW50ID0gdGhpcy0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFz
U2hhZG93KCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcGF0aC5mYXN0Qm91bmRp
bmdSZWN0KCk7CiAgICAgICAgICAgICBmbG9hdCBsaW5lV2lkdGggPSBzdHJva2VUaGlja25lc3Mo
KTsKQEAgLTc0Miw4ICs3NDIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29u
dGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNl
UGF0aFdpdGhTdHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVy
Q29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAg
ICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29u
dGV4dCk7CiAKICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0Lngo
KSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYo
cmVjdC55KCkgLSBsaW5lV2lkdGgpOwpAQCAtNzU0LDEzICs3NTQsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dD
b250ZXh0QWRkUGF0aChjb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAg
IENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAg
ICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VQYXR0ZXJu
KQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigp
OwogCiAjaWYgVVNFKENHX0NPTlRFWFRfU1RST0tFX0xJTkVfU0VHTUVOVFNfV0hFTl9TVFJPS0lO
R19QQVRIKQpAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9
IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7Cisg
ICAgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gdGhpcy0+ZmlsbEdyYWRpZW50KCkpIHsKICAgICAg
ICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBpZiAo
aGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0o
KS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKQEAgLTc5OCwxOCArNzk4LDE4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgICAg
IENHQ29udGV4dEFkZFJlY3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29u
dGV4dENsaXAobGF5ZXJDb250ZXh0KTsKIAotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RN
KGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAg
ICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAg
ICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRl
eHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3Qs
IGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgcmVjdCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAg
ICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAg
ICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChm
aWxsUGF0dGVybigpKQogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7CiAKICAgICBib29sIGRy
YXdPd25TaGFkb3cgPSBjYW5Vc2VTaGFkb3dCbHVyKCk7CkBAIC04MTgsNyArODE4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
ICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dX
aXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAg
IFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBj
b250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAg
ICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJl
Y3QocmVjdCkpOwogICAgIH0KIApAQCAtODM5LDcgKzgzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
KQogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRT
aGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0g
ICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93
Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0Um91
bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
cmVjdCwgY29uc3QKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dD
b250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAw
LCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAg
ICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlz
LCByZWN0KTsKICAgICB9CiAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNv
bnN0CiAgICAgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpID0gcmVjdC5yYWRp
aSgpOwogICAgIGJvb2wgZXF1YWxXaWR0aHMgPSAocmFkaWkudG9wTGVmdCgpLndpZHRoKCkgPT0g
cmFkaWkudG9wUmlnaHQoKS53aWR0aCgpICYmIHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSA9PSBy
YWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSA9
PSByYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkpOwogICAgIGJvb2wgZXF1YWxIZWlnaHRzID0g
KHJhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkg
JiYgcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0
KCkgJiYgcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0b21SaWdodCgpLmhl
aWdodCgpKTsKLSAgICBib29sIGhhc0N1c3RvbUZpbGwgPSBtX3N0YXRlLmZpbGxHcmFkaWVudCB8
fCBtX3N0YXRlLmZpbGxQYXR0ZXJuOworICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IGZpbGxHcmFk
aWVudCgpIHx8IGZpbGxQYXR0ZXJuKCk7CiAgICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVxdWFs
V2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAmJiByYWRpaS50b3BMZWZ0KCkud2lkdGgoKSAqIDIgPT0g
ci53aWR0aCgpICYmIHJhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSAqIDIgPT0gci5oZWlnaHQoKSkK
ICAgICAgICAgQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3QoY29udGV4dCwgcik7CiAgICAgZWxz
ZSB7CkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG8KICAgICAgICAg
Ly8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFk
b3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4
dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAg
ICBjb250ZXh0U2hhZG93LmRyYXdJbnNldFNoYWRvdygqdGhpcywgcmVjdCwgcm91bmRlZEhvbGVS
ZWN0KTsKICAgICB9CiAKQEAgLTk4OSw2ICs5ODksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250
ZXh0LCBvcGFjaXR5KTsKICAgICBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGNvbnRl
eHQsIDApOworICAgIAorICAgIG1fc3RhdGUuZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCkBAIC0xMDAyLDE3ICsxMDA0LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6
OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKICAgICByZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKK3N0YXRpYyB2
b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0KQogewogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKFdJTikKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CiAgICAgVU5VU0VEX1BBUkFNKHhPZmZzZXQpOwogICAgIFVOVVNFRF9QQVJBTSh5T2Zmc2V0KTsK
ICNlbHNlCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoQ0dDb250ZXh0RHJhd3NX
aXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4
OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKQEAgLTEw
MzAsMTAgKzEwMjksOCBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJ
Zk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAjZW5kaWYKIH0KIAotc3Rh
dGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29s
b3IpCitzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhDR0NvbnRleHRSZWYgY29udGV4dCwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpOwotCiAgICAgaWYgKG9mZnNldC5pc1plcm8oKSAmJiAhYmx1cikgewogICAgICAgICBDR0Nv
bnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplWmVybywgMCwgMCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEwNDUsNyArMTA0Miw3IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUm
CiAgICAgQ0dGbG9hdCB5T2Zmc2V0ID0gb2Zmc2V0LmhlaWdodCgpOwogICAgIENHRmxvYXQgYmx1
clJhZGl1cyA9IGJsdXI7CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpKSB7CisgICAgaWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewogICAg
ICAgICBDR0FmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gZ2V0VXNlclRvQmFzZUNUTShj
b250ZXh0KTsKIAogICAgICAgICBDR0Zsb2F0IEEgPSB1c2VyVG9CYXNlQ1RNLmEgKiB1c2VyVG9C
YXNlQ1RNLmEgKyB1c2VyVG9CYXNlQ1RNLmIgKiB1c2VyVG9CYXNlQ1RNLmI7CkBAIC0xMDY2LDcg
KzEwNjMsOCBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgIC8vIEV4dHJlbWUgImJsdXIi
IHZhbHVlcyBjYW4gbWFrZSB0ZXh0IGRyYXdpbmcgY3Jhc2ggb3IgdGFrZSBjcmF6eSBsb25nIHRp
bWVzLCBzbyBjbGFtcAogICAgIGJsdXJSYWRpdXMgPSBzdGQ6Om1pbihibHVyUmFkaXVzLCBuYXJy
b3dQcmVjaXNpb25Ub0NHRmxvYXQoMTAwMC4wKSk7CiAKLSAgICBhcHBseVNoYWRvd09mZnNldFdv
cmthcm91bmRJZk5lZWRlZChncmFwaGljc0NvbnRleHQsIHhPZmZzZXQsIHlPZmZzZXQpOworICAg
IGlmIChyZW5kZXJpbmdNb2RlICE9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAg
ICBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb250ZXh0LCB4T2Zmc2V0LCB5
T2Zmc2V0KTsKIAogICAgIC8vIENoZWNrIGZvciBhbiBpbnZhbGlkIGNvbG9yLCBhcyB0aGlzIG1l
YW5zIHRoYXQgdGhlIGNvbG9yIHdhcyBub3Qgc2V0IGZvciB0aGUgc2hhZG93CiAgICAgLy8gYW5k
IHdlIHNob3VsZCB0aGVyZWZvcmUganVzdCB1c2UgdGhlIGRlZmF1bHQgc2hhZG93IGNvbG9yLgpA
QCAtMTA3NiwzOSArMTA3NCw2MSBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgICAgICBD
R0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplTWFrZSh4T2Zmc2V0LCB5
T2Zmc2V0KSwgYmx1clJhZGl1cywgY2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0KCkpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZs
YWdzKQordm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlKQogeworICAgIGlmICghc3RhdGUuY2hhbmdlcygpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hh
bmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIHN0ZDo6bWF4KHN0
YXRlLnN0cm9rZVRoaWNrbmVzcywgMC5mKSk7CisgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0YXRl
LmNoYW5nZXMoKSkgeworICAgICAgICBzd2l0Y2ggKGNoYW5nZSkgeworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaDoKKyAgICAgICAgICAgIHNldENH
RmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlVGhpY2tuZXNzOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQs
IHN0ZDo6bWF4KHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgMC5mKSk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJy
dXNoOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4
dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKS5nZXQoKSk7CisgICAg
ICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKS5nZXQo
KSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRl
TW9kZToKKyAgICAgICAgICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0
ZU1vZGUub3BlcmF0aW9uLCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgICAg
ICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Rh
dGUuZmlsbENvbG9yKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpEcm9wU2hhZG93OgorICAgICAgICAgICAgc2V0Q0dTaGFkb3coY29udGV4dCwgcmVuZGVyaW5n
TW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFk
aXVzLCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRBbHBoYShj
b250ZXh0LCBzdGF0ZS5hbHBoYSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6QWxwaGE6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBz
dGF0ZS5hbHBoYSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlu
c0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpCi0gICAgICAgIHNldENHQmxl
bmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUp
OworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVh
bGl0eShjb250ZXh0LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAg
ICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUo
c3RhdGUudGV4dERyYXdpbmdNb2RlKSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4
dERyYXdpbmdNb2RlKGNvbnRleHQsIGNnVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5n
TW9kZSkpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwor
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlh
czoKKyAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdGF0
ZS5zaG91bGRBbnRpYWxpYXMpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkK
LSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMoY29udGV4dCwgc3RhdGUuc2hv
dWxkU21vb3RoRm9udHMpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21v
b3RoRm9udHMoY29udGV4dCwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOworICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRJbnRl
cnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBzZXRDR1NoYWRvdygqdGhp
cywgc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93
Q29sb3IpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dENHOjpzZXRNaXRlckxpbWl0KGZsb2F0IGxpbWl0KQpAQCAtMTEyNSw3ICsxMTQ1LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGxpbmVXaWR0aCkKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRm
b3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKKyAgICBp
ZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHRoaXMtPnN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAg
ICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBjb25zdCBmbG9hdCBkb3VibGVMaW5l
V2lkdGggPSBsaW5lV2lkdGggKiAyOwogICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRXaWR0aCA9
IGNlaWxmKHJlY3Qud2lkdGgoKSArIGRvdWJsZUxpbmVXaWR0aCk7CkBAIC0xMTQ5LDggKzExNjks
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXll
ckNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ry
b2tlZFBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1f
c3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogCiAg
ICAgICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBs
aW5lV2lkdGgpOwogICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRm
KHJlY3QueSgpIC0gbGluZVdpZHRoKTsKQEAgLTExNjEsMTMgKzExODEsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRDRzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxp
bmVXaWR0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgcmVjdCk7CiAg
ICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsK
ICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuc3Ry
b2tlUGF0dGVybikKKyAgICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9r
ZVBhdHRlcm4oKTsKIAogICAgIC8vIFVzaW5nIENHQ29udGV4dEFkZFJlY3QgYW5kIENHQ29udGV4
dFN0cm9rZVBhdGggdG8gc3Ryb2tlIHJlY3QgcmF0aGVyIHRoYW4KQEAgLTE0MjIsNyArMTQ0Miw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsRWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB7CiAgICAgLy8gQ0dDb250ZXh0RmlsbEVsbGlwc2VJ
blJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xvcnMuCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdy
YWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKKyAgICBpZiAoZmlsbEdyYWRpZW50KCkg
fHwgZmlsbFBhdHRlcm4oKSkgewogICAgICAgICBmaWxsRWxsaXBzZUFzUGF0aChlbGxpcHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0MzQsNyArMTQ1NCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNl
KQogewogICAgIC8vIENHQ29udGV4dFN0cm9rZUVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBz
b2xpZCBjb2xvcnMuCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgfHwgbV9zdGF0ZS5z
dHJva2VQYXR0ZXJuKSB7CisgICAgaWYgKHN0cm9rZUdyYWRpZW50KCkgfHwgc3Ryb2tlUGF0dGVy
bigpKSB7CiAgICAgICAgIHN0cm9rZUVsbGlwc2VBc1BhdGgoZWxsaXBzZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAppbmRleCA2MDNiMGU5MzZlZmI1MjhjYWMzZDdhZGM4
NjZlOTk1N2VlMzBlYmVjLi5hMWEyNmJmZDI4NGQ4NDQ2M2VjMjBmYjAxNGZhMzM2OWM4OGM5OTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaWRVcGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBo
aWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuVXNlU2hhZG93
Qmx1cigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHAKaW5kZXggZWZiYzFlNDk1NDQxYmVkZTczNGU5NDhkZDI2ZDM3MTQ0MTY1NTNlMC4uZDBi
ZWM4ZDYzODQ3MDliNzhjZjFkZTgwYmIwMmUxZTM3ZDJmOTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtOTYsNTIgKzk2LDI0IEBAIERyYXdH
bHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIs
IERlY29uc3RydWN0RHJhd0dsCiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUlu
dGVybmFsU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKIHsK
LSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLmZpbGxD
b2xvcjsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0
YXRlLmZpbGxHcmFkaWVudDsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07
Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLmZp
bGxQYXR0ZXJuOwotCi0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gY29u
dGV4dFN0YXRlLnN0cm9rZUNvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5n
cmFkaWVudCA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICBtX29yaWdpbmFsU3Rh
dGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5zdHJv
a2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHls
ZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgbV9vcmlnaW5hbFN0
YXRlLmZpbGxCcnVzaCA9IGNvbnRleHRTdGF0ZS5maWxsQnJ1c2g7CisgICAgbV9vcmlnaW5hbFN0
YXRlLnN0cm9rZUJydXNoID0gY29udGV4dFN0YXRlLnN0cm9rZUJydXNoOwogCiAgICAgbV9vcmln
aW5hbFN0YXRlLmN0bSA9IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFz
ZSBDVE0uCiAKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCA9IGNvbnRleHRTdGF0
ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyID0gY29udGV4
dFN0YXRlLnNoYWRvd0JsdXI7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciA9IGNv
bnRleHRTdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9y
ZVRyYW5zZm9ybXMgPSBjb250ZXh0U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAg
ICBtX2N1cnJlbnRTdGF0ZSA9IG1fb3JpZ2luYWxTdGF0ZTsKKyAgICBtX29yaWdpbmFsU3RhdGUu
ZHJvcFNoYWRvdyA9IGNvbnRleHRTdGF0ZS5kcm9wU2hhZG93OworICAgIG1fb3JpZ2luYWxTdGF0
ZS5pZ25vcmVUcmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKIHsKLSAgICBpZiAobV9v
cmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1faW50ZXJu
YWxDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvcik7
Ci0gICAgZWxzZSBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCkKLSAgICAg
ICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLmZp
bGxTdHlsZS5ncmFkaWVudCwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5m
aWxsU3R5bGUucGF0dGVybik7Ci0gICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LnBhdHRlcm4pCi0gICAgICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbFBhdHRlcm4o
Km1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1faW50
ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUu
Y29sb3IpOwotICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVu
dCkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCptX29yaWdp
bmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHls
ZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKQotICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRl
eHQtPnNldFN0cm9rZVBhdHRlcm4oKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJu
KTsKLSAgICB9CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxCcnVzaChtX29yaWdpbmFs
U3RhdGUuZmlsbEJydXNoKTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlQnJ1c2go
bV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJydXNoKTsKIAogICAgIG1faW50ZXJuYWxDb250ZXh0LT5z
ZXRDVE0obV9vcmlnaW5hbFN0YXRlLmN0bSk7CiAKLSAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFu
c2Zvcm1zKTsKLSAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U2hhZG93KG1fb3JpZ2luYWxTdGF0
ZS5zaGFkb3cub2Zmc2V0LCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxT
dGF0ZS5zaGFkb3cuY29sb3IsIGNvbnRleHRTdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKKyAgICBt
X2ludGVybmFsQ29udGV4dC0+c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9vcmlnaW5hbFN0
YXRlLmlnbm9yZVRyYW5zZm9ybXMpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXREcm9wU2hh
ZG93KG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93KTsKIAogICAgIG1faW50ZXJuYWxDb250ZXh0
LT5zZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dFN0YXRlLnRleHREcmF3aW5nTW9kZSk7CiB9CkBA
IC0xNjUsOTUgKzEzNywzOSBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cHJlcGFyZUludGVy
bmFsQ29udGV4dChjb25zdCBGb250JiBmb250LCBGb250U21vb3RoaW5nTQogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OmNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCkKIHsKICAgICB1cGRhdGVDVE0o
bV9vcmlnaW5hbFN0YXRlLmN0bSk7Ci0gICAgdXBkYXRlRmlsbENvbG9yKG1fb3JpZ2luYWxTdGF0
ZS5maWxsU3R5bGUuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQuZ2V0
KCksIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybi5nZXQoKSk7Ci0gICAgdXBkYXRl
U3Ryb2tlQ29sb3IobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yLCBtX29yaWdpbmFs
U3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQuZ2V0KCksIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VT
dHlsZS5wYXR0ZXJuLmdldCgpKTsKLSAgICB1cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNo
YWRvdy5vZmZzZXQsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRl
LnNoYWRvdy5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID8g
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcyA6IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpO
byk7CisgICAgdXBkYXRlRmlsbEJydXNoKG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2gpOworICAg
IHVwZGF0ZVN0cm9rZUJydXNoKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCk7CisgICAgdXBk
YXRlU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93LCBtX29yaWdpbmFsU3RhdGUuaWdu
b3JlVHJhbnNmb3JtcyA/IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtczo6Tm8pOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRl
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQ
YXR0ZXJuKiBuZXdQYXR0ZXJuKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxC
cnVzaChjb25zdCBTb3VyY2VCcnVzaCYgbmV3QnJ1c2gpCiB7Ci0gICAgLy8gVGhpcyBjaGVjayBs
b29rcyB3cm9uZyBidXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2UuCi0g
ICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hpY2gg
dGhpcyBpcyB0aGUgY29ycmVjdCBjaGVjayBmb3IuCi0gICAgLy8gSW4gY29uY2x1ZGVJbnRlcm5h
bENvbnRleHQoKSB3ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3aGlj
aCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJlY3RseSBmb3IgdG9vLgotICAgIGlmIChuZXdDb2xvciA9
PSBtX2N1cnJlbnRTdGF0ZS5maWxsU3R5bGUuY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIG5ld1N0YXRlLmZpbGxDb2xvciA9
IG5ld0NvbG9yOwotICAgIGlmIChuZXdHcmFkaWVudCkKLSAgICAgICAgbmV3U3RhdGUuZmlsbEdy
YWRpZW50ID0gbmV3R3JhZGllbnQ7Ci0gICAgaWYgKG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0
YXRlLmZpbGxQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRl
KG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UgfSk7Ci0g
ICAgbV9jdXJyZW50U3RhdGUuZmlsbFN0eWxlLmNvbG9yID0gbmV3Q29sb3I7CisgICAgbV9vd25l
ci5zZXRGaWxsQnJ1c2gobmV3QnJ1c2gpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
dXBkYXRlU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3Jh
ZGllbnQsIFBhdHRlcm4qIG5ld1BhdHRlcm4pCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBk
YXRlU3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIG5ld0JydXNoKQogewotICAgIC8vIFRo
aXMgY2hlY2sgbG9va3Mgd3JvbmcgYnV0IGl0IGFjdHVhbGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0
ZWQgdXNlLgotICAgIC8vIENUIHdpbGwgb25seSBldmVyIHNldCB0aGlzIHRvIGEgc29saWQgY29s
b3IsIHdoaWNoIHRoaXMgaXMgdGhlIGNvcnJlY3QgY2hlY2sgZm9yLgotICAgIC8vIEluIGNvbmNs
dWRlSW50ZXJuYWxDb250ZXh0KCkgd2Ugc2V0IGl0IGJhY2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2lu
YWxseSwgd2hpY2ggdGhpcyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgZm9yIHRvby4KLSAgICBpZiAo
bmV3Q29sb3IgPT0gbV9jdXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIG5ld1N0YXRl
LnN0cm9rZUNvbG9yID0gbmV3Q29sb3I7Ci0gICAgaWYgKG5ld0dyYWRpZW50KQotICAgICAgICBu
ZXdTdGF0ZS5zdHJva2VHcmFkaWVudCA9IG5ld0dyYWRpZW50OwotICAgIGlmIChuZXdQYXR0ZXJu
KQotICAgICAgICBuZXdTdGF0ZS5zdHJva2VQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293
bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VDb2xvckNoYW5nZSB9KTsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9
IG5ld0NvbG9yOworICAgIG1fb3duZXIuc2V0U3Ryb2tlQnJ1c2gobmV3QnJ1c2gpOwogfQogCiB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Y3RtKQogewotICAgIGlmIChjdG0gPT0gbV9jdXJyZW50U3RhdGUuY3RtKQorICAgIGlmIChtX293
bmVyLmdldENUTSgpID09IGN0bSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgbV9vd25lci5zZXRD
VE0oY3RtKTsKLSAgICBtX2N1cnJlbnRTdGF0ZS5jdG0gPSBjdG07CiB9CiAKLXN0YXRpYyBib29s
IHNoYWRvd0lzQ2xlYXJlZChjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hh
ZG93Qmx1cikKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coY29uc3QgRHJv
cFNoYWRvdyYgZHJvcFNoYWRvdywgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpCiB7Ci0gICAgcmV0dXJuIHNoYWRvd09mZnNldCA9PSBGbG9hdFNpemUoKSAm
JiAhc2hhZG93Qmx1cjsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRv
dyhjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1ciwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcykKLXsKLSAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zIGlmIG5vYm9keSBoYXMgYW55IHNoYWRvd3MuCi0gICAgaWYgKHNoYWRv
d0lzQ2xlYXJlZChzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpICYmIHNoYWRvd0lzQ2xlYXJlZCht
X2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0LCBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1cikp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIHN0YXRlQ2hhbmdlRmxh
Z3M7Ci0KLSAgICBpZiAoc2hhZG93T2Zmc2V0ICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZz
ZXQgfHwgc2hhZG93Qmx1ciAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciB8fCBzaGFkb3dD
b2xvciAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuY29sb3IpIHsKLSAgICAgICAgbmV3U3RhdGUu
c2hhZG93T2Zmc2V0ID0gc2hhZG93T2Zmc2V0OwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dCbHVy
ID0gc2hhZG93Qmx1cjsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xv
cjsKLSAgICAgICAgc3RhdGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd0NoYW5nZSk7Ci0gICAgfQotICAgIGlmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAhPSBT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQgJiYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpICE9IG1fY3VycmVudFN0YXRl
LnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zKSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOjpZZXMpOwotICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOwotICAgIH0KLSAgICBp
ZiAoc3RhdGVDaGFuZ2VGbGFncy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX293
bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0YXRlLCBzdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIG1f
Y3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgbV9jdXJyZW50
U3RhdGUuc2hhZG93LmJsdXIgPSBzaGFkb3dCbHVyOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRv
dy5jb2xvciA9IHNoYWRvd0NvbG9yOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVU
cmFuc2Zvcm1zID0gKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOjpZZXMpOworICAgIG1fb3duZXIuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKKyAg
ICBtX293bmVyLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KENHU3R5bGVSZWYgc3R5bGUpCiB7CiAgICAgaWYgKENH
U3R5bGVHZXRUeXBlKHN0eWxlKSAhPSBrQ0dTdHlsZVNoYWRvdykgewogICAgICAgICAvLyBGSVhN
RTogU3VwcG9ydCBtb3JlIGtpbmRzIG9mIENHU3R5bGVzLgotICAgICAgICB1cGRhdGVTaGFkb3co
ezAsIDB9LCAwLCBDb2xvcigpLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQp
OworICAgICAgICB1cGRhdGVTaGFkb3coeyB9LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5z
cGVjaWZpZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEsNyArMTc3LDcgQEAg
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQog
ICAgIGF1dG8gcmFkID0gZGVnMnJhZChzaGFkb3dTdHlsZS5hemltdXRoIC0gMTgwKTsKICAgICBh
dXRvIHNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzdGQ6OmNvcyhyYWQpLCBzdGQ6OnNpbihyYWQp
KSAqIHNoYWRvd1N0eWxlLmhlaWdodDsKICAgICBhdXRvIHNoYWRvd0NvbG9yID0gQ0dTdHlsZUdl
dENvbG9yKHN0eWxlKTsKLSAgICB1cGRhdGVTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dTdHls
ZS5yYWRpdXMsIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3Ip
LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKKyAgICB1cGRhdGVTaGFkb3coeyBzaGFk
b3dPZmZzZXQsIHN0YXRpY19jYXN0PGZsb2F0PihzaGFkb3dTdHlsZS5yYWRpdXMpLCBDb2xvcjo6
Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHNoYWRvd0NvbG9yKSB9LCBTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtczo6WWVzKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZEJl
Z2luTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlLCBDR1JlY3Qp
CkBAIC0zMjgsOCArMjQ0LDggQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdH
bHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKIAogICAgIGF1dG8g
ZmlsbENvbG9yID0gQ0dHU3RhdGVHZXRGaWxsQ29sb3IoZ3N0YXRlKTsKICAgICBhdXRvIHN0cm9r
ZUNvbG9yID0gQ0dHU3RhdGVHZXRTdHJva2VDb2xvcihnc3RhdGUpOwotICAgIHVwZGF0ZUZpbGxD
b2xvcihDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKGZpbGxDb2xvcikpOwotICAg
IHVwZGF0ZVN0cm9rZUNvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ry
b2tlQ29sb3IpKTsKKyAgICB1cGRhdGVGaWxsQnJ1c2goQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZl
Q29sb3JTcGFjZShmaWxsQ29sb3IpKTsKKyAgICB1cGRhdGVTdHJva2VCcnVzaChDb2xvcjo6Y3Jl
YXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRlU2hhZG93
KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKICAgICBhdXRvIGZvbnRTaXplID0gQ0dHU3Rh
dGVHZXRGb250U2l6ZShnc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcApp
bmRleCA1MTFlMDliOTZjZWYwMzI1MDkwZTIzYWY5MTRhZTM1ZjJhYjhlZDJlLi44MGE4YzhhZTY1
NDhkMGI2YTk2YWEzMmQ3YzA1NWRiNjg2NDkxNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNv
cmVUZXh0LmNwcApAQCAtMjQyLDEwICsyNDIsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwog
ICAgIHNldENHRm9udFJlbmRlcmluZ01vZGUoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0U2V0Rm9u
dFNpemUoY2dDb250ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsKIAotICAgIEZsb2F0U2l6ZSBz
aGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICBDb2xvciBzaGFkb3dDb2xv
cjsKLSAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKTsKKyAgICBhdXRvIGRyb3BTaGFkb3cgPSBjb250ZXh0LmRyb3BTaGFkb3coKTsKIAog
ICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RNID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBm
bG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBA
IC0yNTgsMTYgKzI1NSwxNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICB9CiAg
ICAgfTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2luZ01v
ZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYm
ICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAoIWNv
bnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlP
clRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXll
cigpOworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUo
KSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgZHJvcFNoYWRvdy5jb2xvci5pc1ZhbGlkKCkg
JiYgIWRyb3BTaGFkb3cuYmx1clJhZGl1cyAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBG
b250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29udGV4dENU
TS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5pc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8v
IFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cg
c2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAgICAg
Y29udGV4dC5jbGVhclNoYWRvdygpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0
LmZpbGxDb2xvcigpOwotICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3IgPSBzaGFkb3dDb2xv
ci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShmaWxsQ29sb3IuYWxwaGFBc0Zsb2F0KCkpOwor
ICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3IgPSBkcm9wU2hhZG93LmNvbG9yLmNvbG9yV2l0
aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxDb2xvci5hbHBoYUFzRmxvYXQoKSk7CiAgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvcik7Ci0gICAgICAgIGZsb2F0IHNoYWRv
d1RleHRYID0gcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGZsb2F0
IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgZHJvcFNoYWRvdy5vZmZzZXQud2lkdGgoKTsKICAg
ICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZl
bid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2
ZS4KLSAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQu
aGVpZ2h0KCkgKiAoY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsK
KyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBkcm9wU2hhZG93Lm9mZnNl
dC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEp
OwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFgs
IHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlw
aHMsIHRleHRNYXRyaXgpOwogICAgICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKICAgICAg
ICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCArIHN5
bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMs
IGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwpAQCAtMjgwLDcgKzI3Nyw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGb250JiBmb250LCBjb25zdCBHCiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAK
ICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgY29udGV4dC5zZXRE
cm9wU2hhZG93KGRyb3BTaGFkb3cpOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKHNob3VsZFNtb290aEZvbnRzICE9IG9yaWdpbmFsU2hvdWxkVXNlRm9udFNtb290aGluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDJlMmY0ZjRmMmNiNTVkMzY1ZTVhZTM5OTMy
NWQwNWYyYzE3MzYxZmQuLjJiMDNjZTRhNjZlMmQ4YWEwZmFkODFhNjQ0YWViMWVkZmRlMWM4ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtOTAsMTAgKzkwLDcgQEAgYm9vbCBEaXNw
bGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxl
IGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9y
bU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVt
LmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5IGRy
b3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1z
cGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5n
ZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHNDaGFuZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBp
ZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgICAgICAgICAg
aWYgKHN0YXRlSXRlbS5zdGF0ZSgpLmNoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMjNkMGJiY2M3MWMyODFjNTJjMzVhOGMyNTJkYTk2YzBh
YjEyYTk4Yy4uYjY2Yzg0OGEzM2JkZDkyMzYwZmVhODUzMzdmYWI1ZGIyZDJkMDJiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTQ4LDI0ICsxNDgsMTkgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0cm9r
ZVRoaWNrbmVzcyYgc3RhdGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1TZXRTdGF0ZTo6U2V0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKLSAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGUsIGZs
YWdzKQotewotfQotCi1TZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQotICAgIDogbV9zdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZSkK
K1NldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCisg
ICAgOiBtX3N0YXRlKHN0YXRlKQogewogfQogCiB2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsK
KyAgICBjb250ZXh0LnVwZGF0ZVN0YXRlKG1fc3RhdGUpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3RhdGUmIHN0YXRlKQorc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRl
JiBpdGVtKQogewotICAgIHRzIDw8IHN0YXRlLnN0YXRlQ2hhbmdlKCk7CisgICAgdHMgPDwgaXRl
bS5zdGF0ZSgpOwogICAgIHJldHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKaW5kZXggOTdjYjVmYzhkMDRiYTg2NjJiNzJjN2RkZWViYzQ0MTU1YzI4MjViNy4uOTY5
NGQ2OGQxNWU5OGQ1NjdkMzhkM2FjOWIyYzA5OWYzMGQwYTViNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCkBAIC0yNDcsMTAgKzI0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MpOworICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJik7CiAKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZSYgc3RhdGVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlQ2hhbmdlOyB9Ci0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKCkgeyByZXR1cm4gbV9zdGF0ZUNo
YW5nZTsgfQorICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGU7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTI1OCwyODggKzI1
NywyNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYpOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UgbV9zdGF0ZUNoYW5nZTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGF1dG8gY2hhbmdlRmxhZ3MgPSBtX3N0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3M7Ci0gICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKLQotICAgIGF1
dG8mIHN0YXRlID0gbV9zdGF0ZUNoYW5nZS5tX3N0YXRlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsK
LSAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZUdyYWRpZW50KTsKLSAgICAgICAgZW5jb2RlciA8
PCAqc3RhdGUuc3Ryb2tlR3JhZGllbnQ7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewotICAg
ICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0
YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIEFT
U0VSVChzdGF0ZS5maWxsR3JhZGllbnQpOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxs
R3JhZGllbnQ7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRl
LmZpbGxQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmlsbFBhdHRlcm47Ci0g
ICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93T2Zmc2V0
OwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd0JsdXI7Ci0gICAgICAgIGVuY29kZXIg
PDwgc3RhdGUuc2hhZG93Q29sb3I7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93UmFk
aXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwg
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLnN0cm9rZUNvbG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLmZpbGxDb2xvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLnN0cm9rZVN0eWxlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwg
c3RhdGUuZmlsbFJ1bGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIg
PDwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuYmxlbmRNb2RlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAg
ICAgICAgZW5jb2RlciA8PCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotCi0gICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5n
ZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuYWxwaGE7Ci0KLSAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkp
Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkQW50aWFsaWFzOwotCi0gICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250
c0NoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0K
LSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUu
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkp
Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAg
ZW5jb2RlciA8PCBtX3N0YXRlOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogc3RkOjpv
cHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+
IGNoYW5nZUZsYWdzOwotICAgIGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7Ci0gICAgaWYgKCFjaGFu
Z2VGbGFncykKKyAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBzdGF0ZTsK
KyAgICBkZWNvZGVyID4+IHN0YXRlOworICAgIGlmICghc3RhdGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5n
ZTsKLSAgICBzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwotCi0gICAg
aWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBhdXRvIHN0cm9rZUdyYWRpZW50
ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFzdHJva2VHcmFkaWVu
dCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFu
Z2UubV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IFdURk1vdmUoKnN0cm9rZUdyYWRpZW50KTsKLSAg
ICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAgYXV0byBzdHJv
a2VQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIXN0cm9r
ZVBhdHRlcm4pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUoKnN0cm9rZVBhdHRlcm4p
OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8g
ZmlsbEdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFm
aWxsR3JhZGllbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
IHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGTW92ZSgqZmlsbEdyYWRpZW50
KTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8g
ZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghZmls
bFBhdHRlcm4pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKCpmaWxsUGF0dGVybik7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IHNoYWRvd09mZnNldDsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dPZmZzZXQ7
Ci0gICAgICAgIGlmICghc2hhZG93T2Zmc2V0KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09mZnNldCA9ICpzaGFk
b3dPZmZzZXQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2hhZG93Qmx1cjsKLSAg
ICAgICAgZGVjb2RlciA+PiBzaGFkb3dCbHVyOwotICAgICAgICBpZiAoIXNoYWRvd0JsdXIpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc2hhZG93Qmx1ciA9ICpzaGFkb3dCbHVyOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
Q29sb3I+IHNoYWRvd0NvbG9yOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd0NvbG9yOwotICAg
ICAgICBpZiAoIXNoYWRvd0NvbG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0NvbG9yID0gKnNoYWRvd0NvbG9y
OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93UmFkaXVzTW9kZT4gc2hhZG93UmFkaXVz
TW9kZTsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dSYWRpdXNNb2RlOwotICAgICAgICBpZiAo
IXNoYWRvd1JhZGl1c01vZGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9IFdURk1vdmUoKnNo
YWRvd1JhZGl1c01vZGUpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2Up
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHN0cm9rZVRoaWNrbmVzczsKLSAgICAg
ICAgZGVjb2RlciA+PiBzdHJva2VUaGlja25lc3M7Ci0gICAgICAgIGlmICghc3Ryb2tlVGhpY2tu
ZXNzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9ICpzdHJva2VUaGlja25lc3M7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxUZXh0RHJhd2luZ01vZGVGbGFncz4gdGV4dERyYXdpbmdNb2RlOwotICAgICAgICBkZWNvZGVy
ID4+IHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUudGV4dERyYXdpbmdNb2RlID0gV1RGTW92ZSgqdGV4dERyYXdpbmdNb2RlKTsKLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IHN0cm9rZUNvbG9yOwotICAgICAgICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwotICAgICAg
ICBpZiAoIXN0cm9rZUNvbG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUNvbG9yID0gKnN0cm9rZUNvbG9yOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8Q29sb3I+IGZpbGxDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7Ci0gICAg
ICAgIGlmICghZmlsbENvbG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxDb2xvciA9ICpmaWxsQ29sb3I7Ci0gICAg
fQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkgewotICAgICAgICBTdHJva2VTdHlsZSBz
dHJva2VTdHlsZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJva2VTdHlsZSkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc3Ryb2tlU3R5bGUgPSBzdHJva2VTdHlsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1
bGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8V2luZFJ1bGU+IGZpbGxSdWxlOwot
ICAgICAgICBkZWNvZGVyID4+IGZpbGxSdWxlOwotICAgICAgICBpZiAoIWZpbGxSdWxlKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLmZpbGxSdWxlID0gKmZpbGxSdWxlOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVy
YXRpb25DaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+
IGNvbXBvc2l0ZU9wZXJhdG9yOwotICAgICAgICBkZWNvZGVyID4+IGNvbXBvc2l0ZU9wZXJhdG9y
OwotICAgICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yID0gKmNvbXBvc2l0ZU9wZXJhdG9yOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFu
Z2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7Ci0gICAg
ICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOwotICAgICAgICBpZiAoIWJsZW5kTW9kZSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5ibGVuZE1vZGUgPSAqYmxlbmRNb2RlOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5Q2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRp
b25RdWFsaXR5PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgICAgICBkZWNvZGVyID4+
IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0gICAgICAgIGlmICghaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gKmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYTsKLSAgICAgICAgZGVjb2RlciA+PiBhbHBo
YTsKLSAgICAgICAgaWYgKCFhbHBoYSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5hbHBoYSA9ICphbHBoYTsKLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHNob3VsZEFudGlhbGlhczsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRBbnRpYWxp
YXM7Ci0gICAgICAgIGlmICghc2hvdWxkQW50aWFsaWFzKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZEFudGlhbGlh
cyA9ICpzaG91bGRBbnRpYWxpYXM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRz
Q2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRz
OwotICAgICAgICBkZWNvZGVyID4+IHNob3VsZFNtb290aEZvbnRzOwotICAgICAgICBpZiAoIXNo
b3VsZFNtb290aEZvbnRzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gKnNob3VsZFNtb290
aEZvbnRzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFu
Z2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOwotICAgICAgICBkZWNvZGVyID4+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsK
LSAgICAgICAgaWYgKCFzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gKnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAg
ICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKSB7Ci0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0gICAgICAgIGRl
Y29kZXIgPj4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0gICAgICAgIGlmICghc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
ICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAqc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXM7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgeyBzdGF0ZUNoYW5nZSB9
IH07CisgICAgcmV0dXJuIFNldFN0YXRlKCpzdGF0ZSk7CiB9CiAKIGNsYXNzIFNldExpbmVDYXAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGVlZTQ0NzFk
MzU0ZTc1MTUzMTI1MTg5ZGZjYzk0MThhMzk0NTE0YTEuLmZlOTI4MTY3ZDE0ZWRlNWZlZjc4Njkz
YWU3ZTE0MGNlNjRhY2FiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKQEAgLTUzLDQ1ICs1MywzNCBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBBU1NF
UlQobV9zdGF0ZVN0YWNrLnNpemUoKSA9PSAxKTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNh
dGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3JlLgogfQogCi1zdGF0aWMgYm9vbCBjb250YWluc09u
bHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNo
YW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdz
KQordm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGlubGluZVN0YXRlQ2hhbmdlRmxhZ3MgewotICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLAotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgfTsKLQotICAgIGlmIChjaGFuZ2VG
bGFncyAhPSAoY2hhbmdlRmxhZ3MgJiBpbmxpbmVTdGF0ZUNoYW5nZUZsYWdzKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkgJiYgIWNoYW5nZXMubV9zdGF0ZS5zdHJva2VD
b2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFT
U0VSVChzdGF0ZS5jaGFuZ2VzKCkpOworICAgIAorICAgIGlmIChzdGF0ZS5oYXNPbmx5UHJpbWl0
aXZlQ2hhbmdlcygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoKSkKKyAgICAgICAgICAgIHJlY29y
ZFNldElubGluZUZpbGxDb2xvcigqZmlsbENvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwog
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
Q29sb3JDaGFuZ2UpICYmICFjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFC
eXRlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzdGF0ZS5jaGFuZ2Vz
KCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gpKQor
ICAgICAgICAgICAgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoKnN0cm9rZUNvbG9yKCkudHJ5
R2V0QXNTUkdCQUJ5dGVzKCkpOwogCi0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgICAgIGlmIChz
dGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlVGhpY2tuZXNzKSkKKyAgICAgICAgICAgIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhzdHJv
a2VUaGlja25lc3MoKSk7CiAKLXZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCi17Ci0gICAgaWYgKCFjb250YWlu
c09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7Ci0gICAgICAg
IGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAg
ICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAgICAg
aWYgKGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5maWxsUGF0dGVybikKLSAgICAgICAg
ICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAgICAgcmVj
b3JkU2V0U3RhdGUoY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5lU3Ryb2tl
Q29sb3IoKmNoYW5nZXMubV9zdGF0ZS5zdHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7
CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsQnJ1c2gpKSB7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBmaWxsUGF0
dGVybigpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdl
KCkpOworICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0U3Ryb2tl
VGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOworICAgIGlmIChzdGF0
ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
QnJ1c2gpKSB7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBzdHJva2VQYXR0ZXJuKCkpCisg
ICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAg
fQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmNoYW5n
ZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgIHJlY29yZFNl
dFN0YXRlKHN0YXRlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVt
SWZOZWNlc3NhcnkoKQpAQCAtOTksMjUgKzg4LDI1IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0
YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjdXJyZW50
bHkgaW52b2tlZCBpbiBhbiBhZC1ob2MgbWFubmVyIHdoZW4gcmVjb3JkaW5nIGRyYXdpbmcgaXRl
bXMuIFdlIHNob3VsZCBjb25zaWRlciBlaXRoZXIKICAgICAvLyBzcGxpdHRpbmcgR3JhcGhpY3ND
b250ZXh0IHN0YXRlIGNoYW5nZXMgaW50byBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcywg
b3IgcmVmYWN0b3JpbmcgdGhlIGNvZGUgc3VjaCB0aGF0CiAgICAgLy8gdGhpcyBtZXRob2QgaXMg
YXV0b21hdGljYWxseSBpbnZva2VkIHdoZW4gcmVjb3JkaW5nIGEgZHJhd2luZyBpdGVtLgotICAg
IGF1dG8mIHN0YXRlQ2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlOwotICAgIGF1
dG8gY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdlc0Zyb21TdGF0ZShj
dXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKLSAgICBpZiAoIWNoYW5nZXNGcm9tTGFz
dFN0YXRlKQorICAgIGF1dG8mIHN0YXRlID0gY3VycmVudFN0YXRlKCkuc3RhdGU7CisgICAgaWYg
KCFzdGF0ZS5jaGFuZ2VzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPR19XSVRIX1NUUkVB
TShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2Vz
RnJvbUxhc3RTdGF0ZSkpOwotICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5nZXMs
IGNoYW5nZXNGcm9tTGFzdFN0YXRlKTsKLSAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9
IHsgfTsKLSAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2Vz
Lm1fc3RhdGU7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJw
cmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgc3RhdGUpOworICAgIGFwcGVuZFN0YXRlQ2hh
bmdlSXRlbShzdGF0ZSk7CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CisgICAgY3VycmVu
dFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlOwogfQogCiBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgUmVjb3JkZXI6OnN0YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVu
dFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsKKyAgICByZXR1cm4gY3VycmVudFN0YXRlKCku
c3RhdGU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit2b2lkIFJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UuYWNjdW11bGF0
ZShzdGF0ZSwgZmxhZ3MpOworICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRlLm1lcmdlQ2hhbmdlcyhz
dGF0ZSwgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7CisgICAgc3RhdGUuZGlkQXBw
bHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNldExpbmVDYXAoTGluZUNhcCBsaW5l
Q2FwKQpAQCAtMjIyLDEyICsyMTEsMTUgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1h
Z2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiB2b2lk
IFJlY29yZGVyOjpzYXZlKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OnNhdmUoKTsKICAgICBy
ZWNvcmRTYXZlKCk7Ci0gICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgp
LmNsb25lRm9yU2F2ZSgpKTsKKyAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5s
YXN0KCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpyZXN0b3JlKCkKIHsKKyAgICBHcmFwaGljc0Nv
bnRleHQ6OnJlc3RvcmUoKTsKKwogICAgIGlmICghbV9zdGF0ZVN0YWNrLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yNzUsMTYgKzI2NywyNCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVjb3Jk
ZXI6OmdldENUTShHcmFwaGljc0NvbnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKIAog
dm9pZCBSZWNvcmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewor
ICAgIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKwog
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgcmVjb3JkQmVnaW5U
cmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3Rh
dGVTdGFjay5sYXN0KCkuY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpKTsKKyAgICAKKyAgICBt
X3N0YXRlLmFscGhhID0gMTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKwog
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgcmVjb3JkRW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAg
bV9zdGF0ZS5hbHBoYSA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNr
bmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDg0NWVjMDA3
NzJlZDJjNTRhMWU2Y2IyNmIyMTUxZGFiYWE2ZWMwNzUuLmEyYTIyNjhlNWVkNWViNWMwYTljZmUz
Y2ZlZWJhNzcwMWMyYWVmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKQEAg
LTEzNSwzMCArMTM1LDI1IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVz
b3VyY2VVc2UoRm9udCYpID0gMDsKIAogICAgIHN0cnVjdCBDb250ZXh0U3RhdGUgeworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHcmFw
aGljc0NvbnRleHRTdGF0ZT4gbGFzdERyYXdpbmdTdGF0ZTsKICAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGN0bTsKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZSBsYXN0RHJhd2luZ1N0YXRlOwogCi0gICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCi0gICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCi0g
ICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKLSAgICAgICAgICAgICwgbGFzdERyYXdpbmdT
dGF0ZShzdGF0ZSkKKyAgICAgICAgQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0sIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcEJvdW5kcykKKyAgICAgICAgICAgIDogc3RhdGUoc3RhdGUpCisgICAgICAgICAgICAsIGN0
bShjdG0pCisgICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcEJvdW5kcykKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yU2F2ZSgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIENvbnRleHRTdGF0ZSBzdGF0ZShsYXN0RHJhd2luZ1N0YXRl
LCBjdG0sIGNsaXBCb3VuZHMpOwotICAgICAgICAgICAgc3RhdGUuc3RhdGVDaGFuZ2UgPSBzdGF0
ZUNoYW5nZTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICAgICAgfQotCiAgICAgICAg
IENvbnRleHRTdGF0ZSBjbG9uZUZvclRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QKICAgICAgICAg
ewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9IGNsb25lRm9yU2F2ZSgpOwotICAgICAgICAgICAg
c3RhdGUubGFzdERyYXdpbmdTdGF0ZS5hbHBoYSA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gc3Rh
dGU7CisgICAgICAgICAgICBhdXRvIGNvcHkgPSAqdGhpczsKKyAgICAgICAgICAgIGNvcHkuc3Rh
dGUuZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgaWYgKGNvcHkubGFz
dERyYXdpbmdTdGF0ZSkKKyAgICAgICAgICAgICAgICBjb3B5Lmxhc3REcmF3aW5nU3RhdGUtPmRp
ZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHJldHVybiBjb3B5OwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CkBAIC0x
ODksNyArMTg0LDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBk
YXNoT2Zmc2V0KSBmaW5hbDsKQEAgLTI3MCw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYs
IEdyYXBoaWNzQ29udGV4dDo6Um91bmRpbmdNb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgYXBwZW5k
U3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdl
SXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBjdG0oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHAKaW5kZXggMWZkYzZiYTU2YmZkYjI2MzZlZmIzNDYyYWRhMmE5OTBkMzM4OTk0NS4u
NzlkZDEwMjA0NjIyNmZjMGExMWVkZTNiZTNiOTUyZWNiODdkMzc0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAg
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25l
c3MpCiAgICAgYXBwZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4odGhpY2tuZXNzKTsKIH0KIAotdm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxh
Z3MpCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUsIGNoYW5nZUZs
YWdzKTsKKyAgICBhcHBlbmQ8U2V0U3RhdGU+KHN0YXRlKTsKIH0KIAogdm9pZCBSZWNvcmRlcklt
cGw6OnJlY29yZFNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpAQCAtNDE3LDE2ICs0MTcsMTMg
QEAgc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVyUmFk
aXVzKQogCiBGbG9hdFJlY3QgUmVjb3JkZXJJbXBsOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29u
c3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewotICAgIEZsb2F0UmVjdCBib3VuZHMgPSByZWN0
OworICAgIGF1dG8gYm91bmRzID0gcmVjdDsKICAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0
ZSgpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dSYWRp
dXM7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKGdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBzaGFk
b3dFeHRlbnQgPSBib3VuZHM7Ci0gICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKHNoYWRvd09mZnNl
dCk7Ci0gICAgICAgIHNoYWRvd0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KHNo
YWRvd1JhZGl1cykpOworICAgIGlmIChoYXNTaGFkb3coKSkgeworICAgICAgICBhdXRvIHNoYWRv
d0V4dGVudCA9IGJvdW5kczsKKyAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoZHJvcFNoYWRvdygp
Lm9mZnNldCk7CisgICAgICAgIHNoYWRvd0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0
ZW50KGRyb3BTaGFkb3coKS5ibHVyUmFkaXVzKSk7CiAgICAgICAgIGJvdW5kcy51bml0ZShzaGFk
b3dFeHRlbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaAppbmRleCA2NDIyNjVmMDk4MDIyY2YyYjA1ZjE4MGMxNzRmYTAzNDYyZjJkZDQwLi5h
YzJkMzE3OTY3NThjNjJjYzYxNTBhMTU0OWQ3YTA5NDA2ZWVmYWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSBmaW5h
bDsKICAgICB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgZmluYWw7Ci0g
ICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAgICAgdm9pZCBy
ZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZURh
c2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CiAgICAgdm9pZCBy
ZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKaW5kZXggOGZmMTlkMDAzNTRjZGJlZGUzYTViYTFhZjc1OGNmZjAy
M2EyNWEyMi4uZjNjOGM5MGNkODhiYmUwYzUxZTFkNGZhMTMzYzUxZTgzYjgwYjM5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtOTcsMTAgKzk3LDEwIEBA
IGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfTsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1h
Z2Uoc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgp
KSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNl
dFN0YXRlSXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVy
biAqaW1hZ2VJZGVudGlmaWVyOwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4
UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQ
YXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJu
VGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkpKQogICAg
ICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKaW5kZXggOTExNDZkZmM2ZmQ4NGRmOGUyOTU0ZjAzNzdkMDA2NmE3NzIz
M2NjOS4uMTQxNjlhMDc1NThkNjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4OGIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAK
QEAgLTgyLDkgKzgyLDkgQEAgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcihQYWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQogICAgIG1fc3RhdGVTdGFj
ay5hcHBlbmQoeyB7IH0sIHsgfSwgRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSB9KTsKIH0KIAot
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzIGZsYWdzKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFu
Z2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tu
ZXNzKSkgewogICAgICAgICBzdHJ1Y3QgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIGZpbmFsIDogUGFp
bnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8ZmxvYXQ+IHsKICAgICAgICAgICAgIHZpcnR1
YWwgflN0cm9rZVRoaWNrbmVzc0NoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PFN0cm9rZVRoaWNrbmVzc0NoYW5nZT4oc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CiAgICAgfQog
Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdl
KSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpIHsKICAgICAgICAgc3RydWN0IFN0cm9rZVN0eWxlQ2hh
bmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8U3Ryb2tlU3R5bGU+
IHsKICAgICAgICAgICAgIHZpcnR1YWwgflN0cm9rZVN0eWxlQ2hhbmdlKCkgPSBkZWZhdWx0Owog
CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0cm9rZVN0eWxlKSk7
CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpIHsKICAgICAgICAgc3Ry
dWN0IENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBP
cGVyYXRpb25EYXRhPENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU+IHsKICAgICAgICAgICAg
IHZpcnR1YWwgfkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTM1
LDEwICsxMzUsMTAgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpKTsKKyAg
ICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlPihzdGF0
ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUp
KTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
QW50aWFsaWFzQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMpKSB7CiAgICAgICAgIHN0
cnVjdCBTaG91bGRBbnRpYWxpYXNDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxib29sPiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TaG91bGRBbnRpYWxpYXND
aGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTE1NSw2ICsxNTUsOCBAQCB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgRwogCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0No
YW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CiAgICAgfQorCisgICAgc3RhdGUuZGlkQXBw
bHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6c2V0TGluZUNh
cChMaW5lQ2FwIGxpbmVDYXApCkBAIC0yOTIsNyArMjk0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFk
aWVudCkKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJu
KDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pKSk7CisgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBz
dGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMxNiw3ICszMTgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRv
ciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVP
cGVyYXRvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBjb2xv
ciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24pKTsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTM0
Niw3ICszNDgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdAogICAgIH07CiAKICAgICBhdXRv
JiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJv
dW5kZWRSZWN0Pihyb3VuZGVkUmVjdCwgY29sb3IsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBi
bGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9z
aXRlTW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkp
OwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRl
ZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC01MzMsNyArNTM1LDcgQEAgdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9p
bnQsCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0
YSgpLnNjYWxlZEZvbnQoKSksCiAgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBX
VEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlLAotICAg
ICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hh
ZG93Q29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKKyAgICAgICAgc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
LCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwgZm9udFNt
b290aGluZykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKQEAgLTU5OSw3ICs2MDEsNyBAQCB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7
Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVz
cywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3Ip
KTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tu
ZXNzLCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0
cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
MikKQEAgLTYyMiw3ICs2MjQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdM
aW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludAogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwg
c3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hvdWxkQW50
aWFsaWFzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9p
bnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSwgc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKIH0KIAogdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50
aW5nLCBib29sIGRvdWJsZVVuZGVybGluZXMsIFN0cm9rZVN0eWxlKQpAQCAtNjQ1LDcgKzY0Nyw3
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8m
IHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGlu
ZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRl
cmxpbmVzLCBzdGF0ZS5zdHJva2VDb2xvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERy
YXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJs
ZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC02ODQsNyArNjg2
LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
LSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbENv
bG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcykpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdFbGxpcHNlPihyZWN0LCBz
dGF0ZS5maWxsQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJy
dXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOwogfQogCiB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lk
dGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDgzYzZkMjdkNmVh
MzZjNzliZWJkNzgyNWY5OWI3YzQzOTA4ZWU1NGIuLmI5NTI4NjMxMzQzMzAwMmZhZTcyYmRlNDc4
MGQzMjU2OGRjNTgxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRMaW5lQ2FwKFdlYkNvcmU6OkxpbmVDYXApIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGluZURh
c2goY29uc3QgV2ViQ29yZTo6RGFzaEFycmF5JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBj
MTllNzQxNTU3YzMwOGM5NDFlNGVmNzE1ZTNkYjQ2NTk0ZDE4NWI2Li4yY2Q3ODY1ZWNhODI5ZWI0
NTc4MGU5ZmIwZTcyNDdhMzcxMmJjYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTc2LDI1ICsxNzYsMjIgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQs
IHBsYXRmb3JtRGF0YS5zaXplKCkpOwogICAgIEZvbnRDYXNjYWRlOjpzZXRDR0NvbnRleHRGb250
UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLmlzU3lzdGVtRm9u
dCgpLCBmYWxzZSwgZm9udC5wbGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CiAKLSAgICBGbG9hdFNp
emUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93
Q29sb3I7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBhdXRvIGRyb3BTaGFkb3cgPSBncmFwaGljc0NvbnRl
eHQuZHJvcFNoYWRvdygpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0Nv
bnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZp
bGwgJiYgZHJvcFNoYWRvdy5jb2xvci5pc1ZhbGlkKCkgJiYgIWRyb3BTaGFkb3cuYmx1clJhZGl1
cyAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBo
aWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsK
ICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFk
b3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQg
bG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
ZWFyU2hhZG93KCk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC5m
aWxsQ29sb3IoKTsKLSAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gc2hhZG93Q29sb3Iu
Y29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKKyAg
ICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gZHJvcFNoYWRvdy5jb2xvci5jb2xvcldpdGhB
bHBoYU11bHRpcGxpZWRCeShmaWxsQ29sb3IuYWxwaGFBc0Zsb2F0KCkpOwogICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvcik7Ci0gICAgICAgIGZsb2F0
IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CisgICAgICAg
IGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgZHJvcFNoYWRvdy5vZmZzZXQud2lkdGgo
KTsKICAgICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3
ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBu
ZWdhdGl2ZS4KLSAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dP
ZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgPyAtMSA6IDEpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIGRy
b3BTaGFkb3cub2Zmc2V0LmhlaWdodCgpICogKGdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9u
KGNnQ29udGV4dCwgc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKTsKICAgICAgICAgQ0dDb250ZXh0
U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUds
eXBocyk7CiAgICAgICAgIGlmIChmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewotICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgc2hh
ZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgp
ICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCkg
KyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZz
ZXQuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNl
cyhjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocyk7CiAgICAgICAgIH0KICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwpAQCAtMjA4LDcg
KzIwNSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgfQogCiAgICAgaWYgKGhhc1Np
bXBsZVNoYWRvdykKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dERyb3BTaGFkb3coZHJvcFNoYWRvdyk7CiAKICAgICBGb250Q2FzY2FkZTo6c2V0Rm9udFNtb290
aGluZ1N0eWxlKGNnQ29udGV4dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKICAgICBDR0NvbnRl
eHRTZXRUZXh0TWF0cml4KGNnQ29udGV4dCwgc2F2ZWRNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggN2VkNTM3YzkyNzkzNzcw
ZjQ0ODhhZTI5ZGY0MDcyN2Q3ZWIxYTNhOS4uNjE3OGFlYjFjODc2Mzc3MjE5NWY5ZTQ0NzYxMGU0
OTBlNzY0ZjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguY3BwCkBAIC02OSw3ICs2OSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjpjYWxj
dWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdAogc3RhdGljIHZvaWQgdXNlU3Ry
b2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChhdXRv
IGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxHcmFkaWVudCgqZ3JhZGllbnQsIGNvbnRleHQuc3RhdGUoKS5zdHJva2VHcmFkaWVudFNw
YWNlVHJhbnNmb3JtKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50
LCBjb250ZXh0LnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgZWxzZSBpZiAo
UGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBjb250
ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKaW5kZXggNTQzODE4MmRkZTg3NjNlYmFkMzhmMTkyZGY3OTVhYTA2MGI2NTFi
Yi4uOWUzNzg2ZTBmZGNkYjg5ZmIwNjYyOGM4ZmNjNmRjODdiNzdjM2U5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI4LDEwICsxMjgsMTAgQEAgdm9pZCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCi0gICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUlt
YWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCkpKQorICAg
IGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4o
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVt
LnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKCFmaXhQ
YXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDg1NzdjYmJkZTZkMzkw
MWQzNDcwNzYxZWQzMGY3OWQ5OGU4MmI5OGQuLjliYWY5YTM1Yzk3MGY5Yjc1MTAzMDU2Y2I1YmQ3
ODE2YWVjYWQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eTo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdHJva2VUaGlja25lc3Mo
dGhpY2tuZXNzKSk7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Ojpy
ZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUgeyBzdGF0ZSwgZmxhZ3MgfSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERp
c3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0YXRlIH0pKTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXggOWIzM2EwNjdmZDE2
YmNjZjE0MDQyYzE5NzRkZDY5MTk0MjI2MjQ2OC4uYmVkMzYzZTA2MjQ1MzUyN2Y5YTA2MjA4OGNl
Njc3YzJiOTkyMjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVG
aWxsQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3Jk
U2V0SW5saW5lU3Ryb2tlQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAg
IHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSBmaW5hbDsKLSAgICB2b2lkIHJl
Y29yZFNldFN0YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJiwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmKSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBm
bG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVKb2luKFdlYkNv
cmU6OkxpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAwMTY2YTUzOWM3MTJjNGM3NGVlNjZkNDYxNjVkZjI0YmMxN2Y5ZThj
Li43MDcwMGEwZWI2YzI2NDVkNTMwOTVmMThmZTY5MjM0ZDhjM2FhZWZlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjItMDMtMTggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hh
bmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBo
aWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisK
IDIwMjItMDMtMTcgIEpvbmF0aGFuIEJlZGFyZCAgPEpvbldCZWRhcmRAZ21haWwuY29tPgogCiAg
ICAgICAgIGNvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2ZWxvcG1lbnQgZmFpbHMgd2l0
aCBYY29kZSAxMy4zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKaW5kZXggMjQ3MzU4MGYx
OTBlMGZkNjc0YzM2N2RhNDdjOWYxOTJiYTI0ODVlNC4uMjE1YzE3YzY2NTdhZWRhNmE2ZTJjZDBh
ZTBjOWM5MjZmM2JkODJiMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBURVNUKEdyYXBoaWNzQ29udGV4dFRlc3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2Vz
Tm90TGVha0NvbXBvc2l0ZU9wZXJhdG9yKQogICAgIEdyYXBoaWNzQ29udGV4dENHIGN0eChjZ0Nv
bnRleHQuZ2V0KCkpOwogCiAgICAgRVhQRUNUX0VRKGN0eC5jb21wb3NpdGVPcGVyYXRpb24oKSwg
Q29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUShjdHguYmxlbmRN
b2RlT3BlcmF0aW9uKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBFWFBFQ1RfRVEoY3R4LmJs
ZW5kTW9kZSgpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAKICAgICBhdXRvIGdyZWVuUGl4ZWxDRyA9
IGdyZWVuSW1hZ2UoKTsKICAgICBhdXRvIGdyZWVuUGl4ZWxOYXRpdmUgPSBOYXRpdmVJbWFnZTo6
Y3JlYXRlKGdyZWVuUGl4ZWxDRy5nZXQoKSk7CkBAIC03MSw3ICs3MSw3IEBAIFRFU1QoR3JhcGhp
Y3NDb250ZXh0VGVzdHMsIERyYXdOYXRpdmVJbWFnZURvZXNOb3RMZWFrQ29tcG9zaXRlT3BlcmF0
b3IpCiAgICAgRVhQRUNUX0VRKHByaW1hcnlEYXRhWzJdLCAwKTsKIAogICAgIEVYUEVDVF9FUShj
dHguY29tcG9zaXRlT3BlcmF0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsK
LSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1h
bCk7CisgICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDFhM2RhZmY3Zjk2M2I5
NWFkNjViODBiMDUzNGRjZDZlMDFlNmMxYS4uMmQwNjc2MzRjYmNkZGM4Nzk5NTA5MTEyODAzYmU0
ZmJmZjYyOGU5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTE4ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBH
cmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgdGlsbCB0aGV5IGFyZSBh
cHBsaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQ6
CisKIDIwMjItMDMtMTcgIE1hdHRlbyBGbG9yZXMgIDxtYXR0ZW9fZmxvcmVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OKHIyOTExMjktcjI5MTEyOCk6IFtXSzEgRVdTXSAzIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvYW5pbWF0aW9uLW1vZGVs
L2FuaW1hdGlvbi10eXBlcy8qIHRlc3RzIGFyZSBhIGNvbnN0YW50IHRleHQgZmFpbHVyZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1z
aGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IDUxMWI3YzBjNTRkMzMyMTZiN2M2ZWFmMDQzYTc1YzE2
NzY2ZDA0MjcuLmIyOWZlMmY1MzlhZDk2NmY1MDJhNTNiNzM3OTFlZmUxNGEwZTljYjMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVz
LXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTQsMTEgKzQsMTIgQEAKICAgKHkgMC4wMCkpCiAoc2F2
ZSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyA1MTIpCi0gIChzaGFkb3ctYmx1ciAxMi4w
MCkKLSAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQotICAoc2hhZG93LWNvbG9y
ICMwMDAwMDApCi0gIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApKQorICAoY2hhbmdlLWZs
YWdzIFtkcm9wLXNoYWRvd10pCisgIChkcm9wLXNoYWRvdworICAgIChzaGFkb3ctb2Zmc2V0IHdp
ZHRoPTEwIGhlaWdodD0yMCkKKyAgICAoc2hhZG93LWJsdXIgMTIuMDApCisgICAgKHNoYWRvdy1j
b2xvciAjMDAwMDAwKQorICAgIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApKSkKIChmaWxs
LWNvbXBvc2l0ZWQtcmVjdAogICAocmVjdCBhdCAoNTAsNTApIHNpemUgMTAweDEwMCkKICAgKGNv
bG9yICMwMDAwRkYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50
LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxp
c3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dAppbmRleCAzODZlMzk0
MTE4NWYwOWEzYzY4ZWM2YzJhZTg4ZGYxMWM3MGIwYTY5Li4xZGNhYmJlN2NlMDViY2JlOTRlMjMz
NjRlYmUyOWVhNzZmZjBmNTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMv
ZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKQEAg
LTYsMTEgKzYsMTIgQEAKICAgKGN0bSB7bT0oKDAuODcsMC41MCkoLTAuNTAsMC44NykpIHQ9KDgx
LjcwLC0xOC4zMCl9KSkKIChzYXZlKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikK
LSAgKHNoYWRvdy1ibHVyIDEyLjAwKQotICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9
MjApCi0gIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKLSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRp
dXMgMCkpCisgIChjaGFuZ2UtZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAgKGRyb3Atc2hhZG93Cisg
ICAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAx
Mi4wMCkKKyAgICAoc2hhZG93LWNvbG9yICMwMDAwMDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2Fj
eS1yYWRpdXMgMCkpKQogKGZpbGwtY29tcG9zaXRlZC1yZWN0CiAgIChyZWN0IGF0ICgwLDApIHNp
emUgMTAweDEwMCkKICAgKGNvbG9yICMwMDAwRkYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dAppbmRleCBiYzE3YjUx
MTQ5OWY4MjU2Yzk5MjkwZGFlODYxNGQ0ODk0Y2FmOWNjLi40ZGEwNmIzYzM4NzYyZWQ3MjU2ODU0
YzRlM2Y0ZTA3ODNhNjVmYjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMv
bGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXls
aXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKQEAgLTgsOSArOCwxMCBAQAogICAo
Y29tcG9zaXRlLW9wZXJhdGlvbiBzb3VyY2Utb3ZlcikKICAgKGJsZW5kLW1vZGUgbm9ybWFsKSBl
eHRlbnQgYXQgKDAsMCkgc2l6ZSAxMDR4MTA0KQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdz
IDMyOTYwKQotICAoZmlsbC1jb2xvciAjMDAwMEZGKQotICAoc3Ryb2tlLXN0eWxlIDApCisgIChj
aGFuZ2UtZmxhZ3MgW2ZpbGwtYnJ1c2gsIHN0cm9rZS1zdHlsZSwgc2hvdWxkLWFudGlhbGlhc10p
CisgIChmaWxsLWJydXNoCisgICAgKGNvbG9yICMwMDAwRkYpKQorICAoc3Ryb2tlLXN0eWxlIE5P
LVNUUk9LRSkKICAgKHNob3VsZC1hbnRpYWxpYXMgMCkpCiAoZHJhdy1yZWN0CiAgIChyZWN0IGF0
ICgwLDApIHNpemUgMTA0eDIpCg==
</data>
<flag name="commit-queue"
          id="482940"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455079</attachid>
            <date>2022-03-18 02:02:43 -0700</date>
            <delta_ts>2022-03-20 02:27:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220318020243.patch</filename>
            <type>text/plain</type>
            <size>197057</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uZGY2MzAzNGJlZDU1NjdhZjY3Y2EwYzExZjc2OGEz
NmIwZTU4NDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGN1bGF0ZURyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBseVNoYWRvd09mZnNldFdvcmthcm91
bmRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDR1NoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENHOjpzdHJva2VFbGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJy
dXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlQ1RNKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9r
ZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0lzQ2xlYXJlZCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVt
cEZvckZsYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU6OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNo
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29udGFpbnNPbmx5SW5saW5lU3Rh
dGVDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JUcmFuc3Bh
cmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JTYXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
U2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
ZXh0ZW50RnJvbUxvY2FsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlk
VXBkYXRlU3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZmlsbFJlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1JlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0xpbmUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdv
b2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBz
aG91bGQgYWx3YXlzIGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2Vh
YWQwNmJlN2Y4Y2VlMDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUw
Mjc5NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2Ug
R3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUg
YXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpyZWNvcmRTZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlB
Y3Rpdml0eUluTWFuYWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4u
ZWJjYjUzMTdjZDdmMzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xNTcxLDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExv
Y2FsaXplQXhpc05hbWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlSW1hZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMz
OWZmOGYyMjRlZjZhODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRl
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQw
Zjg5Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIy
ZWZkYzJjZWRkNTNmYzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2
NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBG
aWx0ZXJSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9t
YWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2
NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4
Rjc1MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcy
RkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8q
IFNvdXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NG
RTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3
NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBK
U01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU3OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07
CkBAIC0xMTQyOCw2ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3RBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyRkIyMzk2MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2gu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMg
LyogU291cmNlQnJ1c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNl
QnJ1c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjkxNTIsNiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAv
KiBTaGFkb3dCbHVyLmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hh
ZG93Qmx1ci5oICovLAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2Nh
bGl6ZUF4aXNOYW1lcy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3Vy
Y2VCcnVzaC5jcHAgKi8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJy
dXNoLmggKi8sCiAJCQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwICovLAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZm
ZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBE
NEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8q
IFNvdXJjZUFscGhhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NE
QUMgLyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdB
OUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REYxMzUwOTI0QzlGQ0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNj
Yjc4ODExN2RlNjkzOGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiB0ZXh0UnVuLCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICog
bWFza1JlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwotICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7Ci0gICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRy
b3BTaGFkb3coKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3Qp
OwotICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0g
ICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAg
ICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAg
ICAgICBjLT5jbGlwKHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0g
b2Zmc2V0OworICAgICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAg
ICAgICAgICBjLT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0Nv
bG9yLCBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93
KGRyb3BTaGFkb3cub2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29s
b3IsIFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQog
ICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZh
NGNiMmEyLi4xYmQ2NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJl
dHVybiBtX3ByaW1hcnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lk
IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0
ZVN0YXRlKCkgaW5zdGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAg
IC8vIGFyZSBhbHNvIGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGUsIHNvIHRoYXQgY29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0
aGF0IHJlYWRzIGZyb20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3By
aW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlD
b250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51
cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0
YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1Mp
ICYmICFVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0
MmI3Mzc3NzI3YzExYTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQy
ZTM2N2RkMzdmMDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9T
KFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKiBkZXByZWNhdGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5k
ZXggMjVhM2QzZmU4NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgy
MmYxMTNkYmJiMDYxNDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwx
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250
JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQo
KTsKIAotICAgIHZvaWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0g
bnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsK
KyAgICB2b2lkIHVwZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQg
dXBkYXRlU3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIHsKICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAg
Tm8KICAgICB9OwotICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hh
ZG93JiwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYg
IVBMQVRGT1JNKFdJTikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTEx
MSwyNyArMTExLDEzIEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxU
ZXh0TWF0cml4OwogCiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsK
LSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBn
cmFkaWVudDsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNm
b3JtOwotICAgICAgICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0g
ICAgICAgIFN0eWxlIGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAg
ICAgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VC
cnVzaDsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hh
ZG93U3RhdGUgewotICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZs
b2F0IGJsdXIgeyAwIH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJv
b2wgaWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRv
d1N0YXRlIHNoYWRvdzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBi
b29sIGlnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmln
aW5hbFN0YXRlOwotICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJj
OGEzZTg2My4uMDMxMDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC00Myw2ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2VGbGFncyYgY2hhbmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQor
CiBHcmFwaGljc0NvbnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0
YWNrLmlzRW1wdHkoKSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmUoKQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0Ojp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7
Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShzdGF0ZSwgZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0
RHJhd2luZ1N0YXRlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAt
OTMsODQgKzk4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxw
dHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBT
aGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7Ci0gICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVz
TW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
LXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUu
c2hhZG93Qmx1ciA9IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAg
bV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBt
X3N0YXRlLnNoYWRvd09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAg
IGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0g
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJl
ZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsK
LSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17
Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwot
ICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9
OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50
Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAg
bV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklY
TUU6IGFsc28gZmlsbCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3Vu
dDsKQEAgLTQ5MSwxMyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRG
aWxsQ29sb3Iob2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRl
T3BlcmF0aW9uQ2hhbmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVU
b1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0
cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRo
cywgd2UgYWRkIGluIDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0
IGFyaXRobWV0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZk
M2ZlZi4uZmIyMzdhNTBlOWIwNTk0MmM5OTI5NWM2MTY3MzhiY2U0ZWU1MjZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTY0LDkgKzY0LDggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFz
cyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29u
dGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlRmxhZ3MmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0Nv
bnRleHQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtODAsODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENv
bnRleHQgU3RhdGUKIAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVz
cykgeyBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0K
LSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9r
ZVRoaWNrbmVzczsgfQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHls
ZSkgeyBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0K
LQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsK
LSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUNvbG9yOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4o
UmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmls
bENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAg
IEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVz
aC5ncmFkaWVudCgpOyB9CisgICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmZpbGxCcnVzaC5wYXR0ZXJuKCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1
c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNo
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYg
cGF0dGVybikgeyBtX3N0YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9
IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VU
cmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgPSB7IH0pOwotICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0Rmls
bFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFu
Z2UpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZp
bGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0
YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ry
b2tlQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIFBhdHRlcm4q
IHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRl
cm4oKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVz
aCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsg
bV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYm
IGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7
IG1fc3RhdGUuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNm
b3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tl
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRT
dHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwot
ICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0
dGVybi5nZXQoKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tl
U3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBz
aGFkb3dCbHVyKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAg
ICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCku
Y29sb3I7IH0KKyAgICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNo
YWRvdykgeyBtX3N0YXRlLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQs
IGZsb2F0IGJsdXJSYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBz
aGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hh
ZG93KHsgb2Zmc2V0LCBibHVyUmFkaXVzLCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQor
ICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9v
bCBoYXNWaXNpYmxlU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJs
ZSgpOyB9CisgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNo
YWRvdygpLmlzQmx1cnJlZCgpOyB9CisgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVy
biBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBv
c2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21w
b3NpdGVNb2RlKCkub3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBv
c2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9z
aXRlTW9kZShjb21wb3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2Rl
KHsgb3BlcmF0aW9uLCBibGVuZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9
IHsgfSk7Ci0gICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmFscGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0
YXRlLnNldEFscGhhKGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cykgeyBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtczsg
fQorICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01v
ZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4
dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgCisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQor
ICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFs
aWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hh
bmdlKTsgfQogICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNo
b3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxp
YXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHMgPSBzaG91bGRTbW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
U21vb3RoRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9
CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7
IG1fc3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhl
bC1xdWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxp
Z25pbmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRv
IHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lk
IHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29s
IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5z
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsg
fQotICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAg
IHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9
Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7IH0KLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0
RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdM
dW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBi
b29sIGRyYXdMdW1pbmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5h
bmNlTWFzazsgfQotCi0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkgeyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
OyB9Ci0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwg
U2hhZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAg
IGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29s
b3IuaXNWaXNpYmxlKCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93
T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAg
Ym9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygp
ICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2so
Ym9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRy
YXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29s
IHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJr
QXBwZWFyYW5jZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBz
ZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0
VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5t
ZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERy
YXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkg
Y2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdh
dGUgY2hhbmdlcwogICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAg
dmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCByZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkz
NTQwODY2NGMyNzZmY2UzZDU5OWU2MTRmOWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1
NzdhNTcwN2I5N2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgog
Ci0jaW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
ZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVy
dHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmxh
Zyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAg
OiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0g
ICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFw
aGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3Mm
IGNoYW5nZUZsYWdzKQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdy
YXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1H
cmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3ND
b250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1
bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIGZsYWdzKQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2
ZUNoYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQg
PSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0
cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3Jh
ZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xv
ciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdy
YWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0K
LQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAg
ICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9
IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hh
ZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNr
bmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4
dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAg
IHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1
bGUgPSBzdGF0ZS5maWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHBy
aW1pdGl2ZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ry
b2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0
ZS5hbHBoYTsKKyAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZl
Q2hhbmdlRmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNv
bXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5k
TW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlh
bGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZv
bnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
Ci0gICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFz
a0NoYW5nZSkpCi0gICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KIAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5n
ZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVy
dHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8
IHRoaXMtPipwcm9wZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hh
bmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0
YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxl
LCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7
CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0
eWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHls
ZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMsICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0g
c3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0Fw
cGVhcmFuY2UpOwogI2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQ
YXR0ZXJuKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFu
Z2UsIGZpbGxHcmFkaWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBh
dHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0
YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1f
c3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0
YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxh
Z3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25l
c3MpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5n
ZSwgdGV4dERyYXdpbmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxDb2xvckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTdHJva2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAg
ICAgICAmJiAobV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciB8fCBtX3N0YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAg
IGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KFNob3VsZEFudGlhbGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9u
dHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19G
T1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VE
YXJrQXBwZWFyYW5jZSk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoKSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9
IDE7CiAjZW5kaWYKLQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
c3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3Mp
OwotCi0gICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1v
dmUoc3Ryb2tlRmxhZ3MpOwotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGll
bnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAg
IGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdz
LnJlbW92ZShmaWxsRmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNo
YW5nZU5hbWVzW10gPSB7CisgICAgICAgICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVs
ZSIsCisKKyAgICAgICAgInN0cm9rZS1icnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNz
IiwKKyAgICAgICAgInN0cm9rZS1zdHlsZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwK
KyAgICAgICAgImRyb3Atc2hhZG93IiwKKworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1h
Z2UtaW50ZXJwb2xhdGlvbi1xdWFsaXR5IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwK
KworICAgICAgICAic2hvdWxkLWFudGlhbGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZv
bnRzIiwKKyAgICAgICAgInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAg
ICJzaGFkb3dzLWlnbm9yZS10cmFuc2Zvcm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1h
c2siCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmst
YXBwZWFyYW5jZSIKKyNlbmRpZgorICAgIH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9y
RmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxh
Z3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhbmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYg
bWFzaykpOwogCi0gICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0
ZUNoYW5nZU5hbWVzW2luZGV4XTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0
YXRlLnN0cm9rZVBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxQYXR0ZXJuKCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwg
bV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRUZXh0RHJhd2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNv
bG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0
YXRlLmZpbGxDb2xvcik7CisgICAgYXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8g
R3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7Cisg
ICAgICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KG5hbWUsIHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHls
ZSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAK
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1
bGUpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAg
ICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFD
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1
bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OlN0cm9rZUJydXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVt
cChDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5n
ZTo6U3Ryb2tlU3R5bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1v
ZGUpOworICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNo
YWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxp
YXMobV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZv
bnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0
LnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dERyYXdMdW1pbmFuY2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkobV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1w
KENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6YWxwaGEsICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdl
OjpBbHBoYSkpOworICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0
YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBk
dW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hh
bmdlOjpUZXh0RHJhd2luZ01vZGUpKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMs
ICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOwor
ICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFt
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cywgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAg
ICBkdW1wKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBw
ZWFyYW5jZShtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNl
RGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFy
a0FwcGVhcmFuY2UsICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSkpOwogI2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBj
aGFuZ2UpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZs
YWdzLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdHJva2UtZ3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVy
biIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGll
bnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJm
aWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0Js
dXIpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNo
YWRvd09mZnNldCk7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9z
dGF0ZS5zaGFkb3dDb2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2Ut
bGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNN
b2RlOjpMZWdhY3kpOwotICAgIH0KLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRy
YXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRl
LnN0cm9rZUNvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBt
X3N0YXRlLmZpbGxSdWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
YWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxl
bmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFu
dGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInNob3VsZC1zbW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNl
TWFzayk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1f
c3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VO
YW1lKGNoYW5nZSk7CisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVD
aGFuZ2UpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0g
ICAgcmV0dXJuIHRzOworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFm
ZGJmMDdmOGE1OTU5NTk2Ny4uYTkyMTI3OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUg
IlNvdXJjZUJydXNoLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgR3JhZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRv
cj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90
IHsKLSAgICAgICAgU3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAwLAotICAgICAgICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDEsCi0gICAgICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMiwKLSAgICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAzLAotICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDQsCi0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSAgICAgICAgICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01v
ZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRp
YWxpYXNDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRT
bW9vdGhGb250c0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAg
ICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAg
IGVudW0gY2xhc3MgQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMSwKKworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8
IDIsCisgICAgICAgIFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAg
ICAgU3Ryb2tlU3R5bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBv
c2l0ZU1vZGUgICAgICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAg
ICAgICAgICAgICAgID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8
PCA4LAorICAgICAgICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAg
ICAgICAgU2hvdWxkQW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hv
dWxkU21vb3RoRm9udHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgICAgID0gMSA8PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0g
MSA8PCAxNCwKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJr
QXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1
c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hh
bmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VG
bGFncyBjaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRp
ZEFwcGx5Q2hhbmdlcygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0Rmls
bEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZp
bGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAg
IHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3Ig
fSk7IH0KKyAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdy
YWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFk
ZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7
IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1
bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSwgZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdy
YWRpZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0
U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNo
KTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
QnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkg
eyBzdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zv
cm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNl
dFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQ
YXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VC
cnVzaCk7IH0KKworICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNr
bmVzcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lk
IHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U3Ryb2tlU3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0
cm9rZVN0eWxlKTsgfQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUg
Y29tcG9zaXRlTW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2
b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgZHJvcFNoYWRvdyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxw
aGEpOyB9CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAg
dm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdN
b2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9p
ZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzLCBzaG91bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250
cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3Vs
ZFNtb290aEZvbnRzKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJh
d0x1bWluYW5jZU1hc2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1h
c2spOyB9CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURh
cmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpVc2VEYXJrQXBwZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSwgdXNlRGFya0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGZpbGxHcmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47Cisg
ICAgYm9vbCBoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKKyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKLSAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENv
bG9yIGZpbGxDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBz
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAg
IFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZp
bGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJv
a2VCcnVzaCB7IENvbG9yOjpibGFjayB9OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAg
fTsKLSAgICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9Owot
CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRS
dWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9k
ZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNv
dXJjZU92ZXIgfTsKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwg
fTsKKyAgICAKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVy
YXRvcjo6U291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRy
b3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5
OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hh
ZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRB
bnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29s
IHNob3VsZEFudGlhbGlhcyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsg
dHJ1ZSB9OworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJh
d0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
Ci0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSB7IGZhbHNlIH07CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMtPipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy0+KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChj
aGFuZ2UpOworICAgIH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3Rh
dGUoc3RhdGUpCi0gICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAo
dGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRk
KGNoYW5nZSk7CiAgICAgfQorfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBj
b25zdDsKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsm
XShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsK
KyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBl
bmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0g
ICAgCi0gICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIg
PDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19
OworICAgIGVuY29kZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxs
UnVsZSwgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxS
dWxlKTsKKworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKwor
ICAgIGVuY29kZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9w
U2hhZG93KTsKKworICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdp
bmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2lu
Z01vZGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29k
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFu
Y2UpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJv
cGVydHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2Up
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBl
ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxQcm9wZXJ0eVR5cGU+IHZhbHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHN0YXRlLipwcm9wZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
IAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFn
cz4gY2hhbmdlRmxhZ3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNo
YW5nZUZsYWdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgc3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25l
c3MpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VTdHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhh
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxk
QW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSk7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCAr
MjU5LDI3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwK
LSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5h
bmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxl
LAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU1vZGUsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkRyb3BTaGFkb3csCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6QWxwaGEsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlRleHREcmF3aW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRz
LAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlm
CiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuY3BwCmluZGV4IDE1ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0Yjdh
OTNhYjQuLjEyZTRmZmJmMDg0NzM5MzkzOGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBA
IC0xMzYsNiArMTM2LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxl
bmRNb2RlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29t
cG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdGlvbiIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoImJsZW5kLW1vZGUiLCBjb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cm9wU2hhZG93JiBkcm9wU2hhZG93KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9m
ZnNldCIsIGRyb3BTaGFkb3cub2Zmc2V0KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1i
bHVyIiwgZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRv
dy1jb2xvciIsIGRyb3BTaGFkb3cuY29sb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
cy11c2UtbGVnYWN5LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRp
dXNNb2RlOjpMZWdhY3kpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkpCit7CisgICAgc3dpdGNoIChpbnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRl
cnBvbGF0ZToKKyAgICAgICAgdHMgPDwgIkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwg
IkxPVyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1l
ZGl1bToKKyAgICAgICAgdHMgPDwgIk1FRElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxl
KSB7CkBAIC0xODIsNCArMjIwLDQyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIExpbmVKb2luIGpvaW5TdHlsZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQor
eworICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0
cm9rZToKKyAgICAgICAgdHMgPDwgIk5PLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3Ryb2tlU3R5bGU6OlNvbGlkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tF
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgor
ICAgICAgICB0cyA8PCAiRE9UVEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0Ui
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6Cisg
ICAgICAgIHRzIDw8ICJET1VCTEUtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dHJva2VTdHlsZTo6V2F2eVN0cm9rZToKKyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkK
K3sKKyAgICBzd2l0Y2ggKHRleHREcmF3aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdN
b2RlOjpGaWxsOgorICAgICAgICB0cyA8PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVGV4dERyYXdpbmdNb2RlOjpTdHJva2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgKaW5kZXggZGVjNDM0NzAyY2Y3NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcy
OTc4MzFhMmJmMzQ2OGNhZWM4ZjUyMDBmMDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVu
ZE1vZGUgOiB1aW50OF90IHsKICAgICBQbHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0
ZU1vZGUgeworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUg
YmxlbmRNb2RlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90
aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24g
JiYgYmxlbmRNb2RlID09IG90aGVyLmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0
ZU1vZGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
b3BlcmF0aW9uOworICAgIGVuY29kZXIgPDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9w
ZXJhdG9yPiBvcGVyYXRpb247CisgICAgZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFv
cGVyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAg
IGlmICghYmxlbmRNb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyAqb3BlcmF0aW9uLCAqYmxlbmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50
TWFya2VyTGluZVN0eWxlIHsKICAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAg
ICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2
ICsxNDksNjcgQEAgc3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUs
ICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1
ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8g
SXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNo
YWRvd1JhZGl1c01vZGUgOiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKwor
c3RydWN0IERyb3BTaGFkb3cgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1
clJhZGl1cyB7IDAgfTsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJh
ZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0Js
dXJyZWQoKSBjb25zdCB7IHJldHVybiBpc1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAg
Ym9vbCBoYXNPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJs
ZSgpICYmICFvZmZzZXQuaXNaZXJvKCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJv
cFNoYWRvdyYgYikKK3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVy
UmFkaXVzID09IGIuYmx1clJhZGl1cyAmJiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNN
b2RlID09IGIucmFkaXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RHJvcFNoYWRvdzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBvZmZzZXQ7CisgICAgZW5jb2RlciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwg
Y29sb3I7CisgICAgZW5jb2RlciA8PCByYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorc3RkOjpvcHRpb25hbDxEcm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0Owor
ICAgIGRlY29kZXIgPj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAg
ICBkZWNvZGVyID4+IGJsdXJSYWRpdXM7CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7Cisg
ICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNN
b2RlOworICAgIGRlY29kZXIgPj4gcmFkaXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpi
bHVyUmFkaXVzLCAqY29sb3IsICpyYWRpdXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFk
aWVudFNwcmVhZE1ldGhvZCA6IHVpbnQ4X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAt
MTU4LDEzICsyNTcsNiBAQCBlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3Qgewog
fTsKIHVzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9k
ZT47CiAKLS8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBh
bmQgLXdlYmtpdC1ib3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2Yg
cmFkaWkgPiA4cHguCi1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBE
ZWZhdWx0LAotICAgIExlZ2FjeQotfTsKLQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhh
YmV0aWNUZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwx
NCBAQCBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29t
cG9zaXRlTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25R
dWFsaXR5KTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBMaW5lQ2FwKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUp
OworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFRleHREcmF3aW5nTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3Yzlh
MTFiNDIyNDY4ODVlLi42YzMzMzM5NjI3MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBo
aWNzQ29udGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWlu
dEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50
ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29u
cyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsg
fQogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNp
ZiBVU0UoQ0cpCiAgICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
aW5kZXggYmIxMzhiNTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFh
YmZjZTM4MDgxODNhM2IyMzFmYmNlMGZmYjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNo
YWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQog
Ci1TaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkKLSAgICA6IG1fY29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMo
c3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRl
LnNoYWRvd09mZnNldCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BT
aGFkb3cmIGRyb3BTaGFkb3csIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBt
X2NvbG9yKGRyb3BTaGFkb3cuY29sb3IpCisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5i
bHVyUmFkaXVzLCBkcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hh
ZG93Lm9mZnNldCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3Jy
ZWN0bHkgcmVuZGVycyBzaGFkb3dzIHdpdGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0v
ODEwMzQ0Mj4pLAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVo
YXZpb3IgZm9yIGNhbnZhcyBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5z
aGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBm
bG9hdCBzaGFkb3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7
CisgICAgaWYgKGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdh
Y3kpIHsKKyAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRy
b3BTaGFkb3cuYmx1clJhZGl1cyk7CiAgICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShz
aGFkb3dCbHVyLCBzaGFkb3dCbHVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3
ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhLi44ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2
MTc3MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlOworc3RydWN0IERyb3BTaGFkb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3Mg
U2hhZG93Qmx1ciB7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIo
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
ZmFsc2UpOwotICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1z
ID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCcnVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCcnVzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUw
NzM1MjQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJydXNoLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTb3VyY2VCcnVzaC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpT
b3VyY2VCcnVzaChjb25zdCBDb2xvciYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1
c2gpCisgICAgOiBtX2NvbG9yKGNvbG9yKQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkK
K3sKK30KKworY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRy
YW5zZm9ybT4gaWRlbnRpdHk7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRl
bnRpdHkuZ2V0KCk7CisKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVz
aDo6TG9naWNhbEdyYWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3Jh
ZGllbnQtPnNwYWNlVHJhbnNmb3JtOworCisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQor
CitHcmFkaWVudCogU291cmNlQnJ1c2g6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
YnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9
IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisg
ICAgICAgIHJldHVybiBncmFkaWVudC0+Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1BhdHRlcm4qIFNvdXJjZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0
ZXJuID0gc3RkOjpnZXRfaWY8UmVmPFBhdHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAg
ICByZXR1cm4gcGF0dGVybi0+cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
U291cmNlQnJ1c2g6OnNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVz
aDo6TG9naWNhbEdyYWRpZW50IHsgV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0g
fTsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKQoreworICAgIG1fYnJ1c2ggPSB7IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYg
YnJ1c2gpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOwor
CisgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImdyYWRpZW50IiwgZ3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVy
biA9IGJydXNoLnBhdHRlcm4oKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwg
cGF0dGVybik7CisKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5YjlmYWU1NDk0MzQ5ZGI1NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5o
CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgorI2luY2x1ZGUgIlBhdHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTb3VyY2VCcnVzaCB7CitwdWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAg
ICAgc3RydWN0IExvZ2ljYWxHcmFkaWVudCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdy
YWRpZW50OworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisg
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxMb2dpY2FsR3JhZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAg
IH07CisKKyAgICAgICAgc3RkOjp2YXJpYW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+
PiBicnVzaDsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAg
ICBTb3VyY2VCcnVzaCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVz
aChjb25zdCBDb2xvciYsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOwor
CisgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAg
IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBt
X2JydXNoOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBzcGFjZVRyYW5zZm9ybSA9IHsgfSk7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmKTsKKworICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAm
JiBtX2NvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVy
Jik7CisKK3ByaXZhdGU6CisgICAgQ29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAg
IHN0ZDo6b3B0aW9uYWw8QnJ1c2g+IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBT
b3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5n
cmFkaWVudC5wdHIoKSA9PSBiLmdyYWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0g
Yi5zcGFjZVRyYW5zZm9ybTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3Vy
Y2VCcnVzaDo6QnJ1c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihhLmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJy
dXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBiR3JhZGllbnQgPSBzdGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudD4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQg
PT0gKmJHcmFkaWVudDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogYlBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1
c2gmIGIpCit7CisgICAgcmV0dXJuIGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgp
ID09IGIuYnJ1c2goKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8
PCBzcGFjZVRyYW5zZm9ybTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNo
OjpCcnVzaDo6TG9naWNhbEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdy
YWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNw
YWNlVHJhbnNmb3JtOworICAgIGlmICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNl
VHJhbnNmb3JtIH0gfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBX
VEY6OnN3aXRjaE9uKGJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYg
Z3JhZGllbnQpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAg
ICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNv
dXJjZUJydXNoOjpCcnVzaD4gU291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29k
ZXIgPj4gaGFzR3JhZGllbnQ7CisgICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBn
cmFkaWVudCA9IExvZ2ljYWxHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAo
IWdyYWRpZW50KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpncmFkaWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVy
biA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9
IH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7Cisg
ICAgZW5jb2RlciA8PCBtX2JydXNoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxTb3VyY2VCcnVzaD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4g
Y29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29k
ZXIgPj4gYnJ1c2g7CisgICAgaWYgKCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBTb3VyY2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9
CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBT
b3VyY2VCcnVzaCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cAppbmRleCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi4yZGE0OTFm
ZDg3ZjZjZmJiMzNlNDdkOTgxMjMzN2JmMjE1OGY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
QEAgLTU1OSw0MiArNTU5LDQyIEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAg
ICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRl
cm4pIHsKLSAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVy
bi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1
dG8gZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBh
dHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0
YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdl
ID0gZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0
ZXJuSW1hZ2Uuc2l6ZSgpOwotICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRY
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZ
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZp
bGxHcmFkaWVudCkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAg
ICAgICAgcGF0dGVybi50cmFuc2Zvcm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNm
b3JtKCk7CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7
CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAg
fSBlbHNlIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgp
KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4o
MSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlm
IChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9
IHN0YXRlLmZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1
c3RlZCA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bG9yID0gc3RhdGUuZmlsbENvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5j
b2xvcigpOwogfQogCiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAg
ICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0
YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0o
KSkpOwotICAgIGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRp
ZW50LmJhc2UgPSBzdGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJu
ID0gc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgp
KSk7CisgICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNo
LmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRl
LmFscGhhLCBzdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihz
dGF0ZS5hbHBoYSwgc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAg
Y29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hh
ZG93U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAs
IGNvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cu
b2Zmc2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBj
b2xvcihzdGF0ZS5kcm9wU2hhZG93LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhh
KQotICAgICwgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Ip
CisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJh
dGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggYTdhZjBjZWI1MjQ5MDQwNDFlZTEyZDUxZjg5YzZk
ZjE2Y2IzNjAzNy4uZmU3MzhiZGY3N2U4Y2U3NjJhY2M5YTBmMGY4NGRkODM2MWM2OWMxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgYXV0
byYgc3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0
cm9rZVNvdXJjZShzdGF0ZSksCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBv
aW50LCBzY2FsZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNl
dCwKLSAgICAgICAgc3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3Ms
IHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9m
ZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZ01vZGUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDkwMDk2YWM2NDUyMjRkYmZkYzYwYmZhNmNhY2Fk
MDMwNzZjYjI5N2QuLjg1N2NlZDFhMjcwMzc2MWIxZDM3ODNiZGVlMzA4Mzc0ODczNjFmODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YWRpZW50Q2Fpcm8uY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5f
dD4gR3JhZGllbnQ6OmNyZWF0ZVBhdHRlcm4oZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IEFmZmlu
ZVQKIAogdm9pZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEu
MCwgY29udGV4dC5zdGF0ZSgpLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBhdXRv
IHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5maWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpKTsKICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGMzMjMwNDQ1MzUxYjAzZjJhYTg3MzZhZWUyYmNl
NzhiYzQzNjFmNDkuLmJjMzg5YWU4MDEyZDUyOWEwZjlhYTlkN2VlNGNmY2ZmNGJiYzc1MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENhaXJvOjpyZXN0b3JlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQog
ewogICAgIEFTU0VSVCghcmVjdC5pc0VtcHR5KCkpOwotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+
c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd1JlY3QoKnRoaXMsIHJlY3QsIGJvcmRlclRoaWNrbmVz
cywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3Ip
OworICAgIENhaXJvOjpkcmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBmaWxs
Q29sb3IoKSwgc3Ryb2tlU3R5bGUoKSwgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0x
NTQsMTUgKzE1MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZShjb25z
dCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKHN0cm9rZVN0
eWxlKCkgPT0gTm9TdHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9pbnQy
LCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNr
bmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMs
IHBvaW50MSwgcG9pbnQyLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlj
a25lc3MoKSwgc2hvdWxkQW50aWFsaWFzKCkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5
IHVzZWQgdG8gZHJhdyB0aGUgbGl0dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
LSAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNl
KCp0aGlzLCByZWN0LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBDYWlybzo6ZHJhd0VsbGlw
c2UoKnRoaXMsIHJlY3QsIGZpbGxDb2xvcigpLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigp
LCBzdHJva2VUaGlja25lc3MoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZp
bGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0xOTYsOCArMTkzLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogewotICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBhdXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJu
KDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1dG8gcGF0dGVy
biA9IGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpKTsKICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA5LDcgKzIw
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBw
cmV2aW91c09wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CisgICAgQ29tcG9zaXRl
T3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwogCiAgICAg
Q2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIGNvbXBvc2l0ZU9wZXJh
dG9yLCBibGVuZE1vZGUpOwogICAgIENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3Is
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpAQCAtMjY1LDcgKzI2MSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGZsb2F0IHRoaWNrCiB7CiAgICAgaWYgKHdpZHRocy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBDYWlybzo6ZHJhd0xpbmVzRm9yVGV4dCgqdGhpcywgcG9pbnQsIHRoaWNrbmVz
cywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgbV9zdGF0ZS5zdHJva2VDb2xv
cik7CisgICAgQ2Fpcm86OmRyYXdMaW5lc0ZvclRleHQoKnRoaXMsIHBvaW50LCB0aGlja25lc3Ms
IHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0cm9rZUNvbG9yKCkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC0y
ODQsMjggKzI4MCwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUoZmxv
YXQgeCwgZmxvYXQgeSkKICAgICBDYWlybzo6dHJhbnNsYXRlKCp0aGlzLCB4LCB5KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyBmbGFncykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCku
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSkK
ICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0
cm9rZVRoaWNrbmVzcyk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlU3R5bGVDaGFuZ2UpCisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpCiAgICAgICAgIENhaXJvOjpT
dGF0ZTo6c2V0U3Ryb2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKTsKIAotICAgIGlm
IChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpIHsKKyAgICBpZiAo
c3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRy
b3BTaGFkb3cpKSB7CiAgICAgICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcykg
ewogICAgICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBh
c3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgICAgICAvLyBX
ZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRl
IFkgYXhpcwotICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuc2hhZG93T2Zm
c2V0OwotICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSB7IHNoYWRvd09mZnNldC53
aWR0aCgpLCAtc2hhZG93T2Zmc2V0LmhlaWdodCgpIH07CisgICAgICAgICAgICBhdXRvJiBzaGFk
b3dPZmZzZXQgPSBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldDsKKyAgICAgICAgICAgIG1fc3RhdGUu
ZHJvcFNoYWRvdy5vZmZzZXQgPSB7IHNoYWRvd09mZnNldC53aWR0aCgpLCAtc2hhZG93T2Zmc2V0
LmhlaWdodCgpIH07CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKQotICAgICAgICBDYWlybzo6
U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlT3BlcmF0
b3IsIHN0YXRlLmJsZW5kTW9kZSk7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkKKyAgICAgICAgQ2Fp
cm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU1v
ZGUub3BlcmF0aW9uLCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CiAKLSAgICBpZiAo
ZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKQorICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U2hvdWxkQW50aWFsaWFzKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRp
YWxpYXMoKnRoaXMsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisKKyAgICBzdGF0ZS5kaWRBcHBs
eUNoYW5nZXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y29uY2F0Q1RNKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQpAQCAtNDM0LDcgKzQzMiw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCoKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAg
Q2Fpcm86OmRyYXdHbHlwaHMoKnRoaXMsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86
OlN0cm9rZVNvdXJjZShzdGF0ZSksCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSks
IHBvaW50LCBzY2FsZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9m
ZnNldCwKLSAgICAgICAgc3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25l
c3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRl
LnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93
Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCmluZGV4IDU2NDYxYzE1OWE1ODNjODljNjFl
OGYwMmU0ZTBiZWU3YjA1OTMyZWYuLjczMjE0NzBmYzRmMWM3ZmIxZjNhZjdiYjQ2OGVhYTE3YzVl
MWQ1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBHcmFw
aGljc0NvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKLSAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUo
R3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBm
aW5hbDsKICAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAzMjQ1YzYwMDQzMTU1MmQ1MTNiNzRlZWJjMDlmMzE4
ZWVjM2RkNzJhLi5mOWZlYWI0ZTI2ZjI5ODMzODFkY2RkYTRkNTRjNTBiNzUzOGU3ODY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCkBAIC0xODUsMTMgKzE4NSwxNCBAQCBzdGF0aWMgdm9pZCBzZXRDR0Js
ZW5kTW9kZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZQogfQogCiBHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0coQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCkKKyAgICA6IEdyYXBoaWNzQ29udGV4dCh7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcyB9
KQogewogICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGEg
PSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKGNnQ29udGV4dCk7CiAgICAgLy8g
TWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAg
IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIH0pOworICAgIGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOwogICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNv
cmVJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShw
bGF0Zm9ybUNvbnRleHQoKSkpOwogfQogCkBAIC0zMzgsNyArMzM5LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29u
c3QgRmxvYXRTaXoKICNlbmRpZgogCiAgICAgYXV0byBvbGRDb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGF1dG8gb2xkQmxlbmRNb2RlID0gYmxlbmRNb2RlT3Bl
cmF0aW9uKCk7CisgICAgYXV0byBvbGRCbGVuZE1vZGUgPSBibGVuZE1vZGUoKTsKICAgICBzZXRD
R0JsZW5kTW9kZShjb250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogCiAgICAgLy8gTWFrZSB0aGUgb3JpZ2luIGJlIGF0IGFkanVzdGVkRGVz
dFJlY3QubG9jYXRpb24oKQpAQCAtNTU1LDEzICs1NTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dENHOjphcHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGlmICghbV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuKQorICAgIGlmICghc3Ryb2tlUGF0dGVybigpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZm
aW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFz
ZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5z
dHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CisgICAg
YXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBzdHJva2VQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0
dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAg
cmV0dXJuOwogCkBAIC01NzQsMTMgKzU3NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjph
cHBseVN0cm9rZVBhdHRlcm4oKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQ
YXR0ZXJuKCkKIHsKLSAgICBpZiAoIW1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKCFmaWxs
UGF0dGVybigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0g
PSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIGF1
dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gZmlsbFBh
dHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwogICAgIGlmICgh
cGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5MSwxMSArNTkyLDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIENHQ29udGV4
dFNldEZpbGxQYXR0ZXJuKGNnQ29udGV4dCwgcGxhdGZvcm1QYXR0ZXJuLmdldCgpLCAmcGF0dGVy
bkFscGhhKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgQ0dQYXRoRHJhd2luZ01vZGUmIG1vZGUp
CitzdGF0aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01vZGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBDR1BhdGhEcmF3aW5nTW9kZSYgbW9kZSkKIHsKLSAgICBib29sIHNo
b3VsZEZpbGwgPSBzdGF0ZS5maWxsUGF0dGVybiB8fCBzdGF0ZS5maWxsQ29sb3IuaXNWaXNpYmxl
KCk7Ci0gICAgYm9vbCBzaG91bGRTdHJva2UgPSBzdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IChzdGF0
ZS5zdHJva2VTdHlsZSAhPSBOb1N0cm9rZSAmJiBzdGF0ZS5zdHJva2VDb2xvci5pc1Zpc2libGUo
KSk7Ci0gICAgYm9vbCB1c2VFT0ZpbGwgPSBzdGF0ZS5maWxsUnVsZSA9PSBXaW5kUnVsZTo6RXZl
bk9kZDsKKyAgICBib29sIHNob3VsZEZpbGwgPSBjb250ZXh0LmZpbGxQYXR0ZXJuKCkgfHwgY29u
dGV4dC5maWxsQ29sb3IoKS5pc1Zpc2libGUoKTsKKyAgICBib29sIHNob3VsZFN0cm9rZSA9IGNv
bnRleHQuc3Ryb2tlUGF0dGVybigpIHx8IChjb250ZXh0LnN0cm9rZVN0eWxlKCkgIT0gTm9TdHJv
a2UgJiYgY29udGV4dC5zdHJva2VDb2xvcigpLmlzVmlzaWJsZSgpKTsKKyAgICBib29sIHVzZUVP
RmlsbCA9IGNvbnRleHQuZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZDsKIAogICAgIGlm
IChzaG91bGRGaWxsKSB7CiAgICAgICAgIGlmIChzaG91bGRTdHJva2UpIHsKQEAgLTYyNCw5ICs2
MjUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3Jt
Q29udGV4dCgpOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9IG1fc3Rh
dGU7CiAKLSAgICBpZiAoc3RhdGUuZmlsbEdyYWRpZW50IHx8IHN0YXRlLnN0cm9rZUdyYWRpZW50
KSB7CisgICAgaWYgKGZpbGxHcmFkaWVudCgpIHx8IHN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAg
ICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgb3B0aW1pemVkIHdheSB0byBmaWxsICYgc3Ryb2tlIGEg
cGF0aCB1c2luZyBncmFkaWVudHMKICAgICAgICAgLy8gRklYTUU6IEJlIHNtYXJ0ZXIgYWJvdXQg
dGhpcy4KICAgICAgICAgZmlsbFBhdGgocGF0aCk7CkBAIC02MzQsMTMgKzYzNCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxs
UGF0dGVybigpKQogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7Ci0gICAgaWYgKHN0YXRlLnN0
cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJv
a2VQYXR0ZXJuKCk7CiAKICAgICBDR1BhdGhEcmF3aW5nTW9kZSBkcmF3aW5nTW9kZTsKLSAgICBp
ZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUoc3RhdGUsIGRyYXdpbmdNb2RlKSkgeworICAgIGlmIChj
YWxjdWxhdGVEcmF3aW5nTW9kZSgqdGhpcywgZHJhd2luZ01vZGUpKSB7CiAjaWYgSEFWRShDR19D
T05URVhUX0RSQVdfUEFUSF9ESVJFQ1QpCiAgICAgICAgIENHQ29udGV4dERyYXdQYXRoRGlyZWN0
KGNvbnRleHQsIGRyYXdpbmdNb2RlLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKICNl
bHNlCkBAIC02NTgsNyArNjU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgo
Y29uc3QgUGF0aCYgcGF0aCkKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0
byBmaWxsR3JhZGllbnQgPSB0aGlzLT5maWxsR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFz
U2hhZG93KCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcGF0aC5mYXN0Qm91bmRp
bmdSZWN0KCk7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFw
U2l6ZShyZWN0LnNpemUoKSk7CkBAIC02NzAsMzMgKzY3MCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0
VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNv
bnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICBpZiAo
ZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRl
eHRFT0NsaXAobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUuZmls
bEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50
LT5wYWludChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5S
ZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7
CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxl
OjpFdmVuT2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwog
Ci0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAg
ICAgICAgZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZp
bGxQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICNpZiBIQVZFKENHX0NP
TlRFWFRfRFJBV19QQVRIX0RJUkVDVCkKICAgICBDR0NvbnRleHREcmF3UGF0aERpcmVjdChjb250
ZXh0LCBmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkID8ga0NHUGF0aEVPRmlsbCA6IGtD
R1BhdGhGaWxsLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKQEAgLTcxNyw3ICs3MTcs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAg
aWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBzdHJva2VHcmFkaWVu
dCA9IHRoaXMtPnN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7
CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwog
ICAgICAgICAgICAgZmxvYXQgbGluZVdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC03NDIs
OCArNzQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgu
cGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ry
b2tlZFBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1f
c3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogCiAg
ICAgICAgICAgICBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lk
dGgpOwogICAgICAgICAgICAgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0g
bGluZVdpZHRoKTsKQEAgLTc1NCwxMyArNzU0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBh
dGgoY29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRS
ZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dENsaXAoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwg
bV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29udGV4dENv
bmNhdENUTShjb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAg
ICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAo
c3Ryb2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKIAogI2lmIFVT
RShDR19DT05URVhUX1NUUk9LRV9MSU5FX1NFR01FTlRTX1dIRU5fU1RST0tJTkdfUEFUSCkKQEAg
LTc4NSw3ICs3ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgeworICAgIGlmIChhdXRv
IGZpbGxHcmFkaWVudCA9IHRoaXMtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAgICAgIENHQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgaWYgKGhhc1NoYWRvdygp
KSB7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShy
ZWN0LnNpemUoKSk7CkBAIC03OTgsMTggKzc5OCwxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICBDR0NvbnRleHRB
ZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxh
eWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRl
eHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0Nv
bnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKICAgICAg
ICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQo
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIHJlY3QpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1f
c3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5m
aWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShjb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIGZp
bGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4o
KSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogCiAgICAgYm9vbCBkcmF3T3duU2hhZG93
ID0gY2FuVXNlU2hhZG93Qmx1cigpOwpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgLy8gVHVy
biBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBs
YXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRv
dyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250
ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsK
ICAgICB9CiAKQEAgLTgzOSw3ICs4MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAg
Ly8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFk
b3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4
dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAg
ICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJl
Y3QpKTsKICAgICB9CiAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpmaWxsUm91bmRlZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0
CiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNo
YWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAg
ICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dC
bHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
KTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgcmVjdCk7CiAg
ICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJv
dW5kZWRSZWN0SW1wbChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdAogICAgIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSA9IHJlY3QucmFkaWkoKTsKICAgICBi
b29sIGVxdWFsV2lkdGhzID0gKHJhZGlpLnRvcExlZnQoKS53aWR0aCgpID09IHJhZGlpLnRvcFJp
Z2h0KCkud2lkdGgoKSAmJiByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9t
TGVmdCgpLndpZHRoKCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgPT0gcmFkaWkuYm90
dG9tUmlnaHQoKS53aWR0aCgpKTsKICAgICBib29sIGVxdWFsSGVpZ2h0cyA9IChyYWRpaS50b3BM
ZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpICYmIHJhZGlpLmJv
dHRvbUxlZnQoKS5oZWlnaHQoKSA9PSByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpICYmIHJhZGlp
LnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPT0gcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSk7Ci0g
ICAgYm9vbCBoYXNDdXN0b21GaWxsID0gbV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5m
aWxsUGF0dGVybjsKKyAgICBib29sIGhhc0N1c3RvbUZpbGwgPSBmaWxsR3JhZGllbnQoKSB8fCBm
aWxsUGF0dGVybigpOwogICAgIGlmICghaGFzQ3VzdG9tRmlsbCAmJiBlcXVhbFdpZHRocyAmJiBl
cXVhbEhlaWdodHMgJiYgcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKiAyID09IHIud2lkdGgoKSAm
JiByYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCkgKiAyID09IHIuaGVpZ2h0KCkpCiAgICAgICAgIENH
Q29udGV4dEZpbGxFbGxpcHNlSW5SZWN0KGNvbnRleHQsIHIpOwogICAgIGVsc2UgewpAQCAtOTE1
LDcgKzkxNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvCiAgICAgICAgIC8vIFR1cm4gb2Zm
IENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9y
bUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJv
cFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNo
YWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAg
fQogCkBAIC05ODksNiArOTg5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFu
c3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgb3BhY2l0
eSk7CiAgICAgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcihjb250ZXh0LCAwKTsKKyAg
ICAKKyAgICBtX3N0YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBtX2RhdGEt
Pm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIApA
QCAtMTAwMiwxNyArMTAwNCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjplbmRUcmFuc3Bh
cmVuY3lMYXllcigpCiAgICAgcmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBseVNoYWRv
d09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IENHRmxvYXQmIHhPZmZzZXQsIENHRmxvYXQmIHlPZmZzZXQpCitzdGF0aWMgdm9pZCBhcHBseVNo
YWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9h
dCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNF
RF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CiAjZWxzZQotICAg
IGlmIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RT
aGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRl
eHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1MzkzODg+IGJ5IGVuc3Vy
aW5nIHRoYXQgdGhlIG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCkBAIC0xMDMwLDEwICsxMDI5
LDggQEAgc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHNl
dENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGlj
IHZvaWQgc2V0Q0dTaGFkb3coQ0dDb250ZXh0UmVmIGNvbnRleHQsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENv
bG9yJiBjb2xvciwgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKLSAgICBDR0NvbnRl
eHRSZWYgY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLQogICAg
IGlmIChvZmZzZXQuaXNaZXJvKCkgJiYgIWJsdXIpIHsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOwogICAgICAgICByZXR1cm47
CkBAIC0xMDQ1LDcgKzEwNDIsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgIENHRmxv
YXQgeU9mZnNldCA9IG9mZnNldC5oZWlnaHQoKTsKICAgICBDR0Zsb2F0IGJsdXJSYWRpdXMgPSBi
bHVyOwogCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSkgeworICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IGdldFVzZXJUb0Jhc2VDVE0oY29udGV4dCk7CiAK
ICAgICAgICAgQ0dGbG9hdCBBID0gdXNlclRvQmFzZUNUTS5hICogdXNlclRvQmFzZUNUTS5hICsg
dXNlclRvQmFzZUNUTS5iICogdXNlclRvQmFzZUNUTS5iOwpAQCAtMTA2Niw3ICsxMDYzLDggQEAg
c3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAvLyBFeHRyZW1lICJibHVyIiB2YWx1ZXMgY2Fu
IG1ha2UgdGV4dCBkcmF3aW5nIGNyYXNoIG9yIHRha2UgY3JhenkgbG9uZyB0aW1lcywgc28gY2xh
bXAKICAgICBibHVyUmFkaXVzID0gc3RkOjptaW4oYmx1clJhZGl1cywgbmFycm93UHJlY2lzaW9u
VG9DR0Zsb2F0KDEwMDAuMCkpOwogCi0gICAgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZO
ZWVkZWQoZ3JhcGhpY3NDb250ZXh0LCB4T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgICBpZiAocmVuZGVy
aW5nTW9kZSAhPSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAgICAgYXBwbHlTaGFk
b3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29udGV4dCwgeE9mZnNldCwgeU9mZnNldCk7CiAK
ICAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxpZCBjb2xvciwgYXMgdGhpcyBtZWFucyB0aGF0IHRo
ZSBjb2xvciB3YXMgbm90IHNldCBmb3IgdGhlIHNoYWRvdwogICAgIC8vIGFuZCB3ZSBzaG91bGQg
dGhlcmVmb3JlIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHNoYWRvdyBjb2xvci4KQEAgLTEwNzYsMzkg
KzEwNzQsNjEgQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAgICAgQ0dDb250ZXh0U2V0
U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJs
dXJSYWRpdXMsIGNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSkKIHsKKyAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAg
ICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VU
aGlja25lc3MsIDAuZikpOworICAgIGZvciAoYXV0byBjaGFuZ2UgOiBzdGF0ZS5jaGFuZ2VzKCkp
IHsKKyAgICAgICAgc3dpdGNoIChjaGFuZ2UpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2g6CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihj
b250ZXh0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
czoKKyAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChz
dGF0ZS5zdHJva2VUaGlja25lc3MsIDAuZikpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaDoKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENH
Q29sb3Ioc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3Io
Y29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VDb2xvcikuZ2V0KCkpOworICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGU6CisgICAg
ICAgICAgICBzZXRDR0JsZW5kTW9kZShjb250ZXh0LCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJh
dGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSkpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxDb2xv
cik7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRv
dzoKKyAgICAgICAgICAgIHNldENHU2hhZG93KGNvbnRleHQsIHJlbmRlcmluZ01vZGUoKSwgc3Rh
dGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuYmx1clJhZGl1cywgc3RhdGUu
ZHJvcFNoYWRvdy5jb2xvciwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgc3Rh
dGUuYWxwaGEpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFs
cGhhOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgc3RhdGUuYWxwaGEp
OworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKQotICAgICAgICBzZXRDR0JsZW5kTW9kZShjb250
ZXh0LCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlKTsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5OgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4
dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0
U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGNnVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHRE
cmF3aW5nTW9kZSkpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlRleHREcmF3aW5nTW9kZToKKyAgICAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9k
ZShjb250ZXh0LCBjZ1RleHREcmF3aW5nTW9kZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTaG91
bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXM6CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50
aWFsaWFzKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIENH
Q29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZv
bnRzKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
bW9vdGhGb250czoKKyAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNv
bnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1
YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgc2V0Q0dTaGFkb3coKnRoaXMsIHN0YXRlLnNo
YWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKKyAg
ICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6
c2V0TWl0ZXJMaW1pdChmbG9hdCBsaW1pdCkKQEAgLTExMjUsNyArMTE0NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBs
aW5lV2lkdGgpCiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQo
KTsKIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gc3Ry
b2tlR3JhZGllbnQgPSB0aGlzLT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNT
aGFkb3coKSkgewogICAgICAgICAgICAgY29uc3QgZmxvYXQgZG91YmxlTGluZVdpZHRoID0gbGlu
ZVdpZHRoICogMjsKICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkV2lkdGggPSBjZWlsZihyZWN0
LndpZHRoKCkgKyBkb3VibGVMaW5lV2lkdGgpOwpAQCAtMTE0OSw4ICsxMTY5LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IGxpbmVXaWR0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFJlY3QobGF5ZXJDb250ZXh0LCBy
ZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxh
eWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0g
ICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShsYXllckNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKIAogICAgICAgICAgICAg
Y29uc3QgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsK
ICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAt
IGxpbmVXaWR0aCk7CkBAIC0xMTYxLDEzICsxMTgxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAg
ICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAg
Q0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RN
KGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAg
ICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZVBhdHRlcm4p
CisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7
CiAKICAgICAvLyBVc2luZyBDR0NvbnRleHRBZGRSZWN0IGFuZCBDR0NvbnRleHRTdHJva2VQYXRo
IHRvIHN0cm9rZSByZWN0IHJhdGhlciB0aGFuCkBAIC0xNDIyLDcgKzE0NDIsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKQogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRS
ZWN0JiBlbGxpcHNlKQogewogICAgIC8vIENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0IG9ubHkg
c3VwcG9ydHMgc29saWQgY29sb3JzLgotICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBt
X3N0YXRlLmZpbGxQYXR0ZXJuKSB7CisgICAgaWYgKGZpbGxHcmFkaWVudCgpIHx8IGZpbGxQYXR0
ZXJuKCkpIHsKICAgICAgICAgZmlsbEVsbGlwc2VBc1BhdGgoZWxsaXBzZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xNDM0LDcgKzE0NTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAv
LyBDR0NvbnRleHRTdHJva2VFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMgc29saWQgY29sb3Jz
LgotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50IHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVy
bikgeworICAgIGlmIChzdHJva2VHcmFkaWVudCgpIHx8IHN0cm9rZVBhdHRlcm4oKSkgewogICAg
ICAgICBzdHJva2VFbGxpcHNlQXNQYXRoKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmgKaW5kZXggNjAzYjBlOTM2ZWZiNTI4Y2FjM2Q3YWRjODY2ZTk5NTdlZTMw
ZWJlYy4uYTFhMjZiZmQyODRkODQ0NjNlYzIwZmIwMTRmYTMzNjljODhjOTk2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0lu
dGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRT
dGF0ZSYpIGZpbmFsOwogCiAgICAgdmlydHVhbCBib29sIGNhblVzZVNoYWRvd0JsdXIoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4
IGVmYmMxZTQ5NTQ0MWJlZGU3MzRlOTQ4ZGQyNmQzNzE0NDE2NTUzZTAuLmQwYmVjOGQ2Mzg0NzA5
Yjc4Y2YxZGU4MGJiMDJlMWUzN2QyZjk0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTk2LDUyICs5NiwyNCBAQCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0cnVj
dERyYXdHbAogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCiB7Ci0gICAgbV9vcmln
aW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5maWxsQ29sb3I7Ci0gICAg
bV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5maWxsR3Jh
ZGllbnQ7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtID0gY29udGV4dFN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fb3Jp
Z2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybiA9IGNvbnRleHRTdGF0ZS5maWxsUGF0dGVybjsK
LQotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5z
dHJva2VDb2xvcjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQgPSBj
b250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnQ7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnRT
cGFjZVRyYW5zZm9ybTsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybiA9
IGNvbnRleHRTdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1
c2ggPSBjb250ZXh0U3RhdGUuZmlsbEJydXNoOworICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VC
cnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaDsKIAogICAgIG1fb3JpZ2luYWxTdGF0ZS5j
dG0gPSBtX293bmVyLmdldENUTSgpOyAvLyBGSVhNRTogRGVhbCB3aXRoIGJhc2UgQ1RNLgogCi0g
ICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQgPSBjb250ZXh0U3RhdGUuc2hhZG93T2Zm
c2V0OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciA9IGNvbnRleHRTdGF0ZS5zaGFk
b3dCbHVyOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IgPSBjb250ZXh0U3RhdGUu
c2hhZG93Q29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1z
ID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAgbV9jdXJyZW50
U3RhdGUgPSBtX29yaWdpbmFsU3RhdGU7CisgICAgbV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cg
PSBjb250ZXh0U3RhdGUuZHJvcFNoYWRvdzsKKyAgICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJh
bnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIH0KIAogdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCiB7Ci0gICAgaWYgKG1fb3JpZ2luYWxTdGF0
ZS5maWxsU3R5bGUuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+
c2V0RmlsbENvbG9yKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IpOwotICAgIGVsc2Ug
aWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJu
YWxDb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3Jh
ZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBh
dHRlcm4pOwotICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKQot
ICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxQYXR0ZXJuKCptX29yaWdpbmFs
U3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmIChtX29yaWdpbmFsU3Rh
dGUuc3Ryb2tlU3R5bGUuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2ludGVybmFsQ29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yKTsKLSAg
ICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQpCi0gICAgICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLnN0
cm9rZVN0eWxlLmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3Rh
dGUuc3Ryb2tlU3R5bGUucGF0dGVybik7Ci0gICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ry
b2tlU3R5bGUucGF0dGVybikKLSAgICAgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJv
a2VQYXR0ZXJuKCptX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7Ci0gICAgfQor
ICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsQnJ1c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxC
cnVzaCk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUJydXNoKG1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VCcnVzaCk7CiAKICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0Q1RNKG1fb3Jp
Z2luYWxTdGF0ZS5jdG0pOwogCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3Jtcyk7Ci0g
ICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9m
ZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93
LmNvbG9yLCBjb250ZXh0U3RhdGUuc2hhZG93UmFkaXVzTW9kZSk7CisgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVU
cmFuc2Zvcm1zKTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RHJvcFNoYWRvdyhtX29yaWdp
bmFsU3RhdGUuZHJvcFNoYWRvdyk7CiAKICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4dERy
YXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwogfQpAQCAtMTY1LDk1ICsx
MzcsMzkgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnByZXBhcmVJbnRlcm5hbENvbnRleHQo
Y29uc3QgRm9udCYgZm9udCwgRm9udFNtb290aGluZ00KIHZvaWQgRHJhd0dseXBoc1JlY29yZGVy
Ojpjb25jbHVkZUludGVybmFsQ29udGV4dCgpCiB7CiAgICAgdXBkYXRlQ1RNKG1fb3JpZ2luYWxT
dGF0ZS5jdG0pOwotICAgIHVwZGF0ZUZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVN0cm9rZUNvbG9y
KG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLnN0cm9r
ZVN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVy
bi5nZXQoKSk7Ci0gICAgdXBkYXRlU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0
LCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29s
b3IsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA/IFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6Tm8pOworICAgIHVw
ZGF0ZUZpbGxCcnVzaChtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoKTsKKyAgICB1cGRhdGVTdHJv
a2VCcnVzaChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOworICAgIHVwZGF0ZVNoYWRvdyht
X29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdywgbV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9y
bXMgPyBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXM6Ok5vKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcihj
b25zdCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmFkaWVudCwgUGF0dGVybiogbmV3
UGF0dGVybikKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2goY29uc3Qg
U291cmNlQnJ1c2gmIG5ld0JydXNoKQogewotICAgIC8vIFRoaXMgY2hlY2sgbG9va3Mgd3Jvbmcg
YnV0IGl0IGFjdHVhbGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0ZWQgdXNlLgotICAgIC8vIENUIHdp
bGwgb25seSBldmVyIHNldCB0aGlzIHRvIGEgc29saWQgY29sb3IsIHdoaWNoIHRoaXMgaXMgdGhl
IGNvcnJlY3QgY2hlY2sgZm9yLgotICAgIC8vIEluIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCkg
d2Ugc2V0IGl0IGJhY2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2luYWxseSwgd2hpY2ggdGhpcyBjaGVj
ayB3b3JrcyBjb3JyZWN0bHkgZm9yIHRvby4KLSAgICBpZiAobmV3Q29sb3IgPT0gbV9jdXJyZW50
U3RhdGUuZmlsbFN0eWxlLmNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5maWxsQ29sb3IgPSBuZXdDb2xvcjsK
LSAgICBpZiAobmV3R3JhZGllbnQpCi0gICAgICAgIG5ld1N0YXRlLmZpbGxHcmFkaWVudCA9IG5l
d0dyYWRpZW50OwotICAgIGlmIChuZXdQYXR0ZXJuKQotICAgICAgICBuZXdTdGF0ZS5maWxsUGF0
dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwg
eyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVu
dFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9IG5ld0NvbG9yOworICAgIG1fb3duZXIuc2V0RmlsbEJy
dXNoKG5ld0JydXNoKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9r
ZUNvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0
ZXJuKiBuZXdQYXR0ZXJuKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJy
dXNoKGNvbnN0IFNvdXJjZUJydXNoJiBuZXdCcnVzaCkKIHsKLSAgICAvLyBUaGlzIGNoZWNrIGxv
b2tzIHdyb25nIGJ1dCBpdCBhY3R1YWxseSBpc24ndCwgZm9yIG91ciBsaW1pdGVkIHVzZS4KLSAg
ICAvLyBDVCB3aWxsIG9ubHkgZXZlciBzZXQgdGhpcyB0byBhIHNvbGlkIGNvbG9yLCB3aGljaCB0
aGlzIGlzIHRoZSBjb3JyZWN0IGNoZWNrIGZvci4KLSAgICAvLyBJbiBjb25jbHVkZUludGVybmFs
Q29udGV4dCgpIHdlIHNldCBpdCBiYWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdpbmFsbHksIHdoaWNo
IHRoaXMgY2hlY2sgd29ya3MgY29ycmVjdGx5IGZvciB0b28uCi0gICAgaWYgKG5ld0NvbG9yID09
IG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5zdHJva2VDb2xv
ciA9IG5ld0NvbG9yOwotICAgIGlmIChuZXdHcmFkaWVudCkKLSAgICAgICAgbmV3U3RhdGUuc3Ry
b2tlR3JhZGllbnQgPSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3UGF0dGVybikKLSAgICAgICAg
bmV3U3RhdGUuc3Ryb2tlUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci5kaWRVcGRh
dGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UgfSk7Ci0gICAgbV9jdXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsK
KyAgICBtX293bmVyLnNldFN0cm9rZUJydXNoKG5ld0JydXNoKTsKIH0KIAogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSkKIHsKLSAg
ICBpZiAoY3RtID09IG1fY3VycmVudFN0YXRlLmN0bSkKKyAgICBpZiAobV9vd25lci5nZXRDVE0o
KSA9PSBjdG0pCiAgICAgICAgIHJldHVybjsKLQogICAgIG1fb3duZXIuc2V0Q1RNKGN0bSk7Ci0g
ICAgbV9jdXJyZW50U3RhdGUuY3RtID0gY3RtOwogfQogCi1zdGF0aWMgYm9vbCBzaGFkb3dJc0Ns
ZWFyZWQoY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIpCit2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRy
b3BTaGFkb3csIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KQogewotICAgIHJldHVybiBzaGFkb3dPZmZzZXQgPT0gRmxvYXRTaXplKCkgJiYgIXNoYWRvd0Js
dXI7Ci19Ci0KLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coY29uc3QgRmxv
YXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIsIGNvbnN0IENvbG9yJiBzaGFk
b3dDb2xvciwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
Ci17Ci0gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyBpZiBub2JvZHkgaGFzIGFueSBzaGFkb3dzLgotICAgIGlmIChzaGFkb3dJc0NsZWFyZWQo
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyKSAmJiBzaGFkb3dJc0NsZWFyZWQobV9jdXJyZW50U3Rh
dGUuc2hhZG93Lm9mZnNldCwgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBzdGF0ZUNoYW5nZUZsYWdzOwotCi0gICAg
aWYgKHNoYWRvd09mZnNldCAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0IHx8IHNoYWRv
d0JsdXIgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIgfHwgc2hhZG93Q29sb3IgIT0gbV9j
dXJyZW50U3RhdGUuc2hhZG93LmNvbG9yKSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd09mZnNl
dCA9IHNoYWRvd09mZnNldDsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93Qmx1ciA9IHNoYWRvd0Js
dXI7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7Ci0gICAgICAg
IHN0YXRlQ2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2Up
OwotICAgIH0KLSAgICBpZiAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgIT0gU2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkICYmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKSAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuaWdu
b3JlVHJhbnNmb3JtcykgewotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyA9IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6
WWVzKTsKLSAgICAgICAgc3RhdGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsKLSAgICB9Ci0gICAgaWYgKHN0YXRlQ2hh
bmdlRmxhZ3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9vd25lci5kaWRVcGRh
dGVTdGF0ZShuZXdTdGF0ZSwgc3RhdGVDaGFuZ2VGbGFncyk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0
ZS5zaGFkb3cub2Zmc2V0ID0gc2hhZG93T2Zmc2V0OwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRv
dy5ibHVyID0gc2hhZG93Qmx1cjsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuY29sb3IgPSBz
aGFkb3dDb2xvcjsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVz
KTsKKyAgICBtX293bmVyLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7CisgICAgbV9vd25lci5z
ZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogewogICAgIGlmIChDR1N0eWxlR2V0VHlw
ZShzdHlsZSkgIT0ga0NHU3R5bGVTaGFkb3cpIHsKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQg
bW9yZSBraW5kcyBvZiBDR1N0eWxlcy4KLSAgICAgICAgdXBkYXRlU2hhZG93KHswLCAwfSwgMCwg
Q29sb3IoKSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkKTsKKyAgICAgICAg
dXBkYXRlU2hhZG93KHsgfSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYxLDcgKzE3Nyw3IEBAIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKICAgICBhdXRvIHJh
ZCA9IGRlZzJyYWQoc2hhZG93U3R5bGUuYXppbXV0aCAtIDE4MCk7CiAgICAgYXV0byBzaGFkb3dP
ZmZzZXQgPSBGbG9hdFNpemUoc3RkOjpjb3MocmFkKSwgc3RkOjpzaW4ocmFkKSkgKiBzaGFkb3dT
dHlsZS5oZWlnaHQ7CiAgICAgYXV0byBzaGFkb3dDb2xvciA9IENHU3R5bGVHZXRDb2xvcihzdHls
ZSk7Ci0gICAgdXBkYXRlU2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93U3R5bGUucmFkaXVzLCBD
b2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHNoYWRvd0NvbG9yKSwgU2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM6Olllcyk7CisgICAgdXBkYXRlU2hhZG93KHsgc2hhZG93T2Zmc2V0LCBz
dGF0aWNfY2FzdDxmbG9hdD4oc2hhZG93U3R5bGUucmFkaXVzKSwgQ29sb3I6OmNyZWF0ZUFuZFBy
ZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xvcikgfSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6
Olllcyk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmRCZWdpbkxheWVyKENH
UmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZSwgQ0dSZWN0KQpAQCAtMzI4LDgg
KzI0NCw4IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVu
ZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAKICAgICBhdXRvIGZpbGxDb2xvciA9
IENHR1N0YXRlR2V0RmlsbENvbG9yKGdzdGF0ZSk7CiAgICAgYXV0byBzdHJva2VDb2xvciA9IENH
R1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0YXRlKTsKLSAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6
OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShmaWxsQ29sb3IpKTsKLSAgICB1cGRhdGVTdHJv
a2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7
CisgICAgdXBkYXRlRmlsbEJydXNoKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uo
ZmlsbENvbG9yKSk7CisgICAgdXBkYXRlU3Ryb2tlQnJ1c2goQ29sb3I6OmNyZWF0ZUFuZFByZXNl
cnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdl
dFN0eWxlKGdzdGF0ZSkpOwogCiAgICAgYXV0byBmb250U2l6ZSA9IENHR1N0YXRlR2V0Rm9udFNp
emUoZ3N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKaW5kZXggNTExZTA5
Yjk2Y2VmMDMyNTA5MGUyM2FmOTE0YWUzNWYyYWI4ZWQyZS4uODBhOGM4YWU2NTQ4ZDBiNmE5NmFh
MzJkN2MwNTVkYjY4NjQ5MTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAK
QEAgLTI0MiwxMCArMjQyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBzZXRDR0Zv
bnRSZW5kZXJpbmdNb2RlKGNvbnRleHQpOwogICAgIENHQ29udGV4dFNldEZvbnRTaXplKGNnQ29u
dGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgY29u
dGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7Cisg
ICAgYXV0byBkcm9wU2hhZG93ID0gY29udGV4dC5kcm9wU2hhZG93KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gY29udGV4dENUTSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAgZmxvYXQgc3ludGhl
dGljQm9sZE9mZnNldCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwpAQCAtMjU4LDE2ICsy
NTUsMTYgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgfQogICAgIH07CiAKLSAg
ICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4
dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1
ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlv
bk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBi
b29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERy
YXdpbmdNb2RlOjpGaWxsICYmIGRyb3BTaGFkb3cuY29sb3IuaXNWYWxpZCgpICYmICFkcm9wU2hh
ZG93LmJsdXJSYWRpdXMgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICgh
Y29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRDVE0uaXNJZGVudGl0
eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxh
eWVyKCk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1w
bGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRv
IGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGNvbnRleHQuY2xl
YXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3Io
KTsKLSAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yID0gc2hhZG93Q29sb3IuY29sb3JXaXRo
QWxwaGFNdWx0aXBsaWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKKyAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yID0gZHJvcFNoYWRvdy5jb2xvci5jb2xvcldpdGhBbHBoYU11bHRp
cGxpZWRCeShmaWxsQ29sb3IuYWxwaGFBc0Zsb2F0KCkpOwogICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihzaGFkb3dGaWxsQ29sb3IpOwotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBv
aW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElm
IHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVk
IHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAg
IGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICog
KGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZs
b2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkg
KiAoY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAg
c2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0
WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0
cml4KTsKICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgICAgICBzaG93
R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xk
T2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywg
bnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKQEAgLTI4MCw3ICsyNzcsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9p
bnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0
LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogCiAgICAgaWYgKGhh
c1NpbXBsZVNoYWRvdykKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgIGNvbnRleHQuc2V0RHJvcFNoYWRvdyhk
cm9wU2hhZG93KTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRT
bW9vdGhGb250cyAhPSBvcmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmNwcAppbmRleCAyZTJmNGY0ZjJjYjU1ZDM2NWU1YWUzOTkzMjVkMDVmMmMxNzM2
MWZkLi4yYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFlZGZkZTFjODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDEwICs5MCw3IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNo
b3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAg
ICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25z
KSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3Rh
dGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVt
IGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCi0g
ICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgaWYgKHN0YXRlSXRl
bS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZUl0
ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCmluZGV4IDIzZDBiYmNjNzFjMjgxYzUyYzM1YThjMjUyZGE5NmMwYWIxMmE5OGMuLmI2
NmM4NDhhMzNiZGQ5MjM2MGZlYTg1MzM3ZmFiNWRiMmQyZDAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE0OCwyNCArMTQ4LDE5IEBAIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3Mm
IHN0YXRlKQogICAgIHJldHVybiB0czsKIH0KIAotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlLCBmbGFncykKLXsKLX0K
LQotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBz
dGF0ZUNoYW5nZSkKLSAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2UpCitTZXRTdGF0ZTo6
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQorICAgIDogbV9zdGF0
ZShzdGF0ZSkKIHsKIH0KIAogdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewotICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CisgICAgY29udGV4
dC51cGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRlJiBzdGF0ZSkKK3N0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKIHsK
LSAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNoYW5nZSgpOworICAgIHRzIDw8IGl0ZW0uc3RhdGUoKTsK
ICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4
IDk3Y2I1ZmM4ZDA0YmE4NjYyYjcyYzdkZGVlYmM0NDE1NWMyODI1YjcuLjk2OTRkNjhkMTVlOThk
NTY3ZDM4ZDNhYzliMmMwOTlmMzBkMGE1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaApAQCAtMjQ3LDEwICsyNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0Ry
YXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOwogCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KKyAg
ICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CkBAIC0yNTgsMjg4ICsyNTcsMjQgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jik7CiAK
IHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2UmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3Rh
dGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKIH07CiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzOwotICAgIGVuY29kZXIgPDwgY2hhbmdlRmxhZ3M7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9
IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIEFT
U0VSVChzdGF0ZS5zdHJva2VHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0
cm9rZUdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJU
KHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VQ
YXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUu
ZmlsbEdyYWRpZW50KTsKLSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmlsbEdyYWRpZW50Owot
ICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5maWxsUGF0dGVy
bik7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKSkgewotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNo
YWRvd0NvbG9yOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7Ci0g
ICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9r
ZVRoaWNrbmVzczsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBz
dGF0ZS5zdHJva2VDb2xvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS5maWxsQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5z
dHJva2VTdHlsZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxS
dWxlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LmJsZW5kTW9kZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRlLmFscGhhOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLnNob3VsZEFudGlhbGlhczsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZFNtb290aEZvbnRzOwotCi0gICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAgIGVuY29kZXIgPDwg
bV9zdGF0ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0aW9uYWw8U2V0
U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBzdGQ6Om9w
dGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzPiBjaGFuZ2VGbGFn
czsKLSAgICBkZWNvZGVyID4+IGNoYW5nZUZsYWdzOwotICAgIGlmICghY2hhbmdlRmxhZ3MpCisg
ICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gc3RhdGU7CisgICAgZGVjb2Rl
ciA+PiBzdGF0ZTsKKyAgICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0gICAgc3Rh
dGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFuZ2VGbGFnczsKLQotICAgIGlmIChzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VH
cmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAgYXV0byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghc3Ryb2tlR3JhZGllbnQpCi0gICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7Ci0gICAgfQotCi0gICAg
aWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9
IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJuKTsKLSAgICB9Ci0K
LSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBhdXRvIGZpbGxHcmFkaWVu
dCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghZmlsbEdyYWRpZW50
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5n
ZS5tX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1vdmUoKmZpbGxHcmFkaWVudCk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBhdXRvIGZpbGxQYXR0ZXJu
ID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZSgqZmlsbFBhdHRlcm4pOwotICAgIH0KLQotICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBz
aGFkb3dPZmZzZXQ7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93T2Zmc2V0OwotICAgICAgICBp
ZiAoIXNoYWRvd09mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSAqc2hhZG93T2Zmc2V0Owot
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7Ci0gICAgICAgIGRlY29k
ZXIgPj4gc2hhZG93Qmx1cjsKLSAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRv
d0JsdXIgPSAqc2hhZG93Qmx1cjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzaGFk
b3dDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKLSAgICAgICAgaWYgKCFz
aGFkb3dDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKLQotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7Ci0gICAg
ICAgIGRlY29kZXIgPj4gc2hhZG93UmFkaXVzTW9kZTsKLSAgICAgICAgaWYgKCFzaGFkb3dSYWRp
dXNNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0
ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSBXVEZNb3ZlKCpzaGFkb3dSYWRpdXNN
b2RlKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzdHJva2VUaGlja25lc3M7Ci0gICAgICAgIGRlY29kZXIg
Pj4gc3Ryb2tlVGhpY2tuZXNzOwotICAgICAgICBpZiAoIXN0cm9rZVRoaWNrbmVzcykKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zdHJva2VUaGlja25lc3MgPSAqc3Ryb2tlVGhpY2tuZXNzOwotICAgIH0KLQotICAgIGlmIChz
dGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpU
ZXh0RHJhd2luZ01vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8VGV4dERyYXdp
bmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgZGVjb2RlciA+PiB0ZXh0RHJh
d2luZ01vZGU7Ci0gICAgICAgIGlmICghdGV4dERyYXdpbmdNb2RlKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnRleHREcmF3
aW5nTW9kZSA9IFdURk1vdmUoKnRleHREcmF3aW5nTW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzdHJva2VD
b2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsKLSAgICAgICAgaWYgKCFzdHJv
a2VDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsKLSAgICB9Ci0KLSAg
ICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBm
aWxsQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwotICAgICAgICBpZiAoIWZp
bGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAqZmlsbENvbG9yOwotICAgIH0KLQotICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpIHsKLSAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7
Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9r
ZVN0eWxlID0gc3Ryb2tlU3R5bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkg
ewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsKLSAgICAgICAgZGVj
b2RlciA+PiBmaWxsUnVsZTsKLSAgICAgICAgaWYgKCFmaWxsUnVsZSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUnVs
ZSA9ICpmaWxsUnVsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
KSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBjb21wb3NpdGVP
cGVyYXRvcjsKLSAgICAgICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAg
aWYgKCFjb21wb3NpdGVPcGVyYXRvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9ICpjb21w
b3NpdGVPcGVyYXRvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwotICAgICAgICBkZWNvZGVy
ID4+IGJsZW5kTW9kZTsKLSAgICAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYmxlbmRNb2Rl
ID0gKmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4g
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5OwotICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdl
Lm1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxmbG9hdD4gYWxwaGE7Ci0gICAgICAgIGRlY29kZXIgPj4gYWxwaGE7Ci0gICAgICAg
IGlmICghYWxwaGEpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
IHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxwaGEgPSAqYWxwaGE7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91
bGRBbnRpYWxpYXM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkQW50aWFsaWFzOwotICAgICAg
ICBpZiAoIXNob3VsZEFudGlhbGlhcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMgPSAqc2hvdWxk
QW50aWFsaWFzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRTbW9vdGhGb250czsKLSAgICAgICAg
ZGVjb2RlciA+PiBzaG91bGRTbW9vdGhGb250czsKLSAgICAgICAgaWYgKCFzaG91bGRTbW9vdGhG
b250cykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9ICpzaG91bGRTbW9vdGhGb250czsKLSAg
ICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAg
ICAgICAgZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0gICAgICAgIGlm
ICghc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0gICAgfQotCi0gICAg
aWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBkZWNvZGVyID4+IHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOwotICAgIH0KLQotICAgIHJldHVybiB7IHsgc3RhdGVDaGFuZ2UgfSB9OworICAgIHJl
dHVybiBTZXRTdGF0ZSgqc3RhdGUpOwogfQogCiBjbGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlZWU0NDcxZDM1NGU3NTE1MzEy
NTE4OWRmY2M5NDE4YTM5NDUxNGExLi5mZTkyODE2N2QxNGVkZTVmZWY3ODY5M2FlN2UxNDBjZTY0
YWNhYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01
Myw0NSArNTMsMzQgQEAgUmVjb3JkZXI6On5SZWNvcmRlcigpCiAgICAgQVNTRVJUKG1fc3RhdGVT
dGFjay5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRj
aGVkIHNhdmUvcmVzdG9yZS4KIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3Rh
dGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVj
b3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncyBpbmxpbmVTdGF0ZUNoYW5nZUZsYWdzIHsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbENvbG9yQ2hhbmdlLAotICAgIH07Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNo
YW5nZUZsYWdzICYgaW5saW5lU3RhdGVDaGFuZ2VGbGFncykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlQ29sb3JDaGFuZ2UpICYmICFjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0
QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoc3RhdGUu
Y2hhbmdlcygpKTsKKyAgICAKKyAgICBpZiAoc3RhdGUuaGFzT25seVByaW1pdGl2ZUNoYW5nZXMo
KSkgeworICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCkpCisgICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVG
aWxsQ29sb3IoKmZpbGxDb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdl
KSAmJiAhY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkKKyAgICAgICAgICAg
IHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpzdHJva2VDb2xvcigpLnRyeUdldEFzU1JHQkFC
eXRlcygpKTsKIAotICAgIHJldHVybiB0cnVlOwotfQorICAgICAgICBpZiAoc3RhdGUuY2hhbmdl
cygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
cykpCisgICAgICAgICAgICByZWNvcmRTZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNz
KCkpOwogCi12b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQotewotICAgIGlmICghY29udGFpbnNPbmx5SW5saW5l
U3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkgewotICAgICAgICBpZiAoYXV0byBw
YXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNv
cmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGlmIChhdXRvIHBh
dHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmRS
ZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIHJlY29yZFNldFN0YXRl
KGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpjaGFu
Z2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgIGlmIChz
dGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Rmls
bEJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gZmlsbFBhdHRlcm4oKSkKKyAg
ICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICB9
CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhj
aGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygp
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkgewor
ICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gc3Ryb2tlUGF0dGVybigpKQorICAgICAgICAgICAg
cmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAgIH0KIAotICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hh
bmdlKSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUu
ZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKKyAgICByZWNvcmRTZXRTdGF0ZShzdGF0
ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5
KCkKQEAgLTk5LDI1ICs4OCwyNSBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY3VycmVudGx5IGludm9rZWQg
aW4gYW4gYWQtaG9jIG1hbm5lciB3aGVuIHJlY29yZGluZyBkcmF3aW5nIGl0ZW1zLiBXZSBzaG91
bGQgY29uc2lkZXIgZWl0aGVyCiAgICAgLy8gc3BsaXR0aW5nIEdyYXBoaWNzQ29udGV4dCBzdGF0
ZSBjaGFuZ2VzIGludG8gaW5kaXZpZHVhbCBkaXNwbGF5IGxpc3QgaXRlbXMsIG9yIHJlZmFjdG9y
aW5nIHRoZSBjb2RlIHN1Y2ggdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2Fs
bHkgaW52b2tlZCB3aGVuIHJlY29yZGluZyBhIGRyYXdpbmcgaXRlbS4KLSAgICBhdXRvJiBzdGF0
ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKLSAgICBhdXRvIGNoYW5nZXNG
cm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRl
KCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0gICAgaWYgKCFjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkKKyAg
ICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlOworICAgIGlmICghc3RhdGUuY2hh
bmdlcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
c3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3Rh
dGUpKTsKLSAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJv
bUxhc3RTdGF0ZSk7Ci0gICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07Ci0gICAg
Y3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwor
ICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcs
IHNhdmluZyBzdGF0ZSAiIDw8IHN0YXRlKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3Rh
dGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOworICAgIGN1cnJlbnRTdGF0ZSgpLmxh
c3REcmF3aW5nU3RhdGUgPSBzdGF0ZTsKIH0KIAogY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IFJlY29yZGVyOjpzdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0
YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlOwogfQog
Ci12b2lkIFJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
dm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogewotICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLmFjY3VtdWxhdGUoc3RhdGUsIGZs
YWdzKTsKKyAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGN1cnJl
bnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygp
OwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTIy
MiwxMiArMjExLDE1IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlQnVmZmVyJiBp
bWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogdm9pZCBSZWNvcmRlcjo6
c2F2ZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpzYXZlKCk7CiAgICAgcmVjb3JkU2F2ZSgp
OwotICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNh
dmUoKSk7CisgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpKTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpyZXN0
b3JlKCk7CisKICAgICBpZiAoIW1fc3RhdGVTdGFjay5zaXplKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjc1LDE2ICsyNjcsMjQgQEAgQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpnZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CiAKIHZvaWQgUmVjb3Jk
ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKKyAgICBHcmFwaGlj
c0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisKICAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFz
dCgpLmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSk7CisgICAgCisgICAgbV9zdGF0ZS5hbHBo
YSA9IDE7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKKyAg
ICBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKICAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIG1fc3RhdGUuYWxw
aGEgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZS5hbHBoYTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA4NDVlYzAwNzcyZWQyYzU0YTFl
NmNiMjZiMjE1MWRhYmFhNmVjMDc1Li5hMmEyMjY4ZTVlZDVlYjVjMGE5Y2ZlM2NmZWViYTc3MDFj
MmFlZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY5LDcg
KzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxs
Q29sb3IoU1JHQkE8dWludDhfdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5s
aW5lU3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29y
ZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFNldExpbmVDYXAoTGluZUNhcCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRM
aW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CkBAIC0xMzUsMzAgKzEz
NSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKEZv
bnQmKSA9IDA7CiAKICAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgc3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0
U3RhdGU+IGxhc3REcmF3aW5nU3RhdGU7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAg
ICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbGFzdERy
YXdpbmdTdGF0ZTsKIAotICAgICAgICBDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiBjbGlwKQotICAgICAgICAgICAgOiBjdG0odHJhbnNmb3JtKQotICAgICAgICAgICAg
LCBjbGlwQm91bmRzKGNsaXApCi0gICAgICAgICAgICAsIGxhc3REcmF3aW5nU3RhdGUoc3RhdGUp
CisgICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXBCb3VuZHMp
CisgICAgICAgICAgICA6IHN0YXRlKHN0YXRlKQorICAgICAgICAgICAgLCBjdG0oY3RtKQorICAg
ICAgICAgICAgLCBjbGlwQm91bmRzKGNsaXBCb3VuZHMpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICBDb250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwgY3RtLCBjbGlw
Qm91bmRzKTsKLSAgICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVDaGFuZ2U7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQogICAgICAgICBDb250ZXh0U3Rh
dGUgY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGF1dG8gc3RhdGUgPSBjbG9uZUZvclNhdmUoKTsKLSAgICAgICAgICAgIHN0YXRlLmxhc3RE
cmF3aW5nU3RhdGUuYWxwaGEgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRlOworICAgICAg
ICAgICAgYXV0byBjb3B5ID0gKnRoaXM7CisgICAgICAgICAgICBjb3B5LnN0YXRlLmRpZEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIGlmIChjb3B5Lmxhc3REcmF3aW5nU3Rh
dGUpCisgICAgICAgICAgICAgICAgY29weS5sYXN0RHJhd2luZ1N0YXRlLT5kaWRCZWdpblRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgICAgICAgICByZXR1cm4gY29weTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwpAQCAtMTg5LDcgKzE4NCw3
IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
VXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkg
ZmluYWw7CkBAIC0yNzAsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0Nv
bnRleHQ6OlJvdW5kaW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdl
SXRlbUlmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyk7CisgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmlu
ZGV4IDFmZGM2YmE1NmJmZGIyNjM2ZWZiMzQ2MmFkYTJhOTkwZDMzODk5NDUuLjc5ZGQxMDIwNDYy
MjZmYzBhMTFlZGUzYmUzYjk1MmVjYjg3ZDM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtMTA0LDkgKzEwNCw5IEBAIHZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogICAgIGFw
cGVuZDxTZXRTdHJva2VUaGlja25lc3M+KHRoaWNrbmVzcyk7CiB9CiAKLXZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSkKIHsKLSAgICBhcHBlbmQ8U2V0U3RhdGU+KHN0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAg
YXBwZW5kPFNldFN0YXRlPihzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTQxNywxNiArNDE3LDEzIEBAIHN0YXRpYyBp
bmxpbmUgZmxvYXQgc2hhZG93UGFpbnRpbmdFeHRlbnQoZmxvYXQgYmx1clJhZGl1cykKIAogRmxv
YXRSZWN0IFJlY29yZGVySW1wbDo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVjdDsKKyAgICBhdXRv
IGJvdW5kcyA9IHJlY3Q7CiAgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKTsKIAotICAg
IEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yKSkgewotICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50ID0g
Ym91bmRzOwotICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOwotICAgICAg
ICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRpdXMp
KTsKKyAgICBpZiAoaGFzU2hhZG93KCkpIHsKKyAgICAgICAgYXV0byBzaGFkb3dFeHRlbnQgPSBi
b3VuZHM7CisgICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKGRyb3BTaGFkb3coKS5vZmZzZXQpOwor
ICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChkcm9wU2hh
ZG93KCkuYmx1clJhZGl1cykpOwogICAgICAgICBib3VuZHMudW5pdGUoc2hhZG93RXh0ZW50KTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5k
ZXggNjQyMjY1ZjA5ODAyMmNmMmIwNWYxODBjMTc0ZmEwMzQ2MmYyZGQ0MC4uYWMyZDMxNzk2NzU4
YzYyY2M2MTUwYTE1NDlkN2EwOTQwNmVlZmFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlY29yZFNldElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9p
ZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAg
dm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZpbmFsOwotICAgIHZvaWQgcmVj
b3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGlu
ZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IERh
c2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGlu
ZUpvaW4oTGluZUpvaW4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwCmluZGV4IDhmZjE5ZDAwMzU0Y2RiZWRlM2E1YmExYWY3NThjZmYwMjNhMjVhMjIuLmYz
YzhjOTBjZDg4YmJlMGM1MWUxZDRmYTEzM2M1MWU4M2I4MGIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTk3LDEwICs5NywxMCBAQCBpbmxpbmUgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0
YXRlSXRlbShHcmFwaAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAKLSAg
ICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRl
SXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSkpCisgICAgaWYg
KGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0u
c3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRl
bnRpZmllcjsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxl
SW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5nZXQo
KSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShz
ZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxsQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJu
ICppbWFnZUlkZW50aWZpZXI7CiAKICAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCmluZGV4IDkxMTQ2ZGZjNmZkODRkZjhlMjk1NGYwMzc3ZDAwNjZhNzcyMzNjYzkuLjE0MTY5
YTA3NTU4ZDYxNmIwOTIwY2IwNTdkYzhlYjFjMmE1ODhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC04Miw5ICs4
Miw5IEBAIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoUGFp
bnRpbmdPcGVyYXRpb25zJiBjb21tYW5kTGlzdCkKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsg
eyB9LCB7IH0sIEZsb2F0UmVjdDo6aW5maW5pdGVSZWN0KCkgfSk7CiB9CiAKLXZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykK
K3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VUaGlja25lc3NDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpIHsKICAg
ICAgICAgc3RydWN0IFN0cm9rZVRoaWNrbmVzc0NoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0
aW9uLCBPcGVyYXRpb25EYXRhPGZsb2F0PiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TdHJva2VU
aGlja25lc3NDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgRwogICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTdHJva2VUaGlj
a25lc3NDaGFuZ2U+KHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOwogICAgIH0KIAotICAgIGlmIChm
bGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkgeworICAgIGlm
IChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlU3R5bGUpKSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VTdHlsZUNoYW5nZSBmaW5hbCA6
IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFN0cm9rZVN0eWxlPiB7CiAgICAgICAg
ICAgICB2aXJ0dWFsIH5TdHJva2VTdHlsZUNoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPFN0cm9rZVN0eWxlQ2hhbmdlPihzdGF0ZS5zdHJva2VTdHlsZSkpOwogICAgIH0KIAot
ICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKSB7CiAgICAgICAgIHN0cnVjdCBDb21wb3Np
dGVPcGVyYXRpb25DaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0
YTxDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlPiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5D
b21wb3NpdGVPcGVyYXRpb25DaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTEzNSwxMCArMTM1LDEw
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlPihz
dGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlKSk7CisgICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRl
TW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKSk7CiAgICAgfQog
Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0No
YW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSkgewogICAgICAgICBzdHJ1Y3QgU2hvdWxk
QW50aWFsaWFzQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
Ym9vbD4gewogICAgICAgICAgICAgdmlydHVhbCB+U2hvdWxkQW50aWFsaWFzQ2hhbmdlKCkgPSBk
ZWZhdWx0OwogCkBAIC0xNTUsNiArMTU1LDggQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKIAog
ICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTaG91bGRBbnRpYWxpYXNDaGFuZ2U+KHN0YXRl
LnNob3VsZEFudGlhbGlhcykpOwogICAgIH0KKworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygp
OwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OnNldExpbmVDYXAoTGluZUNhcCBs
aW5lQ2FwKQpAQCAtMjkyLDcgKzI5NCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAg
fTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRl
LmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEJy
dXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCkBAIC0zMTYsNyArMzE4LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwKICAgICB9
OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPEZpbGxSZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9k
ZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpKTsK
KyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgY29sb3IsIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHN0YXRlLmNv
bXBvc2l0ZU1vZGUub3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBj
b25zdCBDb2xvciYgY29sb3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0zNDYsNyArMzQ4LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4o
cm91bmRlZFJlY3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBD
YWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Rmls
bFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCwgY29sb3IsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3Bl
cmF0aW9uLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTMzLDcgKzUzNSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LAogICAgICAg
ICBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4oZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRG
b250KCkpLAogICAgICAgICBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RGTW92ZShjYWly
b0dseXBocyksIHhPZmZzZXQsIHN0YXRlLnRleHREcmF3aW5nTW9kZSwKLSAgICAgICAgc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLCBm
b250U21vb3RoaW5nKSk7CisgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJv
cFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsK
IH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpCkBAIC01OTksNyArNjAxLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNr
bmUKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZp
bGxDb2xvciwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKSk7CisgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUu
ZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5j
b2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC02MjIs
NyArNjI0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZShjb25zdCBG
bG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PERyYXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9r
ZUNvbG9yLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNob3VsZEFudGlhbGlhcykpOwor
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUu
c3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNr
bmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQg
dGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBk
b3VibGVVbmRlcmxpbmVzLCBTdHJva2VTdHlsZSkKQEAgLTY0NSw3ICs2NDcsNyBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGZsb2F0IHRoaQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRo
aXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmVzRm9yVGV4dD4o
cG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgc3Rh
dGUuc3Ryb2tlQ29sb3IpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JU
ZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVz
LCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHN0eWxlKQpAQCAtNjg0LDcgKzY4Niw3IEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8RHJhd0VsbGlwc2U+KHJlY3QsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUu
c3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsK
KyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJy
dXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigp
LCBzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBv
ZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA4M2M2ZDI3ZDZlYTM2Yzc5YmViZDc4
MjVmOTliN2M0MzkwOGVlNTRiLi5iOTUyODYzMTM0MzMwMDJmYWU3MmJkZTQ3ODBkMzI1NjhkYzU4
MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9y
bUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChX
ZWJDb3JlOjpMaW5lQ2FwKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IFdl
YkNvcmU6OkRhc2hBcnJheSYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggYzE5ZTc0MTU1N2Mz
MDhjOTQxZTRlZjcxNWUzZGI0NjU5NGQxODViNi4uMmNkNzg2NWVjYTgyOWViNDU3ODBlOWZiMGU3
MjQ3YTM3MTJiY2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTE3NiwyNSArMTc2LDIyIEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZv
bnQmIGZvbnQsCiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250ZXh0LCBwbGF0Zm9ybURh
dGEuc2l6ZSgpKTsKICAgICBGb250Q2FzY2FkZTo6c2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0
eWxlKGNnQ29udGV4dCwgZm9udC5wbGF0Zm9ybURhdGEoKS5pc1N5c3RlbUZvbnQoKSwgZmFsc2Us
IGZvbnQucGxhdGZvcm1EYXRhKCkudXNlR0RJKCkpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAg
IGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvcik7CisgICAgYXV0byBkcm9wU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LmRyb3BTaGFk
b3coKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHRE
cmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5pc1Zh
bGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0Nv
bnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIGRyb3BT
aGFkb3cuY29sb3IuaXNWYWxpZCgpICYmICFkcm9wU2hhZG93LmJsdXJSYWRpdXMgJiYgKCFncmFw
aGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQu
Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAgICAgaWYgKGhh
c1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2
ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJw
aXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygp
OwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yKCk7
Ci0gICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvciA9IHNoYWRvd0NvbG9yLmNvbG9yV2l0aEFs
cGhhTXVsdGlwbGllZEJ5KGZpbGxDb2xvci5hbHBoYUFzRmxvYXQoKSk7CisgICAgICAgIENvbG9y
IHNoYWRvd0ZpbGxDb2xvciA9IGRyb3BTaGFkb3cuY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBs
aWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IpOwotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOworICAgICAgICBmbG9hdCBzaGFk
b3dUZXh0WCA9IHBvaW50LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCk7CiAgICAgICAg
IC8vIElmIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBh
cHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0g
ICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdo
dCgpICogKGdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAx
KTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBkcm9wU2hhZG93Lm9m
ZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSA/IC0xIDogMSk7CiAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQs
IHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSk7CiAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNX
aXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwogICAg
ICAgICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHNoYWRvd09mZnNldC53
aWR0aCgpICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHNoYWRvd09m
ZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dD
b250ZXh0LCBwb2ludC54KCkgKyBkcm9wU2hhZG93Lm9mZnNldC53aWR0aCgpICsgZm9udC5zeW50
aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIGRyb3BTaGFkb3cub2Zmc2V0LmhlaWdodCgp
KTsKICAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0
LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwogICAgICAgICB9CiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKQEAgLTIwOCw3ICsyMDUsNyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGb250JiBmb250LAogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cp
Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXREcm9wU2hhZG93
KGRyb3BTaGFkb3cpOwogCiAgICAgRm9udENhc2NhZGU6OnNldEZvbnRTbW9vdGhpbmdTdHlsZShj
Z0NvbnRleHQsIG9sZEZvbnRTbW9vdGhpbmdTdHlsZSk7CiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIHNhdmVkTWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4IDdlZDUzN2M5Mjc5Mzc3MGY0NDg4YWUyOWRm
NDA3MjdkN2ViMWEzYTkuLjYxNzhhZWIxYzg3NjM3NzIxOTVmOWU0NDc2MTBlNDkwZTc2NGY1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApA
QCAtNjksNyArNjksNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6Y2FsY3VsYXRlVXBkYXRl
ZFN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QKIHN0YXRpYyB2b2lkIHVzZVN0cm9rZVN0eWxlVG9G
aWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBncmFkaWVudCA9
IGNvbnRleHQuc3Ryb2tlR3JhZGllbnQoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGll
bnQoKmdyYWRpZW50LCBjb250ZXh0LnN0YXRlKCkuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBh
dHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgY29udGV4dC5zZXRGaWxs
UGF0dGVybigqcGF0dGVybik7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IDU0MzgxODJkZGU4NzYzZWJhZDM4ZjE5MmRmNzk1YWEwNjBiNjUxYmIuLjllMzc4NmUw
ZmRjZGI4OWZiMDY2MjhjOGZjYzZkYzg3Yjc3YzNlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0
YXRlQ2hhbmdlKCkubV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoIWZpeFBh
dHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5n
ZSgpLm1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJ
bWFnZShpdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCA4NTc3Y2JiZGU2ZDM5MDFkMzQ3MDc2MWVk
MzBmNzlkOThlODJiOThkLi45YmFmOWEzNWM5NzBmOWI3NTEwMzA1NmNiNWJkNzgxNmFlY2FkNzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC0x
MTcsOSArMTE3LDkgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6U2V0U3Ryb2tlVGhpY2tuZXNzKHRoaWNrbmVzcykp
OwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6U2V0U3Rh
dGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlIHsgc3RhdGUsIGZsYWdzIH0pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlzdDo6
U2V0U3RhdGUgeyBzdGF0ZSB9KSk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IDliMzNhMDY3ZmQxNmJjY2YxNDA0MmMx
OTc0ZGQ2OTE5NDIyNjI0NjguLmJlZDM2M2UwNjI0NTM1MjdmOWEwNjIwODhjZTY3N2MyYjk5MjI1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtNzQs
NyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFdl
YkNvcmU6OlNSR0JBPHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldElubGluZVN0
cm9rZUNvbG9yKFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29y
ZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRTZXRTdGF0
ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNl
dFN0YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAgICAg
dm9pZCByZWNvcmRTZXRMaW5lQ2FwKFdlYkNvcmU6OkxpbmVDYXApIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkU2V0TGluZURhc2goY29uc3QgV2ViQ29yZTo6RGFzaEFycmF5JiwgZmxvYXQgZGFzaE9m
ZnNldCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihXZWJDb3JlOjpMaW5lSm9p
bikgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMDE2NmE1MzljNzEyYzRjNzRlZTY2ZDQ2MTY1ZGYyNGJjMTdmOWU4Yy4uNzA3MDBhMGVi
NmMyNjQ1ZDUzMDk1ZjE4ZmU2OTIzNGQ4YzNhYWVmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTE4ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgdGlsbCB0
aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzgwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRU
ZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAzLTE3
ICBKb25hdGhhbiBCZWRhcmQgIDxKb25XQmVkYXJkQGdtYWlsLmNvbT4KIAogICAgICAgICBjb25m
aWd1cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRldmVsb3BtZW50IGZhaWxzIHdpdGggWGNvZGUgMTMu
MwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBo
aWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmluZGV4IDI0NzM1ODBmMTkwZTBmZDY3NGMz
NjdkYTQ3YzlmMTkyYmEyNDg1ZTQuLjIxNWMxN2M2NjU3YWVkYTZhNmUyY2QwYWUwYzljOTI2ZjNi
ZDgyYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9H
cmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
VEVTVChHcmFwaGljc0NvbnRleHRUZXN0cywgRHJhd05hdGl2ZUltYWdlRG9lc05vdExlYWtDb21w
b3NpdGVPcGVyYXRvcikKICAgICBHcmFwaGljc0NvbnRleHRDRyBjdHgoY2dDb250ZXh0LmdldCgp
KTsKIAogICAgIEVYUEVDVF9FUShjdHguY29tcG9zaXRlT3BlcmF0aW9uKCksIENvbXBvc2l0ZU9w
ZXJhdG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZU9wZXJhdGlv
bigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGUoKSwg
QmxlbmRNb2RlOjpOb3JtYWwpOwogCiAgICAgYXV0byBncmVlblBpeGVsQ0cgPSBncmVlbkltYWdl
KCk7CiAgICAgYXV0byBncmVlblBpeGVsTmF0aXZlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShncmVl
blBpeGVsQ0cuZ2V0KCkpOwpAQCAtNzEsNyArNzEsNyBAQCBURVNUKEdyYXBoaWNzQ29udGV4dFRl
c3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBvc2l0ZU9wZXJhdG9yKQogICAgIEVY
UEVDVF9FUShwcmltYXJ5RGF0YVsyXSwgMCk7CiAKICAgICBFWFBFQ1RfRVEoY3R4LmNvbXBvc2l0
ZU9wZXJhdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zlcik7Ci0gICAgRVhQRUNU
X0VRKGN0eC5ibGVuZE1vZGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIEVY
UEVDVF9FUShjdHguYmxlbmRNb2RlKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQxYTNkYWZmN2Y5NjNiOTVhZDY1YjgwYjA1
MzRkY2Q2ZTAxZTZjMWEuLjJkMDY3NjM0Y2JjZGRjODc5OTUwOTExMjgwM2JlNGZiZmY2MjhlOTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250
ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkaXNwbGF5bGlz
dHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZGlzcGxh
eWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBkaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAz
LTE3ICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zsb3Jlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjkxMTI5LXIyOTExMjgpOiBbV0sxIEVXU10gMyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2FuaW1hdGlvbi1tb2RlbC9hbmltYXRpb24t
dHlwZXMvKiB0ZXN0cyBhcmUgYSBjb25zdGFudCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVj
dGVkLnR4dAppbmRleCA1MTFiN2MwYzU0ZDMzMjE2YjdjNmVhZjA0M2E3NWMxNjc2NmQwNDI3Li5i
MjlmZTJmNTM5YWQ5NjZmNTAyYTUzYjczNzkxZWZlMTRhMGU5Y2IzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhw
ZWN0ZWQudHh0CkBAIC00LDExICs0LDEyIEBACiAgICh5IDAuMDApKQogKHNhdmUpCiAoc2V0LXN0
YXRlCi0gIChjaGFuZ2UtZmxhZ3MgNTEyKQotICAoc2hhZG93LWJsdXIgMTIuMDApCi0gIChzaGFk
b3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKLSAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQot
ICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFncyBbZHJvcC1z
aGFkb3ddKQorICAoZHJvcC1zaGFkb3cKKyAgICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWln
aHQ9MjApCisgICAgKHNoYWRvdy1ibHVyIDEyLjAwKQorICAgIChzaGFkb3ctY29sb3IgIzAwMDAw
MCkKKyAgICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1jb21wb3NpdGVk
LXJlY3QKICAgKHJlY3QgYXQgKDUwLDUwKSBzaXplIDEwMHgxMDApCiAgIChjb2xvciAjMDAwMEZG
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10
cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQt
aW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKaW5kZXggMzg2ZTM5NDExODVmMDlhM2M2
OGVjNmMyYWU4OGRmMTFjNzBiMGE2OS4uMWRjYWJiZTdjZTA1YmNiZTk0ZTIzMzY0ZWJlMjllYTc2
ZmYwZjU5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNs
dWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlz
dHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0CkBAIC02LDExICs2LDEy
IEBACiAgIChjdG0ge209KCgwLjg3LDAuNTApKC0wLjUwLDAuODcpKSB0PSg4MS43MCwtMTguMzAp
fSkpCiAoc2F2ZSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyA1MTIpCi0gIChzaGFkb3ct
Ymx1ciAxMi4wMCkKLSAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQotICAoc2hh
ZG93LWNvbG9yICMwMDAwMDApCi0gIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApKQorICAo
Y2hhbmdlLWZsYWdzIFtkcm9wLXNoYWRvd10pCisgIChkcm9wLXNoYWRvdworICAgIChzaGFkb3ct
b2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKKyAgICAoc2hhZG93LWJsdXIgMTIuMDApCisgICAg
KHNoYWRvdy1jb2xvciAjMDAwMDAwKQorICAgIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDAp
KSkKIChmaWxsLWNvbXBvc2l0ZWQtcmVjdAogICAocmVjdCBhdCAoMCwwKSBzaXplIDEwMHgxMDAp
CiAgIChjb2xvciAjMDAwMEZGKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3Rz
L2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKaW5kZXggYmMxN2I1MTE0OTlmODI1NmM5
OTI5MGRhZTg2MTRkNDg5NGNhZjljYy4uNGRhMDZiM2MzODc2MmVkNzI1Njg1NGM0ZTNmNGUwNzgz
YTY1ZmI2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3Bh
eS1saXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXIt
ZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CkBAIC04LDkgKzgsMTAgQEAKICAgKGNvbXBvc2l0ZS1v
cGVyYXRpb24gc291cmNlLW92ZXIpCiAgIChibGVuZC1tb2RlIG5vcm1hbCkgZXh0ZW50IGF0ICgw
LDApIHNpemUgMTA0eDEwNCkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyAzMjk2MCkKLSAg
KGZpbGwtY29sb3IgIzAwMDBGRikKLSAgKHN0cm9rZS1zdHlsZSAwKQorICAoY2hhbmdlLWZsYWdz
IFtmaWxsLWJydXNoLCBzdHJva2Utc3R5bGUsIHNob3VsZC1hbnRpYWxpYXNdKQorICAoZmlsbC1i
cnVzaAorICAgIChjb2xvciAjMDAwMEZGKSkKKyAgKHN0cm9rZS1zdHlsZSBOTy1TVFJPS0UpCiAg
IChzaG91bGQtYW50aWFsaWFzIDApKQogKGRyYXctcmVjdAogICAocmVjdCBhdCAoMCwwKSBzaXpl
IDEwNHgyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455143</attachid>
            <date>2022-03-18 15:25:44 -0700</date>
            <delta_ts>2022-03-20 02:27:06 -0700</delta_ts>
            <desc>Investigate Cairo failures</desc>
            <filename>bug-238066-20220318152543.patch</filename>
            <type>text/plain</type>
            <size>199588</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uZGY2MzAzNGJlZDU1NjdhZjY3Y2EwYzExZjc2OGEz
NmIwZTU4NDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGN1bGF0ZURyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjphcHBseVNoYWRvd09mZnNldFdvcmthcm91
bmRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDR1NoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENHOjpzdHJva2VFbGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJy
dXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlQ1RNKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9r
ZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0lzQ2xlYXJlZCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVt
cEZvckZsYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3Rh
dGU6OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6
YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNo
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29udGFpbnNPbmx5SW5saW5lU3Rh
dGVDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JUcmFuc3Bh
cmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JTYXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
U2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
ZXh0ZW50RnJvbUxvY2FsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlk
VXBkYXRlU3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZmlsbFJlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1JlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0xpbmUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0Vs
bGlwc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdv
b2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBz
aG91bGQgYWx3YXlzIGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2Vh
YWQwNmJlN2Y4Y2VlMDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUw
Mjc5NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2Ug
R3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUg
YXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpyZWNvcmRTZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlB
Y3Rpdml0eUluTWFuYWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4u
ZWJjYjUzMTdjZDdmMzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xNTcxLDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExv
Y2FsaXplQXhpc05hbWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlSW1hZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMz
OWZmOGYyMjRlZjZhODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRl
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQw
Zjg5Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIy
ZWZkYzJjZWRkNTNmYzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2
NDQyNzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBG
aWx0ZXJSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9t
YWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2
NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4
Rjc1MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcy
RkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8q
IFNvdXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NG
RTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3
NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBK
U01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU3OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07
CkBAIC0xMTQyOCw2ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3RBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyRkIyMzk2MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2gu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMg
LyogU291cmNlQnJ1c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNl
QnJ1c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjkxNTIsNiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAv
KiBTaGFkb3dCbHVyLmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hh
ZG93Qmx1ci5oICovLAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2Nh
bGl6ZUF4aXNOYW1lcy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3Vy
Y2VCcnVzaC5jcHAgKi8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJy
dXNoLmggKi8sCiAJCQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwICovLAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZm
ZXJQcml2YXRlLmggKi8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBE
NEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8q
IFNvdXJjZUFscGhhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NE
QUMgLyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdB
OUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REYxMzUwOTI0QzlGQ0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNj
Yjc4ODExN2RlNjkzOGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiB0ZXh0UnVuLCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICog
bWFza1JlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwotICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7Ci0gICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRy
b3BTaGFkb3coKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3Qp
OwotICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0g
ICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAg
ICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAg
ICAgICBjLT5jbGlwKHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0g
b2Zmc2V0OworICAgICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAg
ICAgICAgICBjLT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0Nv
bG9yLCBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93
KGRyb3BTaGFkb3cub2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29s
b3IsIFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQog
ICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZh
NGNiMmEyLi4xYmQ2NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJl
dHVybiBtX3ByaW1hcnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lk
IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0
ZVN0YXRlKCkgaW5zdGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAg
IC8vIGFyZSBhbHNvIGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGUsIHNvIHRoYXQgY29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0
aGF0IHJlYWRzIGZyb20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3By
aW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlD
b250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51
cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0
YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1Mp
ICYmICFVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0
MmI3Mzc3NzI3YzExYTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQy
ZTM2N2RkMzdmMDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9T
KFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKiBkZXByZWNhdGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5k
ZXggMjVhM2QzZmU4NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgy
MmYxMTNkYmJiMDYxNDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwx
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250
JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQo
KTsKIAotICAgIHZvaWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0g
bnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsK
KyAgICB2b2lkIHVwZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQg
dXBkYXRlU3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIHsKICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAg
Tm8KICAgICB9OwotICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hh
ZG93JiwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYg
IVBMQVRGT1JNKFdJTikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTEx
MSwyNyArMTExLDEzIEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxU
ZXh0TWF0cml4OwogCiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsK
LSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBn
cmFkaWVudDsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNm
b3JtOwotICAgICAgICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0g
ICAgICAgIFN0eWxlIGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAg
ICAgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VC
cnVzaDsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hh
ZG93U3RhdGUgewotICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZs
b2F0IGJsdXIgeyAwIH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJv
b2wgaWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRv
d1N0YXRlIHNoYWRvdzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBi
b29sIGlnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmln
aW5hbFN0YXRlOwotICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJj
OGEzZTg2My4uMDMxMDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC00Myw2ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2VGbGFncyYgY2hhbmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQor
CiBHcmFwaGljc0NvbnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0
YWNrLmlzRW1wdHkoKSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmUoKQogICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0Ojp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7
Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShzdGF0ZSwgZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0
RHJhd2luZ1N0YXRlKTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAt
OTMsODQgKzk4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxw
dHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBT
aGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7Ci0gICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVz
TW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
LXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUu
c2hhZG93Qmx1ciA9IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAg
bV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBt
X3N0YXRlLnNoYWRvd09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAg
IGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0g
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJl
ZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsK
LSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17
Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwot
ICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9
OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50
Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAg
bV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklY
TUU6IGFsc28gZmlsbCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3Vu
dDsKQEAgLTQ5MSwxMyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRG
aWxsQ29sb3Iob2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNv
bXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAg
ICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRl
T3BlcmF0aW9uQ2hhbmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVU
b1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0
cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRo
cywgd2UgYWRkIGluIDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0
IGFyaXRobWV0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZk
M2ZlZi4uZmIyMzdhNTBlOWIwNTk0MmM5OTI5NWM2MTY3MzhiY2U0ZWU1MjZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTY0LDkgKzY0LDggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFz
cyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29u
dGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlRmxhZ3MmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0Nv
bnRleHQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtODAsODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENv
bnRleHQgU3RhdGUKIAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVz
cykgeyBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0K
LSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9r
ZVRoaWNrbmVzczsgfQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHls
ZSkgeyBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0K
LQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsK
LSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUNvbG9yOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4o
UmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmls
bENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAg
IEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVz
aC5ncmFkaWVudCgpOyB9CisgICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmZpbGxCcnVzaC5wYXR0ZXJuKCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1
c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNo
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYg
cGF0dGVybikgeyBtX3N0YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9
IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VU
cmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgPSB7IH0pOwotICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0Rmls
bFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFu
Z2UpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZp
bGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0
YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKwor
ICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ry
b2tlQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIFBhdHRlcm4q
IHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRl
cm4oKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVz
aCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsg
bV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYm
IGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7
IG1fc3RhdGUuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNm
b3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tl
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRT
dHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwot
ICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0
dGVybi5nZXQoKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tl
U3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBz
aGFkb3dCbHVyKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAg
ICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCku
Y29sb3I7IH0KKyAgICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNo
YWRvdykgeyBtX3N0YXRlLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQs
IGZsb2F0IGJsdXJSYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBz
aGFkb3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hh
ZG93KHsgb2Zmc2V0LCBibHVyUmFkaXVzLCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQor
ICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9v
bCBoYXNWaXNpYmxlU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJs
ZSgpOyB9CisgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNo
YWRvdygpLmlzQmx1cnJlZCgpOyB9CisgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVy
biBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBv
c2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21w
b3NpdGVNb2RlKCkub3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBv
c2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9z
aXRlTW9kZShjb21wb3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJs
ZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2Rl
KHsgb3BlcmF0aW9uLCBibGVuZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9
IHsgfSk7Ci0gICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmFscGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0
YXRlLnNldEFscGhhKGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cykgeyBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtczsg
fQorICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01v
ZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4
dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgCisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQor
ICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFs
aWFzKSB7IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hh
bmdlKTsgfQogICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNo
b3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxp
YXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHMgPSBzaG91bGRTbW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxk
U21vb3RoRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9
CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7
IG1fc3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhl
bC1xdWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxp
Z25pbmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRv
IHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lk
IHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29s
IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5z
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsg
fQotICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAg
IHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9
Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7IH0KLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0
RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdM
dW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBi
b29sIGRyYXdMdW1pbmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5h
bmNlTWFzazsgfQotCi0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkgeyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
OyB9Ci0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwg
U2hhZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAg
IGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29s
b3IuaXNWaXNpYmxlKCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93
T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAg
Ym9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygp
ICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2so
Ym9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRy
YXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29s
IHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJr
QXBwZWFyYW5jZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBz
ZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0
VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5t
ZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERy
YXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkg
Y2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdh
dGUgY2hhbmdlcwogICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAg
dmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCByZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkz
NTQwODY2NGMyNzZmY2UzZDU5OWU2MTRmOWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1
NzdhNTcwN2I5N2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgog
Ci0jaW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
ZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVy
dHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmxh
Zyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAg
OiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0g
ICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFw
aGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3Mm
IGNoYW5nZUZsYWdzKQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdy
YXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1H
cmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3ND
b250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1
bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIGZsYWdzKQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2
ZUNoYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQg
PSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0
cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3Jh
ZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xv
ciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdy
YWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0K
LQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAg
ICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9
IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hh
ZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNr
bmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4
dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAg
IHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1
bGUgPSBzdGF0ZS5maWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHBy
aW1pdGl2ZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ry
b2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0
ZS5hbHBoYTsKKyAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZl
Q2hhbmdlRmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNv
bXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5k
TW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlh
bGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZv
bnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
Ci0gICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFz
a0NoYW5nZSkpCi0gICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KIAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5n
ZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVy
dHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8
IHRoaXMtPipwcm9wZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hh
bmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0
YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxl
LCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7
CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0
eWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHls
ZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMsICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0g
c3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0Fw
cGVhcmFuY2UpOwogI2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQ
YXR0ZXJuKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFu
Z2UsIGZpbGxHcmFkaWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBh
dHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0
YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1f
c3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0
YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxh
Z3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25l
c3MpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5n
ZSwgdGV4dERyYXdpbmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxDb2xvckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTdHJva2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAg
ICAgICAmJiAobV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciB8fCBtX3N0YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAg
IGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpC
bGVuZE1vZGVDaGFuZ2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KFNob3VsZEFudGlhbGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9u
dHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19G
T1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VE
YXJrQXBwZWFyYW5jZSk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoKSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9
IDE7CiAjZW5kaWYKLQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
c3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3Mp
OwotCi0gICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1v
dmUoc3Ryb2tlRmxhZ3MpOwotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGll
bnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAg
IGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdz
LnJlbW92ZShmaWxsRmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNo
YW5nZU5hbWVzW10gPSB7CisgICAgICAgICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVs
ZSIsCisKKyAgICAgICAgInN0cm9rZS1icnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNz
IiwKKyAgICAgICAgInN0cm9rZS1zdHlsZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwK
KyAgICAgICAgImRyb3Atc2hhZG93IiwKKworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1h
Z2UtaW50ZXJwb2xhdGlvbi1xdWFsaXR5IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwK
KworICAgICAgICAic2hvdWxkLWFudGlhbGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZv
bnRzIiwKKyAgICAgICAgInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAg
ICJzaGFkb3dzLWlnbm9yZS10cmFuc2Zvcm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1h
c2siCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmst
YXBwZWFyYW5jZSIKKyNlbmRpZgorICAgIH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9y
RmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxh
Z3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhbmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYg
bWFzaykpOwogCi0gICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0
ZUNoYW5nZU5hbWVzW2luZGV4XTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0
YXRlLnN0cm9rZVBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxQYXR0ZXJuKCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwg
bV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRUZXh0RHJhd2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNv
bG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0
YXRlLmZpbGxDb2xvcik7CisgICAgYXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8g
R3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7Cisg
ICAgICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KG5hbWUsIHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHls
ZSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAK
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1
bGUpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAg
ICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFD
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1
bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OlN0cm9rZUJydXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVt
cChDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5n
ZTo6U3Ryb2tlU3R5bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1v
ZGUpOworICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hh
bmdlTmFtZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNo
YWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxp
YXMobV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZv
bnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0
LnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dERyYXdMdW1pbmFuY2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkobV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1w
KENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6YWxwaGEsICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdl
OjpBbHBoYSkpOworICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0
YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBk
dW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hh
bmdlOjpUZXh0RHJhd2luZ01vZGUpKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMs
ICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOwor
ICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFt
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cywgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAg
ICBkdW1wKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBw
ZWFyYW5jZShtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNl
RGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFy
a0FwcGVhcmFuY2UsICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSkpOwogI2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBj
aGFuZ2UpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZs
YWdzLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdHJva2UtZ3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVy
biIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGll
bnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJm
aWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0Js
dXIpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNo
YWRvd09mZnNldCk7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9z
dGF0ZS5zaGFkb3dDb2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2Ut
bGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNN
b2RlOjpMZWdhY3kpOwotICAgIH0KLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRy
YXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRl
LnN0cm9rZUNvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBt
X3N0YXRlLmZpbGxSdWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
YWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxl
bmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFu
dGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInNob3VsZC1zbW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNl
TWFzayk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1f
c3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VO
YW1lKGNoYW5nZSk7CisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVD
aGFuZ2UpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0g
ICAgcmV0dXJuIHRzOworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFm
ZGJmMDdmOGE1OTU5NTk2Ny4uYTkyMTI3OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUg
IlNvdXJjZUJydXNoLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgR3JhZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRv
cj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90
IHsKLSAgICAgICAgU3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAwLAotICAgICAgICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDEsCi0gICAgICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMiwKLSAgICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAzLAotICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDQsCi0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSAgICAgICAgICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01v
ZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRp
YWxpYXNDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRT
bW9vdGhGb250c0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAg
ICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAg
IGVudW0gY2xhc3MgQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMSwKKworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8
IDIsCisgICAgICAgIFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAg
ICAgU3Ryb2tlU3R5bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBv
c2l0ZU1vZGUgICAgICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAg
ICAgICAgICAgICAgID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgNywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8
PCA4LAorICAgICAgICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAg
ICAgICAgU2hvdWxkQW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hv
dWxkU21vb3RoRm9udHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgICAgID0gMSA8PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0g
MSA8PCAxNCwKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJr
QXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1
c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hh
bmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VG
bGFncyBjaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRp
ZEFwcGx5Q2hhbmdlcygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0Rmls
bEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZp
bGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAg
IHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3Ig
fSk7IH0KKyAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdy
YWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFk
ZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7
IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1
bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSwgZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdy
YWRpZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0
U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNo
KTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
QnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFk
aWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkg
eyBzdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zv
cm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNl
dFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQ
YXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VC
cnVzaCk7IH0KKworICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNr
bmVzcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lk
IHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U3Ryb2tlU3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0
cm9rZVN0eWxlKTsgfQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUg
Y29tcG9zaXRlTW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2
b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dywgZHJvcFNoYWRvdyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxw
aGEpOyB9CisgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAg
dm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdN
b2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9p
ZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzLCBzaG91bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250
cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3Vs
ZFNtb290aEZvbnRzKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJh
d0x1bWluYW5jZU1hc2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1h
c2spOyB9CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURh
cmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpVc2VEYXJrQXBwZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSwgdXNlRGFya0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGZpbGxHcmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47Cisg
ICAgYm9vbCBoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKKyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKLSAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENv
bG9yIGZpbGxDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBz
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAg
IFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZp
bGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJv
a2VCcnVzaCB7IENvbG9yOjpibGFjayB9OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAg
fTsKLSAgICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9Owot
CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRS
dWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9k
ZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNv
dXJjZU92ZXIgfTsKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwg
fTsKKyAgICAKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVy
YXRvcjo6U291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRy
b3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5
OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hh
ZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRB
bnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29s
IHNob3VsZEFudGlhbGlhcyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsg
dHJ1ZSB9OworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJh
d0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
Ci0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSB7IGZhbHNlIH07CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMtPipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy0+KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChj
aGFuZ2UpOworICAgIH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3Rh
dGUoc3RhdGUpCi0gICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAo
dGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRk
KGNoYW5nZSk7CiAgICAgfQorfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBj
b25zdDsKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsm
XShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsK
KyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBl
bmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0g
ICAgCi0gICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIg
PDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19
OworICAgIGVuY29kZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxs
UnVsZSwgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxS
dWxlKTsKKworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKwor
ICAgIGVuY29kZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9w
U2hhZG93KTsKKworICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdp
bmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2lu
Z01vZGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29k
ZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFu
Y2UpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJv
cGVydHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2Up
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBl
ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxH
cmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxQcm9wZXJ0eVR5cGU+IHZhbHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHN0YXRlLipwcm9wZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
IAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFn
cz4gY2hhbmdlRmxhZ3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNo
YW5nZUZsYWdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgc3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25l
c3MpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VTdHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhh
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxk
QW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSk7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCAr
MjU5LDI3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwK
LSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5h
bmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxl
LAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU1vZGUsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkRyb3BTaGFkb3csCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6QWxwaGEsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlRleHREcmF3aW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRz
LAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlm
CiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuY3BwCmluZGV4IDE1ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0Yjdh
OTNhYjQuLjEyZTRmZmJmMDg0NzM5MzkzOGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBA
IC0xMzYsNiArMTM2LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxl
bmRNb2RlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29t
cG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdGlvbiIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJv
cGVydHkoImJsZW5kLW1vZGUiLCBjb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJu
IHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cm9wU2hhZG93JiBkcm9wU2hhZG93KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9m
ZnNldCIsIGRyb3BTaGFkb3cub2Zmc2V0KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1i
bHVyIiwgZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRv
dy1jb2xvciIsIGRyb3BTaGFkb3cuY29sb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
cy11c2UtbGVnYWN5LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRp
dXNNb2RlOjpMZWdhY3kpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkpCit7CisgICAgc3dpdGNoIChpbnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRl
cnBvbGF0ZToKKyAgICAgICAgdHMgPDwgIkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwg
IkxPVyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1l
ZGl1bToKKyAgICAgICAgdHMgPDwgIk1FRElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxl
KSB7CkBAIC0xODIsNCArMjIwLDQyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIExpbmVKb2luIGpvaW5TdHlsZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQor
eworICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0
cm9rZToKKyAgICAgICAgdHMgPDwgIk5PLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3Ryb2tlU3R5bGU6OlNvbGlkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tF
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgor
ICAgICAgICB0cyA8PCAiRE9UVEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0Ui
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6Cisg
ICAgICAgIHRzIDw8ICJET1VCTEUtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dHJva2VTdHlsZTo6V2F2eVN0cm9rZToKKyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkK
K3sKKyAgICBzd2l0Y2ggKHRleHREcmF3aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdN
b2RlOjpGaWxsOgorICAgICAgICB0cyA8PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVGV4dERyYXdpbmdNb2RlOjpTdHJva2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgKaW5kZXggZGVjNDM0NzAyY2Y3NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcy
OTc4MzFhMmJmMzQ2OGNhZWM4ZjUyMDBmMDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVu
ZE1vZGUgOiB1aW50OF90IHsKICAgICBQbHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0
ZU1vZGUgeworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUg
YmxlbmRNb2RlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90
aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24g
JiYgYmxlbmRNb2RlID09IG90aGVyLmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0
ZU1vZGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
b3BlcmF0aW9uOworICAgIGVuY29kZXIgPDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9w
ZXJhdG9yPiBvcGVyYXRpb247CisgICAgZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFv
cGVyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAg
IGlmICghYmxlbmRNb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyAqb3BlcmF0aW9uLCAqYmxlbmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50
TWFya2VyTGluZVN0eWxlIHsKICAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAg
ICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2
ICsxNDksNjcgQEAgc3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUs
ICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1
ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8g
SXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNo
YWRvd1JhZGl1c01vZGUgOiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKwor
c3RydWN0IERyb3BTaGFkb3cgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1
clJhZGl1cyB7IDAgfTsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJh
ZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0Js
dXJyZWQoKSBjb25zdCB7IHJldHVybiBpc1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAg
Ym9vbCBoYXNPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJs
ZSgpICYmICFvZmZzZXQuaXNaZXJvKCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJv
cFNoYWRvdyYgYikKK3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVy
UmFkaXVzID09IGIuYmx1clJhZGl1cyAmJiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNN
b2RlID09IGIucmFkaXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RHJvcFNoYWRvdzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBvZmZzZXQ7CisgICAgZW5jb2RlciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwg
Y29sb3I7CisgICAgZW5jb2RlciA8PCByYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorc3RkOjpvcHRpb25hbDxEcm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0Owor
ICAgIGRlY29kZXIgPj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAg
ICBkZWNvZGVyID4+IGJsdXJSYWRpdXM7CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7Cisg
ICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNN
b2RlOworICAgIGRlY29kZXIgPj4gcmFkaXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpi
bHVyUmFkaXVzLCAqY29sb3IsICpyYWRpdXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFk
aWVudFNwcmVhZE1ldGhvZCA6IHVpbnQ4X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAt
MTU4LDEzICsyNTcsNiBAQCBlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3Qgewog
fTsKIHVzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9k
ZT47CiAKLS8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBh
bmQgLXdlYmtpdC1ib3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2Yg
cmFkaWkgPiA4cHguCi1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBE
ZWZhdWx0LAotICAgIExlZ2FjeQotfTsKLQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhh
YmV0aWNUZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwx
NCBAQCBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29t
cG9zaXRlTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25R
dWFsaXR5KTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBMaW5lQ2FwKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUp
OworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFRleHREcmF3aW5nTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3Yzlh
MTFiNDIyNDY4ODVlLi42YzMzMzM5NjI3MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBo
aWNzQ29udGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWlu
dEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlk
YXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50
ZnVsUGFpbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29u
cyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsg
fQogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNp
ZiBVU0UoQ0cpCiAgICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
aW5kZXggYmIxMzhiNTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFh
YmZjZTM4MDgxODNhM2IyMzFmYmNlMGZmYjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNo
YWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQog
Ci1TaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkKLSAgICA6IG1fY29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMo
c3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRl
LnNoYWRvd09mZnNldCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BT
aGFkb3cmIGRyb3BTaGFkb3csIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBt
X2NvbG9yKGRyb3BTaGFkb3cuY29sb3IpCisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5i
bHVyUmFkaXVzLCBkcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hh
ZG93Lm9mZnNldCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3Jy
ZWN0bHkgcmVuZGVycyBzaGFkb3dzIHdpdGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0v
ODEwMzQ0Mj4pLAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVo
YXZpb3IgZm9yIGNhbnZhcyBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5z
aGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBm
bG9hdCBzaGFkb3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7
CisgICAgaWYgKGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdh
Y3kpIHsKKyAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRy
b3BTaGFkb3cuYmx1clJhZGl1cyk7CiAgICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShz
aGFkb3dCbHVyLCBzaGFkb3dCbHVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3
ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhLi44ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2
MTc3MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlOworc3RydWN0IERyb3BTaGFkb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3Mg
U2hhZG93Qmx1ciB7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIo
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
ZmFsc2UpOwotICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1z
ID0gZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCcnVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCcnVzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUw
NzM1MjQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJydXNoLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTb3VyY2VCcnVzaC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpT
b3VyY2VCcnVzaChjb25zdCBDb2xvciYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1
c2gpCisgICAgOiBtX2NvbG9yKGNvbG9yKQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkK
K3sKK30KKworY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRy
YW5zZm9ybT4gaWRlbnRpdHk7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRl
bnRpdHkuZ2V0KCk7CisKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVz
aDo6TG9naWNhbEdyYWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3Jh
ZGllbnQtPnNwYWNlVHJhbnNmb3JtOworCisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQor
CitHcmFkaWVudCogU291cmNlQnJ1c2g6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
YnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9
IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisg
ICAgICAgIHJldHVybiBncmFkaWVudC0+Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1BhdHRlcm4qIFNvdXJjZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0
ZXJuID0gc3RkOjpnZXRfaWY8UmVmPFBhdHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAg
ICByZXR1cm4gcGF0dGVybi0+cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
U291cmNlQnJ1c2g6OnNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVz
aDo6TG9naWNhbEdyYWRpZW50IHsgV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0g
fTsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKQoreworICAgIG1fYnJ1c2ggPSB7IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYg
YnJ1c2gpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOwor
CisgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImdyYWRpZW50IiwgZ3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVy
biA9IGJydXNoLnBhdHRlcm4oKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwg
cGF0dGVybik7CisKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5YjlmYWU1NDk0MzQ5ZGI1NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5o
CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgorI2luY2x1ZGUgIlBhdHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTb3VyY2VCcnVzaCB7CitwdWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAg
ICAgc3RydWN0IExvZ2ljYWxHcmFkaWVudCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdy
YWRpZW50OworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisg
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxMb2dpY2FsR3JhZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAg
IH07CisKKyAgICAgICAgc3RkOjp2YXJpYW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+
PiBicnVzaDsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAg
ICBTb3VyY2VCcnVzaCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVz
aChjb25zdCBDb2xvciYsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOwor
CisgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAg
IHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBt
X2JydXNoOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBzcGFjZVRyYW5zZm9ybSA9IHsgfSk7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmKTsKKworICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAm
JiBtX2NvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVy
Jik7CisKK3ByaXZhdGU6CisgICAgQ29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAg
IHN0ZDo6b3B0aW9uYWw8QnJ1c2g+IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBT
b3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5n
cmFkaWVudC5wdHIoKSA9PSBiLmdyYWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0g
Yi5zcGFjZVRyYW5zZm9ybTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3Vy
Y2VCcnVzaDo6QnJ1c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihhLmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJy
dXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBiR3JhZGllbnQgPSBzdGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudD4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQg
PT0gKmJHcmFkaWVudDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogYlBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1
c2gmIGIpCit7CisgICAgcmV0dXJuIGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgp
ID09IGIuYnJ1c2goKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8
PCBzcGFjZVRyYW5zZm9ybTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNo
OjpCcnVzaDo6TG9naWNhbEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdy
YWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNw
YWNlVHJhbnNmb3JtOworICAgIGlmICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNl
VHJhbnNmb3JtIH0gfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291
cmNlQnJ1c2g6OkJydXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBX
VEY6OnN3aXRjaE9uKGJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYg
Z3JhZGllbnQpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAg
ICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNv
dXJjZUJydXNoOjpCcnVzaD4gU291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29k
ZXIgPj4gaGFzR3JhZGllbnQ7CisgICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBn
cmFkaWVudCA9IExvZ2ljYWxHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAo
IWdyYWRpZW50KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpncmFkaWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVy
biA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9
IH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7Cisg
ICAgZW5jb2RlciA8PCBtX2JydXNoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxTb3VyY2VCcnVzaD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4g
Y29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29k
ZXIgPj4gYnJ1c2g7CisgICAgaWYgKCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBTb3VyY2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9
CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBT
b3VyY2VCcnVzaCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cAppbmRleCAxNTUyMzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi4yZGE0OTFm
ZDg3ZjZjZmJiMzNlNDdkOTgxMjMzN2JmMjE1OGY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
QEAgLTU1OSw0MiArNTU5LDQyIEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAg
ICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRl
cm4pIHsKLSAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVy
bi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1
dG8gZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBh
dHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0
YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdl
ID0gZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0
ZXJuSW1hZ2Uuc2l6ZSgpOwotICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRY
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZ
ID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZp
bGxHcmFkaWVudCkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAg
ICAgICAgcGF0dGVybi50cmFuc2Zvcm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNm
b3JtKCk7CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7
CisgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAg
fSBlbHNlIGlmIChhdXRvIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgp
KSB7CisgICAgICAgIGdyYWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4o
MSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlm
IChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9
IHN0YXRlLmZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1
c3RlZCA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmls
bEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bG9yID0gc3RhdGUuZmlsbENvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5j
b2xvcigpOwogfQogCiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAg
ICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0
YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0o
KSkpOwotICAgIGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRp
ZW50LmJhc2UgPSBzdGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJu
ID0gc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgp
KSk7CisgICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNo
LmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRl
LmFscGhhLCBzdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihz
dGF0ZS5hbHBoYSwgc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAg
Y29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hh
ZG93U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAs
IGNvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cu
b2Zmc2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBj
b2xvcihzdGF0ZS5kcm9wU2hhZG93LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhh
KQotICAgICwgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Ip
CisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJh
dGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggYTdhZjBjZWI1MjQ5MDQwNDFlZTEyZDUxZjg5YzZk
ZjE2Y2IzNjAzNy4uZmU3MzhiZGY3N2U4Y2U3NjJhY2M5YTBmMGY4NGRkODM2MWM2OWMxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgYXV0
byYgc3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0
cm9rZVNvdXJjZShzdGF0ZSksCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBv
aW50LCBzY2FsZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNl
dCwKLSAgICAgICAgc3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3Ms
IHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9m
ZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZ01vZGUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDkwMDk2YWM2NDUyMjRkYmZkYzYwYmZhNmNhY2Fk
MDMwNzZjYjI5N2QuLjg1N2NlZDFhMjcwMzc2MWIxZDM3ODNiZGVlMzA4Mzc0ODczNjFmODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YWRpZW50Q2Fpcm8uY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5f
dD4gR3JhZGllbnQ6OmNyZWF0ZVBhdHRlcm4oZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IEFmZmlu
ZVQKIAogdm9pZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEu
MCwgY29udGV4dC5zdGF0ZSgpLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBhdXRv
IHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5maWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpKTsKICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGMzMjMwNDQ1MzUxYjAzZjJhYTg3MzZhZWUyYmNl
NzhiYzQzNjFmNDkuLjE0MmEzMzU2N2YwODFlYWZiMmY4MzAwNDZkNjk0OWU2NzZmMzgyOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENhaXJvOjpyZXN0b3JlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQog
ewogICAgIEFTU0VSVCghcmVjdC5pc0VtcHR5KCkpOwotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+
c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd1JlY3QoKnRoaXMsIHJlY3QsIGJvcmRlclRoaWNrbmVz
cywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3Ip
OworICAgIENhaXJvOjpkcmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBmaWxs
Q29sb3IoKSwgc3Ryb2tlU3R5bGUoKSwgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0x
NTQsMTUgKzE1MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZShjb25z
dCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKHN0cm9rZVN0
eWxlKCkgPT0gTm9TdHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9pbnQy
LCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNr
bmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMs
IHBvaW50MSwgcG9pbnQyLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlj
a25lc3MoKSwgc2hvdWxkQW50aWFsaWFzKCkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5
IHVzZWQgdG8gZHJhdyB0aGUgbGl0dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
LSAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNl
KCp0aGlzLCByZWN0LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBDYWlybzo6ZHJhd0VsbGlw
c2UoKnRoaXMsIHJlY3QsIGZpbGxDb2xvcigpLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigp
LCBzdHJva2VUaGlja25lc3MoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZp
bGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0xODYsNiArMTgzLDkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAiSW5zaWRl
IEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdCgpLCBzaGFkb3dPZmZzZXQoKSA9IHsgJTYu
MmYsICU2LjJmIH1cbiIsIHNoYWRvd09mZnNldCgpLndpZHRoKCksIHNoYWRvd09mZnNldCgpLmhl
aWdodCgpKTsKKwogICAgIENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgQ2Fpcm86OkZpbGxT
b3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIApAQCAtMTk2LDgg
KzE5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkK
IHsKLSAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXV0byBwYXR0ZXJuID0g
Z3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKKyAgICBhdXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgaWYgKCFwYXR0ZXJuKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTIwOSw3ICsyMDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0g
ICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0ZU9w
ZXJhdG9yOworICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBjb21wb3Np
dGVPcGVyYXRpb24oKTsKIAogICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KCp0aGlzLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKICAgICBDYWlybzo6ZmlsbFJl
Y3QoKnRoaXMsIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKQEAgLTI2
NSw3ICsyNjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZXNGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGljawogewogICAgIGlmICh3aWR0aHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgQ2Fpcm86OmRyYXdMaW5lc0ZvclRleHQo
KnRoaXMsIHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGlu
ZXMsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJvOjpkcmF3TGluZXNGb3JUZXh0KCp0
aGlzLCBwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVz
LCBzdHJva2VDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW50TWFya2Vy
TGluZVN0eWxlIHN0eWxlKQpAQCAtMjg0LDI4ICsyODMsMzAgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgQ2Fpcm86OnRyYW5zbGF0
ZSgqdGhpcywgeCwgeSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJv
OjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYg
KGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkKKyAg
ICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ryb2tlVGhp
Y2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCi0gICAgaWYgKGZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5j
aGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5
bGUpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0aGlzLCBzdGF0ZS5z
dHJva2VTdHlsZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93KSkgewogICAgICAgICBpZiAoc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlz
IGdyYXBoaWNzIGNvbnRleHQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dAogICAgICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1M
NSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKLSAgICAgICAgICAgIGF1dG8mIHNoYWRvd09m
ZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgICAgIG1fc3RhdGUuc2hhZG93T2Zm
c2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9Owor
ICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQ7
CisgICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQu
d2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNo
YW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMs
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOworICAgIGlmIChzdGF0
ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9z
aXRlTW9kZSkpCisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0
aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5i
bGVuZE1vZGUpOwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZEFudGlhbGlhc0NoYW5nZSkKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpCiAgICAgICAgIENhaXJv
OjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMp
OworCisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKQEAg
LTQzNCw3ICs0MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqCiAgICAgYXV0byYgc3RhdGUg
PSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5cGhzKCp0aGlzLCBDYWlybzo6Rmls
bFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAogICAgICAgICBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9m
ZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCi0gICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9k
ZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRv
d0NvbG9yLAorICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNr
bmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsCiAg
ICAgICAgIGZvbnRTbW9vdGhpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAppbmRl
eCA1NjQ2MWMxNTlhNTgzYzg5YzYxZThmMDJlNGUwYmVlN2IwNTkzMmVmLi43MzIxNDcwZmM0ZjFj
N2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFkNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkg
Y29uc3QgZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCgp
IGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAg
ICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICB2b2lk
IHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBE
YXNoQXJyYXkmLCBmbG9hdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMzI0NWM2MDA0
MzE1NTJkNTEzYjc0ZWViYzA5ZjMxOGVlYzNkZDcyYS4uZjlmZWFiNGUyNmYyOTgzMzgxZGNkZGE0
ZDU0YzUwYjc1MzhlNzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTg1LDEzICsxODUsMTQg
QEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVuZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBo
aWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBjZ0NvbnRleHQpCisgICAgOiBHcmFwaGljc0NvbnRl
eHQoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTdHJva2VUaGlja25lc3MgfSkKIHsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZShjZ0NvbnRleHQpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBzdGFydHMgaW4gc3lu
YyB3aXRoIG91ciBzdGF0ZS4KLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCB7IEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5n
ZSB9KTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKICAgICBtX3N0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkgPSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dDb250ZXh0R2V0
SW50ZXJwb2xhdGlvblF1YWxpdHkocGxhdGZvcm1Db250ZXh0KCkpKTsKIH0KIApAQCAtMzM4LDcg
KzMzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6CiAjZW5kaWYKIAogICAgIGF1dG8gb2xk
Q29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICBhdXRvIG9sZEJs
ZW5kTW9kZSA9IGJsZW5kTW9kZU9wZXJhdGlvbigpOworICAgIGF1dG8gb2xkQmxlbmRNb2RlID0g
YmxlbmRNb2RlKCk7CiAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgb3B0aW9ucy5jb21wb3Np
dGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8vIE1ha2UgdGhlIG9y
aWdpbiBiZSBhdCBhZGp1c3RlZERlc3RSZWN0LmxvY2F0aW9uKCkKQEAgLTU1NSwxMyArNTU2LDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIHsK
LSAgICBpZiAoIW1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm4o
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBsYXRm
b3JtQ29udGV4dCgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gQWZmaW5l
VHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAgICBhdXRvIHBsYXRm
b3JtUGF0dGVybiA9IG1fc3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KHVzZXJUb0Jhc2VDVE0pOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gc3Ryb2tlUGF0dGVy
bigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0
Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTc0LDEzICs1NzUsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybigpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLmZpbGxQ
YXR0ZXJuKQorICAgIGlmICghZmlsbFBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIEFmZmluZVRy
YW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VDVE0o
Y2dDb250ZXh0KSk7CiAKLSAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBh
dHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKKyAgICBhdXRvIHBs
YXRmb3JtUGF0dGVybiA9IGZpbGxQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2Vy
VG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwog
CkBAIC01OTEsMTEgKzU5MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQ
YXR0ZXJuKCkKICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjZ0NvbnRleHQsIHBsYXRmb3Jt
UGF0dGVybi5nZXQoKSwgJnBhdHRlcm5BbHBoYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBj
YWxjdWxhdGVEcmF3aW5nTW9kZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENH
UGF0aERyYXdpbmdNb2RlJiBtb2RlKQorc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdp
bmdNb2RlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQYXRoRHJhd2luZ01vZGUm
IG1vZGUpCiB7Ci0gICAgYm9vbCBzaG91bGRGaWxsID0gc3RhdGUuZmlsbFBhdHRlcm4gfHwgc3Rh
dGUuZmlsbENvbG9yLmlzVmlzaWJsZSgpOwotICAgIGJvb2wgc2hvdWxkU3Ryb2tlID0gc3RhdGUu
c3Ryb2tlUGF0dGVybiB8fCAoc3RhdGUuc3Ryb2tlU3R5bGUgIT0gTm9TdHJva2UgJiYgc3RhdGUu
c3Ryb2tlQ29sb3IuaXNWaXNpYmxlKCkpOwotICAgIGJvb2wgdXNlRU9GaWxsID0gc3RhdGUuZmls
bFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQ7CisgICAgYm9vbCBzaG91bGRGaWxsID0gY29udGV4
dC5maWxsUGF0dGVybigpIHx8IGNvbnRleHQuZmlsbENvbG9yKCkuaXNWaXNpYmxlKCk7CisgICAg
Ym9vbCBzaG91bGRTdHJva2UgPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSB8fCAoY29udGV4dC5z
dHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlICYmIGNvbnRleHQuc3Ryb2tlQ29sb3IoKS5pc1Zpc2li
bGUoKSk7CisgICAgYm9vbCB1c2VFT0ZpbGwgPSBjb250ZXh0LmZpbGxSdWxlKCkgPT0gV2luZFJ1
bGU6OkV2ZW5PZGQ7CiAKICAgICBpZiAoc2hvdWxkRmlsbCkgewogICAgICAgICBpZiAoc2hvdWxk
U3Ryb2tlKSB7CkBAIC02MjQsOSArNjI1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJh
d1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCi0gICAgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCB8
fCBzdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlmIChmaWxsR3JhZGllbnQoKSB8fCBzdHJv
a2VHcmFkaWVudCgpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55IG9wdGltaXplZCB3
YXkgdG8gZmlsbCAmIHN0cm9rZSBhIHBhdGggdXNpbmcgZ3JhZGllbnRzCiAgICAgICAgIC8vIEZJ
WE1FOiBCZSBzbWFydGVyIGFib3V0IHRoaXMuCiAgICAgICAgIGZpbGxQYXRoKHBhdGgpOwpAQCAt
NjM0LDEzICs2MzQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgoY29uc3Qg
UGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5maWxs
UGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVy
bigpOwotICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJu
KCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAgICAgQ0dQYXRoRHJhd2luZ01v
ZGUgZHJhd2luZ01vZGU7Ci0gICAgaWYgKGNhbGN1bGF0ZURyYXdpbmdNb2RlKHN0YXRlLCBkcmF3
aW5nTW9kZSkpIHsKKyAgICBpZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUoKnRoaXMsIGRyYXdpbmdN
b2RlKSkgewogI2lmIEhBVkUoQ0dfQ09OVEVYVF9EUkFXX1BBVEhfRElSRUNUKQogICAgICAgICBD
R0NvbnRleHREcmF3UGF0aERpcmVjdChjb250ZXh0LCBkcmF3aW5nTW9kZSwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSwgbnVsbHB0cik7CiAjZWxzZQpAQCAtNjU4LDcgKzY1OCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdy
YWRpZW50KSB7CisgICAgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gdGhpcy0+ZmlsbEdyYWRpZW50
KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3Qg
cmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxh
eWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAtNjcwLDMzICs2NzAs
MzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
ICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRleHQsIC1yZWN0Lngo
KSwgLXJlY3QueSgpKTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChsYXllckNvbnRl
eHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgucGxh
dGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4
dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBDR0Nv
bnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAg
ICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0g
ICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAg
ICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7
CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRo
KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQp
OwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNv
bnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICBpZiAo
ZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRl
eHRFT0NsaXAoY29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dD
b250ZXh0Q2xpcChjb250ZXh0KTsKIAotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLmZp
bGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigpKQogICAgICAgICBhcHBseUZpbGxQYXR0
ZXJuKCk7CiAjaWYgSEFWRShDR19DT05URVhUX0RSQVdfUEFUSF9ESVJFQ1QpCiAgICAgQ0dDb250
ZXh0RHJhd1BhdGhEaXJlY3QoY29udGV4dCwgZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9k
ZCA/IGtDR1BhdGhFT0ZpbGwgOiBrQ0dQYXRoRmlsbCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVs
bHB0cik7CkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAg
aWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSB0aGlzLT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAg
ICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRo
LmZhc3RCb3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIGZsb2F0IGxpbmVXaWR0aCA9IHN0cm9r
ZVRoaWNrbmVzcygpOwpAQCAtNzQyLDggKzc0Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBh
dGgobGF5ZXJDb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29u
dGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0p
OwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0
KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIHN0cm9rZUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFp
bnQobGF5ZXJDb250ZXh0KTsKIAogICAgICAgICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0gcm91
bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9u
WSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7CkBAIC03NTQsMTMgKzc1NCwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
ICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7
CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLnN0
cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJv
a2VQYXR0ZXJuKCk7CiAKICNpZiBVU0UoQ0dfQ09OVEVYVF9TVFJPS0VfTElORV9TRUdNRU5UU19X
SEVOX1NUUk9LSU5HX1BBVEgpCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsR3Jh
ZGllbnQpIHsKKyAgICBpZiAoYXV0byBmaWxsR3JhZGllbnQgPSB0aGlzLT5maWxsR3JhZGllbnQo
KSkgewogICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6
ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAtNzk4LDE4ICs3OTgsMTggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3QpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRl
eHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50
KGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29u
dGV4dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIENHQ29udGV4
dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsK
LSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4p
CisgICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKIAog
ICAgIGJvb2wgZHJhd093blNoYWRvdyA9IGNhblVzZVNoYWRvd0JsdXIoKTsKQEAgLTgxOCw3ICs4
MTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4
dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7
CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBT
aGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxv
YXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IpCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywg
MCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCkBAIC04NjYsNyArODY2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdAogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RT
aGFkb3coKnRoaXMsIHJlY3QpOwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OmZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QKICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkg
PSByZWN0LnJhZGlpKCk7CiAgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRpaS50b3BMZWZ0KCku
d2lkdGgoKSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWkudG9wUmlnaHQoKS53
aWR0aCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQo
KS53aWR0aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CiAgICAgYm9vbCBlcXVh
bEhlaWdodHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbUxlZnQo
KS5oZWlnaHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkudG9wUmln
aHQoKS5oZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRv
bVJpZ2h0KCkuaGVpZ2h0KCkpOwotICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IG1fc3RhdGUuZmls
bEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47CisgICAgYm9vbCBoYXNDdXN0b21GaWxs
ID0gZmlsbEdyYWRpZW50KCkgfHwgZmlsbFBhdHRlcm4oKTsKICAgICBpZiAoIWhhc0N1c3RvbUZp
bGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExlZnQoKS53aWR0
aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICogMiA9PSBy
LmhlaWdodCgpKQogICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCBy
KTsKICAgICBlbHNlIHsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
bwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRT
aGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0g
ICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93
Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCBy
b3VuZGVkSG9sZVJlY3QpOwogICAgIH0KIApAQCAtOTg5LDYgKzk4OSw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBD
R0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNl
dEFscGhhKGNvbnRleHQsIG9wYWNpdHkpOwogICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoY29udGV4dCwgMCk7CisgICAgCisgICAgbV9zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5j
eUxheWVyKCk7CiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlk
ZW50aXR5ID0gZmFsc2U7CiB9CiAKQEAgLTEwMDIsMTcgKzEwMDQsMTQgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIHJlc3RvcmUoKTsKIH0KIAot
c3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0
KQorc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQmIHhPZmZzZXQsIENHRmxvYXQmIHlPZmZzZXQpCiB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oV0lOKQogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oeE9mZnNldCk7CiAgICAgVU5VU0VEX1BBUkFN
KHlPZmZzZXQpOwogI2Vsc2UKLSAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChDR0Nv
bnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29u
dGV4dCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJv
YmxlbS81NTM5Mzg4PiBieSBlbnN1cmluZyB0aGF0IHRoZSBvZmZzZXRzIHdpbGwgZ2V0IHRydW5j
YXRlZApAQCAtMTAzMCwxMCArMTAyOSw4IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0
V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRp
ZgogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0
IENvbG9yJiBjb2xvcikKK3N0YXRpYyB2b2lkIHNldENHU2hhZG93KENHQ29udGV4dFJlZiBjb250
ZXh0LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpCiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7Ci0KICAgICBpZiAob2Zmc2V0LmlzWmVybygpICYmICFibHVyKSB7CiAg
ICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVaZXJvLCAw
LCAwKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0NSw3ICsxMDQyLDcgQEAgc3RhdGljIHZvaWQg
c2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSYKICAgICBDR0Zsb2F0IHlPZmZzZXQgPSBvZmZzZXQuaGVpZ2h0KCk7CiAgICAg
Q0dGbG9hdCBibHVyUmFkaXVzID0gYmx1cjsKIAotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpIHsKKyAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKSB7CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBnZXRVc2Vy
VG9CYXNlQ1RNKGNvbnRleHQpOwogCiAgICAgICAgIENHRmxvYXQgQSA9IHVzZXJUb0Jhc2VDVE0u
YSAqIHVzZXJUb0Jhc2VDVE0uYSArIHVzZXJUb0Jhc2VDVE0uYiAqIHVzZXJUb0Jhc2VDVE0uYjsK
QEAgLTEwNjYsNyArMTA2Myw4IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgLy8gRXh0
cmVtZSAiYmx1ciIgdmFsdWVzIGNhbiBtYWtlIHRleHQgZHJhd2luZyBjcmFzaCBvciB0YWtlIGNy
YXp5IGxvbmcgdGltZXMsIHNvIGNsYW1wCiAgICAgYmx1clJhZGl1cyA9IHN0ZDo6bWluKGJsdXJS
YWRpdXMsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCgxMDAwLjApKTsKIAotICAgIGFwcGx5U2hh
ZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGdyYXBoaWNzQ29udGV4dCwgeE9mZnNldCwgeU9m
ZnNldCk7CisgICAgaWYgKHJlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQpCisgICAgICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnRleHQs
IHhPZmZzZXQsIHlPZmZzZXQpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgY29sb3Is
IGFzIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29sb3Igd2FzIG5vdCBzZXQgZm9yIHRoZSBzaGFkb3cK
ICAgICAvLyBhbmQgd2Ugc2hvdWxkIHRoZXJlZm9yZSBqdXN0IHVzZSB0aGUgZGVmYXVsdCBzaGFk
b3cgY29sb3IuCkBAIC0xMDc2LDM5ICsxMDc0LDYxIEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUm
CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtl
KHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7CisgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VU
aGlja25lc3NDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwg
c3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICBmb3IgKGF1dG8gY2hh
bmdlIDogc3RhdGUuY2hhbmdlcygpKSB7CisgICAgICAgIHN3aXRjaCAoY2hhbmdlKSB7CisgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoOgorICAgICAg
ICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lk
dGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U3Ryb2tlQnJ1c2g6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpLmdl
dCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNl
dFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tl
Q29sb3IpLmdldCgpKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpDb21wb3NpdGVNb2RlOgorICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3Rh
dGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBzZXRDR0ZpbGxDb2xvcihj
b250ZXh0LCBzdGF0ZS5maWxsQ29sb3IpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3c6CisgICAgICAgICAgICBzZXRDR1NoYWRvdyhjb250ZXh0
LCByZW5kZXJpbmdNb2RlKCksIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hh
ZG93LmJsdXJSYWRpdXMsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsIHN0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4
dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToKKyAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhh
KGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAg
ICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRl
LmJsZW5kTW9kZSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eToKKyAgICAgICAgICAgIENHQ29udGV4dFNldEludGVy
cG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5n
ZSkpCi0gICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBjZ1RleHRE
cmF3aW5nTW9kZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpKTsKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6CisgICAgICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUu
dGV4dERyYXdpbmdNb2RlKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAg
ICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFu
dGlhbGlhcyk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hv
dWxkQW50aWFsaWFzOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNv
bnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgICAgICBicmVhazsKIAotICAg
IGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9u
dHNDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0
LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHM6CisgICAgICAgICAgICBDR0NvbnRleHRT
ZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7Cisg
ICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIENHQ29u
dGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxp
dHkoc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpCi0gICAgICAgIHNldENH
U2hhZG93KCp0aGlzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9z
dGF0ZS5zaGFkb3dDb2xvcik7CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0Q0c6OnNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCkBAIC0xMTI1
LDcgKzExNDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogewogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVu
dCkgeworICAgIGlmIChhdXRvIHN0cm9rZUdyYWRpZW50ID0gdGhpcy0+c3Ryb2tlR3JhZGllbnQo
KSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRvdWJsZUxpbmVXaWR0aCA9IGxpbmVXaWR0aCAqIDI7CiAgICAgICAgICAgICBmbG9hdCBhZGp1
c3RlZFdpZHRoID0gY2VpbGYocmVjdC53aWR0aCgpICsgZG91YmxlTGluZVdpZHRoKTsKQEAgLTEx
NDksOCArMTE2OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRB
ZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNl
UGF0aFdpdGhTdHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVy
Q29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAg
ICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29u
dGV4dCk7CiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihy
ZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlv
blkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgpOwpAQCAtMTE2MSwxMyArMTE4MSwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0
LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRo
KGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLSAgICAgICAg
ICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQo
KnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIHN0cm9rZUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFp
bnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAg
IGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAgICAgLy8gVXNpbmcgQ0dDb250ZXh0QWRkUmVjdCBh
bmQgQ0dDb250ZXh0U3Ryb2tlUGF0aCB0byBzdHJva2UgcmVjdCByYXRoZXIgdGhhbgpAQCAtMTQy
Miw3ICsxNDQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZp
bGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAvLyBDR0NvbnRleHRG
aWxsRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KLSAgICBpZiAobV9z
dGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVybikgeworICAgIGlmIChmaWxs
R3JhZGllbnQoKSB8fCBmaWxsUGF0dGVybigpKSB7CiAgICAgICAgIGZpbGxFbGxpcHNlQXNQYXRo
KGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQzNCw3ICsxNDU0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxp
cHNlKQogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmIGVsbGlwc2UpCiB7CiAgICAgLy8gQ0dDb250ZXh0U3Ryb2tlRWxsaXBzZUluUmVjdCBvbmx5
IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCB8
fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4pIHsKKyAgICBpZiAoc3Ryb2tlR3JhZGllbnQoKSB8fCBz
dHJva2VQYXR0ZXJuKCkpIHsKICAgICAgICAgc3Ryb2tlRWxsaXBzZUFzUGF0aChlbGxpcHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCmluZGV4IDYwM2IwZTkzNmVmYjUy
OGNhYzNkN2FkYzg2NmU5OTU3ZWUzMGViZWMuLmExYTI2YmZkMjg0ZDg0NDYzZWMyMGZiMDE0ZmEz
MzY5Yzg4Yzk5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCBj
YW5Vc2VTaGFkb3dCbHVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcAppbmRleCBlZmJjMWU0OTU0NDFiZWRlNzM0ZTk0OGRkMjZkMzcxNDQx
NjU1M2UwLi5kMGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5NDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC05Niw1MiArOTYs
MjQgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250
ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4
dFN0YXRlKQogewotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBjb250ZXh0
U3RhdGUuZmlsbENvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQg
PSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybTsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4gPSBjb250
ZXh0U3RhdGUuZmlsbFBhdHRlcm47Ci0KLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUu
Y29sb3IgPSBjb250ZXh0U3RhdGUuc3Ryb2tlQ29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0
cm9rZVN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtID0gY29udGV4
dFN0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9vcmlnaW5hbFN0YXRl
LnN0cm9rZVN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuc3Ryb2tlUGF0dGVybjsKKyAgICBt
X29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxCcnVzaDsKKyAgICBt
X29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2ggPSBjb250ZXh0U3RhdGUuc3Ryb2tlQnJ1c2g7CiAK
ICAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5nZXRDVE0oKTsgLy8gRklYTUU6IERl
YWwgd2l0aCBiYXNlIENUTS4KIAotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0ID0g
Y29udGV4dFN0YXRlLnNoYWRvd09mZnNldDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJs
dXIgPSBjb250ZXh0U3RhdGUuc2hhZG93Qmx1cjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93
LmNvbG9yID0gY29udGV4dFN0YXRlLnNoYWRvd0NvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5z
aGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtczsKLQotICAgIG1fY3VycmVudFN0YXRlID0gbV9vcmlnaW5hbFN0YXRlOworICAgIG1fb3Jp
Z2luYWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFkb3c7CisgICAgbV9v
cmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMgPSBjb250ZXh0U3RhdGUuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVy
bmFsQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewot
ICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAgICAg
ICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0
eWxlLmNvbG9yKTsKLSAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRp
ZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbEdyYWRpZW50KCptX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9vcmln
aW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0
ZS5maWxsU3R5bGUucGF0dGVybikKLSAgICAgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRG
aWxsUGF0dGVybigqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAgICB9Ci0K
LSAgICBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5z
dHJva2VTdHlsZS5jb2xvcik7Ci0gICAgZWxzZSBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLmdyYWRpZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlR3JhZGll
bnQoKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCwgbV9vcmlnaW5hbFN0YXRl
LnN0cm9rZVN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVsc2UgewotICAgICAg
ICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pOwotICAgICAgICBp
ZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pCi0gICAgICAgICAgICBtX2lu
dGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybigqbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLnBhdHRlcm4pOwotICAgIH0KKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbEJydXNo
KG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2gpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRT
dHJva2VCcnVzaChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOwogCiAgICAgbV9pbnRlcm5h
bENvbnRleHQtPnNldENUTShtX29yaWdpbmFsU3RhdGUuY3RtKTsKIAotICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuc2hhZG93
Lmlnbm9yZVRyYW5zZm9ybXMpOwotICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3cobV9v
cmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwg
bV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciwgY29udGV4dFN0YXRlLnNoYWRvd1JhZGl1c01v
ZGUpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyht
X29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbV9pbnRlcm5hbENvbnRleHQt
PnNldERyb3BTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCiAgICAgbV9pbnRl
cm5hbENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdN
b2RlKTsKIH0KQEAgLTE2NSw5NSArMTM3LDM5IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpw
cmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9vdGhpbmdNCiB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKQogewogICAg
IHVwZGF0ZUNUTShtX29yaWdpbmFsU3RhdGUuY3RtKTsKLSAgICB1cGRhdGVGaWxsQ29sb3IobV9v
cmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5n
cmFkaWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuLmdldCgpKTsK
LSAgICB1cGRhdGVTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3Is
IG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0
YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVNoYWRvdyhtX29yaWdp
bmFsU3RhdGUuc2hhZG93Lm9mZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyLCBtX29y
aWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRy
YW5zZm9ybXMgPyBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM6Ok5vKTsKKyAgICB1cGRhdGVGaWxsQnJ1c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxC
cnVzaCk7CisgICAgdXBkYXRlU3Ryb2tlQnJ1c2gobV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJydXNo
KTsKKyAgICB1cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3csIG1fb3JpZ2lu
YWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zID8gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcyA6
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpObyk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjp1cGRhdGVGaWxsQ29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3
R3JhZGllbnQsIFBhdHRlcm4qIG5ld1BhdHRlcm4pCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
dXBkYXRlRmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBuZXdCcnVzaCkKIHsKLSAgICAvLyBU
aGlzIGNoZWNrIGxvb2tzIHdyb25nIGJ1dCBpdCBhY3R1YWxseSBpc24ndCwgZm9yIG91ciBsaW1p
dGVkIHVzZS4KLSAgICAvLyBDVCB3aWxsIG9ubHkgZXZlciBzZXQgdGhpcyB0byBhIHNvbGlkIGNv
bG9yLCB3aGljaCB0aGlzIGlzIHRoZSBjb3JyZWN0IGNoZWNrIGZvci4KLSAgICAvLyBJbiBjb25j
bHVkZUludGVybmFsQ29udGV4dCgpIHdlIHNldCBpdCBiYWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdp
bmFsbHksIHdoaWNoIHRoaXMgY2hlY2sgd29ya3MgY29ycmVjdGx5IGZvciB0b28uCi0gICAgaWYg
KG5ld0NvbG9yID09IG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUu
ZmlsbENvbG9yID0gbmV3Q29sb3I7Ci0gICAgaWYgKG5ld0dyYWRpZW50KQotICAgICAgICBuZXdT
dGF0ZS5maWxsR3JhZGllbnQgPSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3UGF0dGVybikKLSAg
ICAgICAgbmV3U3RhdGUuZmlsbFBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIuZGlk
VXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNo
YW5nZSB9KTsKLSAgICBtX2N1cnJlbnRTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsK
KyAgICBtX293bmVyLnNldEZpbGxCcnVzaChuZXdCcnVzaCk7CiB9CiAKLXZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcihjb25zdCBDb2xvciYgbmV3Q29sb3IsIEdyYWRp
ZW50KiBuZXdHcmFkaWVudCwgUGF0dGVybiogbmV3UGF0dGVybikKK3ZvaWQgRHJhd0dseXBoc1Jl
Y29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgbmV3QnJ1c2gpCiB7
Ci0gICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBidXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZv
ciBvdXIgbGltaXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8g
YSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUgY29ycmVjdCBjaGVjayBmb3IuCi0gICAg
Ly8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0
IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJlY3RseSBmb3IgdG9v
LgotICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0g
ICAgbmV3U3RhdGUuc3Ryb2tlQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQp
Ci0gICAgICAgIG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbmV3R3JhZGllbnQ7Ci0gICAgaWYg
KG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0YXRlLnN0cm9rZVBhdHRlcm4gPSBuZXdQYXR0ZXJu
OwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0YXRlLnN0cm9rZVN0
eWxlLmNvbG9yID0gbmV3Q29sb3I7CisgICAgbV9vd25lci5zZXRTdHJva2VCcnVzaChuZXdCcnVz
aCk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVDVE0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBjdG0pCiB7Ci0gICAgaWYgKGN0bSA9PSBtX2N1cnJlbnRTdGF0ZS5jdG0pCisg
ICAgaWYgKG1fb3duZXIuZ2V0Q1RNKCkgPT0gY3RtKQogICAgICAgICByZXR1cm47Ci0KICAgICBt
X293bmVyLnNldENUTShjdG0pOwotICAgIG1fY3VycmVudFN0YXRlLmN0bSA9IGN0bTsKIH0KIAot
c3RhdGljIGJvb2wgc2hhZG93SXNDbGVhcmVkKGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0
LCBmbG9hdCBzaGFkb3dCbHVyKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRv
dyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93LCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKLSAgICByZXR1cm4gc2hhZG93T2Zmc2V0ID09IEZs
b2F0U2l6ZSgpICYmICFzaGFkb3dCbHVyOwotfQotCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
dXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dC
bHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotewotICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY29uc2lk
ZXIgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgaWYgbm9ib2R5IGhhcyBhbnkgc2hhZG93cy4KLSAg
ICBpZiAoc2hhZG93SXNDbGVhcmVkKHNoYWRvd09mZnNldCwgc2hhZG93Qmx1cikgJiYgc2hhZG93
SXNDbGVhcmVkKG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fY3VycmVudFN0YXRlLnNo
YWRvdy5ibHVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
bmV3U3RhdGU7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mgc3Rh
dGVDaGFuZ2VGbGFnczsKLQotICAgIGlmIChzaGFkb3dPZmZzZXQgIT0gbV9jdXJyZW50U3RhdGUu
c2hhZG93Lm9mZnNldCB8fCBzaGFkb3dCbHVyICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVy
IHx8IHNoYWRvd0NvbG9yICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xvcikgewotICAgICAg
ICBuZXdTdGF0ZS5zaGFkb3dPZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIG5ld1N0YXRl
LnNoYWRvd0JsdXIgPSBzaGFkb3dCbHVyOwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dDb2xvciA9
IHNoYWRvd0NvbG9yOwotICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLSAgICB9Ci0gICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zICE9IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCAmJiAoc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcykgIT0gbV9j
dXJyZW50U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMpIHsKLSAgICAgICAgbmV3U3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7Ci0gICAgICAgIHN0YXRlQ2hhbmdlRmxhZ3MuYWRk
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7Ci0g
ICAgfQotICAgIGlmIChzdGF0ZUNoYW5nZUZsYWdzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3Mp
OwotCi0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCA9IHNoYWRvd09mZnNldDsKLSAg
ICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciA9IHNoYWRvd0JsdXI7Ci0gICAgbV9jdXJyZW50
U3RhdGUuc2hhZG93LmNvbG9yID0gc2hhZG93Q29sb3I7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hh
ZG93Lmlnbm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93
c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CisgICAgbV9vd25lci5zZXREcm9wU2hhZG93KGRyb3BT
aGFkb3cpOworICAgIG1fb3duZXIuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CiB9CiAKIHZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKIHsK
ICAgICBpZiAoQ0dTdHlsZUdldFR5cGUoc3R5bGUpICE9IGtDR1N0eWxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IG1vcmUga2luZHMgb2YgQ0dTdHlsZXMuCi0gICAgICAgIHVw
ZGF0ZVNoYWRvdyh7MCwgMH0sIDAsIENvbG9yKCksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpV
bnNwZWNpZmllZCk7CisgICAgICAgIHVwZGF0ZVNoYWRvdyh7IH0sIFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOjpVbnNwZWNpZmllZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2MSw3
ICsxNzcsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KENHU3R5bGVS
ZWYgc3R5bGUpCiAgICAgYXV0byByYWQgPSBkZWcycmFkKHNoYWRvd1N0eWxlLmF6aW11dGggLSAx
ODApOwogICAgIGF1dG8gc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHN0ZDo6Y29zKHJhZCksIHN0
ZDo6c2luKHJhZCkpICogc2hhZG93U3R5bGUuaGVpZ2h0OwogICAgIGF1dG8gc2hhZG93Q29sb3Ig
PSBDR1N0eWxlR2V0Q29sb3Ioc3R5bGUpOwotICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd1N0eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShz
aGFkb3dDb2xvciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIHVwZGF0ZVNo
YWRvdyh7IHNoYWRvd09mZnNldCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRvd1N0eWxlLnJhZGl1
cyksIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3IpIH0sIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRl
cjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3Rh
dGUsIENHUmVjdCkKQEAgLTMyOCw4ICsyNDQsOCBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdAog
CiAgICAgYXV0byBmaWxsQ29sb3IgPSBDR0dTdGF0ZUdldEZpbGxDb2xvcihnc3RhdGUpOwogICAg
IGF1dG8gc3Ryb2tlQ29sb3IgPSBDR0dTdGF0ZUdldFN0cm9rZUNvbG9yKGdzdGF0ZSk7Ci0gICAg
dXBkYXRlRmlsbENvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENv
bG9yKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29s
b3JTcGFjZShzdHJva2VDb2xvcikpOworICAgIHVwZGF0ZUZpbGxCcnVzaChDb2xvcjo6Y3JlYXRl
QW5kUHJlc2VydmVDb2xvclNwYWNlKGZpbGxDb2xvcikpOworICAgIHVwZGF0ZVN0cm9rZUJydXNo
KENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKICAgICB1
cGRhdGVTaGFkb3coQ0dHU3RhdGVHZXRTdHlsZShnc3RhdGUpKTsKIAogICAgIGF1dG8gZm9udFNp
emUgPSBDR0dTdGF0ZUdldEZvbnRTaXplKGdzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29y
ZVRleHQuY3BwCmluZGV4IDUxMWUwOWI5NmNlZjAzMjUwOTBlMjNhZjkxNGFlMzVmMmFiOGVkMmUu
LjgwYThjOGFlNjU0OGQwYjZhOTZhYTMyZDdjMDU1ZGI2ODY0OTE2MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDYXNjYWRlQ29yZVRleHQuY3BwCkBAIC0yNDIsMTAgKzI0Miw3IEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHCiAgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjb250ZXh0KTsKICAgICBDR0Nv
bnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwogCi0gICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGF1dG8gZHJvcFNoYWRvdyA9IGNvbnRleHQuZHJvcFNo
YWRvdygpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0gPSBjb250ZXh0LmdldENU
TSgpOwogICAgIGZsb2F0IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LnN5bnRoZXRpY0JvbGRP
ZmZzZXQoKTsKQEAgLTI1OCwxNiArMjU1LDE2IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LnRl
eHREcmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5p
c1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9u
dCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRDVE0u
aXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LnRleHRE
cmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBkcm9wU2hhZG93LmNvbG9y
LmlzVmFsaWQoKSAmJiAhZHJvcFNoYWRvdy5ibHVyUmFkaXVzICYmICFwbGF0Zm9ybURhdGEuaXND
b2xvckJpdG1hcEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8
fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250
ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsK
ICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVs
eWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5n
LgogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xv
ciA9IGNvbnRleHQuZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvciA9
IHNoYWRvd0NvbG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxDb2xvci5hbHBoYUFz
RmxvYXQoKSk7CisgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvciA9IGRyb3BTaGFkb3cuY29s
b3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsK
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yKTsKLSAgICAgICAg
ZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKKyAg
ICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBkcm9wU2hhZG93Lm9mZnNldC53
aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0
aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3du
IGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNo
YWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkg
PyAtMSA6IDEpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIGRyb3BT
aGFkb3cub2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSA/IC0xIDogMSk7CiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChz
aGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5j
ZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0aWNCb2xkT2Zm
c2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRv
d1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRl
eHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CkBAIC0yODAsNyAr
Mjc3LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgc2hvd0dseXBoc1dpdGhB
ZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50
LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0
TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQuc2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgICAgICBj
b250ZXh0LnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoc2hvdWxkU21vb3RoRm9udHMgIT0gb3JpZ2luYWxTaG91bGRVc2VGb250
U21vb3RoaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMmUyZjRmNGYyY2I1NWQz
NjVlNWFlMzk5MzI1ZDA1ZjJjMTczNjFmZC4uMmIwM2NlNGE2NmUyZDhhYTBmYWQ4MWE2NDRhZWIx
ZWRmZGUxYzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05MCwxMCArOTAsNyBA
QCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3Ms
IEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNs
dWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBu
b3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJl
IHBsYXRmb3JtLXNwZWNpZmljLgotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5n
ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250c0NoYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCisg
ICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyM2QwYmJjYzcxYzI4MWM1MmMzNWE4
YzI1MmRhOTZjMGFiMTJhOThjLi5iNjZjODQ4YTMzYmRkOTIzNjBmZWE4NTMzN2ZhYjVkYjJkMmQw
MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xNDgsMjQgKzE0
OCwxOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVNldFN0
YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgIDogbV9zdGF0ZUNoYW5n
ZShzdGF0ZSwgZmxhZ3MpCi17Ci19Ci0KLVNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0
YXRlQ2hhbmdlKQorU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSkKKyAgICA6IG1fc3RhdGUoc3RhdGUpCiB7CiB9CiAKIHZvaWQgU2V0U3RhdGU6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5
KGNvbnRleHQpOworICAgIGNvbnRleHQudXBkYXRlU3RhdGUobV9zdGF0ZSk7CiB9CiAKLXN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYg
c3RhdGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3RhdGUmIGl0ZW0pCiB7Ci0gICAgdHMgPDwgc3RhdGUuc3RhdGVDaGFuZ2UoKTsKKyAg
ICB0cyA8PCBpdGVtLnN0YXRlKCk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA5N2NiNWZjOGQwNGJhODY2MmI3MmM3ZGRlZWJjNDQxNTVj
MjgyNWI3Li45Njk0ZDY4ZDE1ZTk4ZDU2N2QzOGQzYWM5YjJjMDk5ZjMwZDBhNWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI0NywxMCArMjQ3LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7
IH0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSB7IHJldHVy
biBtX3N0YXRlQ2hhbmdlOyB9CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAt
MjU4LDI4OCArMjU3LDI0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0KLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
IG1fc3RhdGU7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXRTdGF0ZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBjaGFuZ2VGbGFncyA9
IG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFnczsKLSAgICBlbmNvZGVyIDw8IGNoYW5nZUZsYWdz
OwotCi0gICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50
Q2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlR3JhZGllbnQpOwotICAgICAg
ICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VQYXR0ZXJuKTsKLSAgICAgICAgZW5j
b2RlciA8PCAqc3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsK
LSAgICAgICAgQVNTRVJUKHN0YXRlLmZpbGxHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIgPDwg
KnN0YXRlLmZpbGxHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBB
U1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxs
UGF0dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5z
aGFkb3dPZmZzZXQ7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93Qmx1cjsKLSAgICAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS5zaGFkb3dSYWRpdXNNb2RlOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VUaGlja25lc3M7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkp
Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbENvbG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkKLSAgICAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKLSAg
ICAgICAgZW5jb2RlciA8PCBzdGF0ZS5ibGVuZE1vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlD
aGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHk7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5hbHBoYTsKLQotICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFs
aWFzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRBbnRpYWxpYXM7Ci0K
LSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRTbW9v
dGhGb250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtczsKKyAgICBlbmNvZGVyIDw8IG1fc3RhdGU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CiBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncz4gY2hhbmdlRmxhZ3M7Ci0gICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKLSAg
ICBpZiAoIWNoYW5nZUZsYWdzKQorICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3Rh
dGU+IHN0YXRlOworICAgIGRlY29kZXIgPj4gc3RhdGU7CisgICAgaWYgKCFzdGF0ZSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
IHN0YXRlQ2hhbmdlOwotICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxh
Z3M7Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ry
b2tlR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIXN0
cm9rZUdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZSgqc3Ryb2tlR3Jh
ZGllbnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAg
ICBhdXRvIHN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAg
IGlmICghc3Ryb2tlUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZSgqc3Ry
b2tlUGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKLSAg
ICAgICAgYXV0byBmaWxsR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAg
ICAgICBpZiAoIWZpbGxHcmFkaWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpm
aWxsR3JhZGllbnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKLSAg
ICAgICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAg
ICAgaWYgKCFmaWxsUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQ
YXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwotICAgICAgICBkZWNvZGVyID4+IHNo
YWRvd09mZnNldDsKLSAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zm
c2V0ID0gKnNoYWRvd09mZnNldDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzaGFk
b3dCbHVyOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd0JsdXI7Ci0gICAgICAgIGlmICghc2hh
ZG93Qmx1cikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNoYWRvd0JsdXI7Ci0KLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxDb2xvcj4gc2hhZG93Q29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93
Q29sb3I7Ci0gICAgICAgIGlmICghc2hhZG93Q29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93Q29sb3IgPSAq
c2hhZG93Q29sb3I7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiBz
aGFkb3dSYWRpdXNNb2RlOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd1JhZGl1c01vZGU7Ci0g
ICAgICAgIGlmICghc2hhZG93UmFkaXVzTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0g
V1RGTW92ZSgqc2hhZG93UmFkaXVzTW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tu
ZXNzOwotICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKLSAgICAgICAgaWYgKCFz
dHJva2VUaGlja25lc3MpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
ICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gKnN0cm9rZVRoaWNrbmVz
czsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkgewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAg
ICAgIGRlY29kZXIgPj4gdGV4dERyYXdpbmdNb2RlOwotICAgICAgICBpZiAoIXRleHREcmF3aW5n
TW9kZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBXVEZNb3ZlKCp0ZXh0RHJhd2luZ01vZGUp
OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxDb2xvcj4gc3Ryb2tlQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gc3Ryb2tlQ29s
b3I7Ci0gICAgICAgIGlmICghc3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlQ29sb3IgPSAqc3Ry
b2tlQ29sb3I7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpIHsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxDb2xvcj4gZmlsbENvbG9yOwotICAgICAgICBkZWNvZGVyID4+IGZpbGxD
b2xvcjsKLSAgICAgICAgaWYgKCFmaWxsQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxD
b2xvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKSB7Ci0gICAgICAgIFN0
cm9rZVN0eWxlIHN0cm9rZVN0eWxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cm9r
ZVN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwotICAgIH0KLQotICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsUnVsZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXaW5kUnVsZT4g
ZmlsbFJ1bGU7Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbFJ1bGU7Ci0gICAgICAgIGlmICghZmls
bFJ1bGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRl
Q2hhbmdlLm1fc3RhdGUuZmlsbFJ1bGUgPSAqZmlsbFJ1bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxDb21wb3Np
dGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGRlY29kZXIgPj4gY29tcG9z
aXRlT3BlcmF0b3I7Ci0gICAgICAgIGlmICghY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuY29t
cG9zaXRlT3BlcmF0b3IgPSAqY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5k
TW9kZTsKLSAgICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7Ci0gICAgICAgIGlmICghYmxlbmRN
b2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLmJsZW5kTW9kZSA9ICpibGVuZE1vZGU7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
SW50ZXJwb2xhdGlvblF1YWxpdHk+IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0gICAgICAg
IGRlY29kZXIgPj4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAgICAgaWYgKCFpbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
PSAqaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFu
Z2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhOwotICAgICAgICBkZWNv
ZGVyID4+IGFscGhhOwotICAgICAgICBpZiAoIWFscGhhKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFscGhhID0gKmFscGhh
OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBkZWNvZGVyID4+IHNo
b3VsZEFudGlhbGlhczsKLSAgICAgICAgaWYgKCFzaG91bGRBbnRpYWxpYXMpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hv
dWxkQW50aWFsaWFzID0gKnNob3VsZEFudGlhbGlhczsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
U21vb3RoRm9udHNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxk
U21vb3RoRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU21vb3RoRm9udHM7Ci0gICAg
ICAgIGlmICghc2hvdWxkU21vb3RoRm9udHMpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSAq
c2hvdWxkU21vb3RoRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzOwotICAgICAgICBpZiAoIXNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSAqc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkp
IHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsK
LSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICAgICAgaWYg
KCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB7IHN0
YXRlQ2hhbmdlIH0gfTsKKyAgICByZXR1cm4gU2V0U3RhdGUoKnN0YXRlKTsKIH0KIAogY2xhc3Mg
U2V0TGluZUNhcCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5k
ZXggZWVlNDQ3MWQzNTRlNzUxNTMxMjUxODlkZmNjOTQxOGEzOTQ1MTRhMS4uZmU5MjgxNjdkMTRl
ZGU1ZmVmNzg2OTNhZTdlMTQwY2U2NGFjYWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcApAQCAtNTMsNDUgKzUzLDM0IEBAIFJlY29yZGVyOjp+UmVjb3JkZXIo
KQogICAgIEFTU0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVz
LCBpdCBpbmRpY2F0ZXMgbWlzbWF0Y2hlZCBzYXZlL3Jlc3RvcmUuCiB9CiAKLXN0YXRpYyBib29s
IGNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
Y2hhbmdlRmxhZ3MpCit2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgaW5saW5lU3RhdGVDaGFuZ2VGbGFn
cyB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2Us
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwKLSAgICB9OwotCi0gICAg
aWYgKGNoYW5nZUZsYWdzICE9IChjaGFuZ2VGbGFncyAmIGlubGluZVN0YXRlQ2hhbmdlRmxhZ3Mp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0
YXRlLnN0cm9rZUNvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKHN0YXRlLmNoYW5nZXMoKSk7CisgICAgCisgICAgaWYgKHN0YXRlLmhh
c09ubHlQcmltaXRpdmVDaGFuZ2VzKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gpKQorICAgICAg
ICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpmaWxsQ29sb3IoKS50cnlHZXRBc1NSR0JB
Qnl0ZXMoKSk7CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkgJiYgIWNoYW5nZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5
R2V0QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHN0
YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VCcnVzaCkpCisgICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcigqc3Ryb2tl
Q29sb3IoKS50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAg
ICAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQorICAgICAgICAgICAgcmVjb3JkU2V0U3Ryb2tlVGhp
Y2tuZXNzKHN0cm9rZVRoaWNrbmVzcygpKTsKIAotdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKLXsKLSAgICBp
ZiAoIWNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjaGFuZ2VzLCBjaGFuZ2VGbGFncykp
IHsKLSAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5zdHJva2VQYXR0
ZXJuKQotICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkp
OwotICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLmZpbGxQYXR0ZXJu
KQotICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOwot
ICAgICAgICByZWNvcmRTZXRTdGF0ZShjaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZUZsYWdzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICByZWNvcmRTZXRJ
bmxpbmVTdHJva2VDb2xvcigqY2hhbmdlcy5tX3N0YXRlLnN0cm9rZUNvbG9yLnRyeUdldEFzU1JH
QkFCeXRlcygpKTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVy
biA9IGZpbGxQYXR0ZXJuKCkpCisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJu
LT50aWxlSW1hZ2UoKSk7CisgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICByZWNv
cmRTZXRTdHJva2VUaGlja25lc3MoY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7Cisg
ICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTdHJva2VCcnVzaCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IHN0cm9rZVBh
dHRlcm4oKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFn
ZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldElubGluZUZpbGxD
b2xvcigqY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7Cisg
ICAgcmVjb3JkU2V0U3RhdGUoc3RhdGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0
ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCkBAIC05OSwyNSArODgsMjUgQEAgdm9pZCBSZWNvcmRl
cjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGN1cnJlbnRseSBpbnZva2VkIGluIGFuIGFkLWhvYyBtYW5uZXIgd2hlbiByZWNvcmRpbmcg
ZHJhd2luZyBpdGVtcy4gV2Ugc2hvdWxkIGNvbnNpZGVyIGVpdGhlcgogICAgIC8vIHNwbGl0dGlu
ZyBHcmFwaGljc0NvbnRleHQgc3RhdGUgY2hhbmdlcyBpbnRvIGluZGl2aWR1YWwgZGlzcGxheSBs
aXN0IGl0ZW1zLCBvciByZWZhY3RvcmluZyB0aGUgY29kZSBzdWNoIHRoYXQKICAgICAvLyB0aGlz
IG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGludm9rZWQgd2hlbiByZWNvcmRpbmcgYSBkcmF3aW5n
IGl0ZW0uCi0gICAgYXV0byYgc3RhdGVDaGFuZ2VzID0gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFu
Z2U7Ci0gICAgYXV0byBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5jaGFuZ2Vz
RnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwotICAgIGlmICghY2hh
bmdlc0Zyb21MYXN0U3RhdGUpCisgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKS5zdGF0
ZTsKKyAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5n
IHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3Rh
dGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7Ci0gICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0
YXRlQ2hhbmdlcywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOwotICAgIHN0YXRlQ2hhbmdlcy5tX2No
YW5nZUZsYWdzID0geyB9OwotICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBz
dGF0ZUNoYW5nZXMubV9zdGF0ZTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBz
dHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBzdGF0ZSk7CisgICAgYXBw
ZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsK
KyAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGU7CiB9CiAKIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBSZWNvcmRlcjo6c3RhdGUoKSBjb25zdAogewotICAgIHJl
dHVybiBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlOworICAgIHJldHVybiBjdXJy
ZW50U3RhdGUoKS5zdGF0ZTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5n
ZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CisgICAgY3VycmVudFN0YXRlKCkuc3RhdGUubWVy
Z2VDaGFuZ2VzKHN0YXRlLCBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBz
dGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c2V0TGluZUNhcChM
aW5lQ2FwIGxpbmVDYXApCkBAIC0yMjIsMTIgKzIxMSwxNSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3
UGF0dGVybihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAKIHZvaWQgUmVjb3JkZXI6OnNhdmUoKQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6c2F2
ZSgpOwogICAgIHJlY29yZFNhdmUoKTsKLSAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVT
dGFjay5sYXN0KCkuY2xvbmVGb3JTYXZlKCkpOworICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9z
dGF0ZVN0YWNrLmxhc3QoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogeworICAg
IEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpOworCiAgICAgaWYgKCFtX3N0YXRlU3RhY2suc2l6
ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI3NSwxNiArMjY3LDI0IEBAIEFmZmluZVRyYW5z
Zm9ybSBSZWNvcmRlcjo6Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxl
KSBjb25zdAogCiB2b2lkIFJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9w
YWNpdHkpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKG9w
YWNpdHkpOworCiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAgICBy
ZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwogICAgIG1fc3RhdGVTdGFjay5h
cHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclRyYW5zcGFyZW5jeUxheWVyKCkpOwor
ICAgIAorICAgIG1fc3RhdGUuYWxwaGEgPSAxOwogfQogCiB2b2lkIFJlY29yZGVyOjplbmRUcmFu
c3BhcmVuY3lMYXllcigpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lM
YXllcigpOworCiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAgICBy
ZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0
KCk7CisKKyAgICBtX3N0YXRlLmFscGhhID0gY3VycmVudFN0YXRlKCkuc3RhdGUuYWxwaGE7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5k
ZXggODQ1ZWMwMDc3MmVkMmM1NGExZTZjYjI2YjIxNTFkYWJhYTZlYzA3NS4uYTJhMjI2OGU1ZWQ1
ZWI1YzBhOWNmZTNjZmVlYmE3NzAxYzJhZWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCkBAIC02OSw3ICs2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFz
aE9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9p
bikgPSAwOwpAQCAtMTM1LDMwICsxMzUsMjUgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9v
bCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAgICAgc3RydWN0IENvbnRleHRTdGF0
ZSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBsYXN0RHJhd2luZ1N0YXRlOwogICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gY3RtOwogICAgICAgICBGbG9hdFJlY3QgY2xpcEJvdW5kczsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlIGxhc3REcmF3aW5nU3RhdGU7CiAKLSAgICAgICAgQ29udGV4dFN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKLSAgICAgICAgICAgIDogY3RtKHRy
YW5zZm9ybSkKLSAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwKQotICAgICAgICAgICAgLCBs
YXN0RHJhd2luZ1N0YXRlKHN0YXRlKQorICAgICAgICBDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSwgY29uc3Qg
RmxvYXRSZWN0JiBjbGlwQm91bmRzKQorICAgICAgICAgICAgOiBzdGF0ZShzdGF0ZSkKKyAgICAg
ICAgICAgICwgY3RtKGN0bSkKKyAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwQm91bmRzKQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JTYXZl
KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQ29udGV4dFN0YXRlIHN0YXRlKGxhc3RE
cmF3aW5nU3RhdGUsIGN0bSwgY2xpcEJvdW5kcyk7Ci0gICAgICAgICAgICBzdGF0ZS5zdGF0ZUNo
YW5nZSA9IHN0YXRlQ2hhbmdlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAgICB9
Ci0KICAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25z
dAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xvbmVGb3JTYXZlKCk7Ci0g
ICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0gMTsKLSAgICAgICAgICAg
IHJldHVybiBzdGF0ZTsKKyAgICAgICAgICAgIGF1dG8gY29weSA9ICp0aGlzOworICAgICAgICAg
ICAgY29weS5zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgICAgICBp
ZiAoY29weS5sYXN0RHJhd2luZ1N0YXRlKQorICAgICAgICAgICAgICAgIGNvcHkubGFzdERyYXdp
bmdTdGF0ZS0+ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgcmV0dXJu
IGNvcHk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9h
dCB5KTsKQEAgLTE4OSw3ICsxODQsNyBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgZmluYWw7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUm
KSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBm
aW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJh
eSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwpAQCAtMjcwLDcgKzI2NSw3IEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3Qg
RmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpIGZpbmFsOwogCiAgICAg
dm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgYXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGN0bSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCAxZmRjNmJhNTZiZmRiMjYzNmVmYjM0NjJhZGEyYTk5
MGQzMzg5OTQ1Li43OWRkMTAyMDQ2MjI2ZmMwYTExZWRlM2JlM2I5NTJlY2I4N2QzNzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTEwNCw5
ICsxMDQsOSBAQCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZs
b2F0IHRoaWNrbmVzcykKICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPih0aGlja25lc3Mp
OwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgYXBwZW5kPFNldFN0YXRlPihzdGF0
ZSwgY2hhbmdlRmxhZ3MpOworICAgIGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUpOwogfQogCiB2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCkBAIC00MTcs
MTYgKzQxNywxMyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1BhaW50aW5nRXh0ZW50KGZs
b2F0IGJsdXJSYWRpdXMpCiAKIEZsb2F0UmVjdCBSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2Nh
bEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IGJv
dW5kcyA9IHJlY3Q7CisgICAgYXV0byBib3VuZHMgPSByZWN0OwogICAgIGF1dG8mIHN0YXRlID0g
Y3VycmVudFN0YXRlKCk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0
IHNoYWRvd1JhZGl1czsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKLSAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd0V4dGVudCA9IGJvdW5kczsKLSAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUo
c2hhZG93T2Zmc2V0KTsKLSAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRp
bmdFeHRlbnQoc2hhZG93UmFkaXVzKSk7CisgICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAgICAg
IGF1dG8gc2hhZG93RXh0ZW50ID0gYm91bmRzOworICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShk
cm9wU2hhZG93KCkub2Zmc2V0KTsKKyAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93
UGFpbnRpbmdFeHRlbnQoZHJvcFNoYWRvdygpLmJsdXJSYWRpdXMpKTsKICAgICAgICAgYm91bmRz
LnVuaXRlKHNoYWRvd0V4dGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDY0MjI2NWYwOTgwMjJjZjJiMDVmMTgwYzE3NGZhMDM0
NjJmMmRkNDAuLmFjMmQzMTc5Njc1OGM2MmNjNjE1MGExNTQ5ZDdhMDk0MDZlZWZhYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC01NSw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWlu
dDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8
dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0
KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsK
ICAgICB2b2lkIHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNv
cmRTZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsK
ICAgICB2b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmYxOWQwMDM1NGNkYmVkZTNhNWJh
MWFmNzU4Y2ZmMDIzYTI1YTIyLi5mM2M4YzkwY2Q4OGJiZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBi
MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC05Nywx
MCArOTcsMTAgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0
dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBh
dHRlcm4uZ2V0KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5U
aWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2gucGF0dGVybigpKSkKICAg
ICAgICAgcmV0dXJuICppbWFnZUlkZW50aWZpZXI7CiAKLSAgICBpZiAoYXV0byBpbWFnZUlkZW50
aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1f
c3RhdGUuZmlsbFBhdHRlcm4uZ2V0KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9
IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRl
cm4oKSkpCiAgICAgICAgIHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCiAgICAgc2V0U3RhdGVJ
dGVtLmFwcGx5KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA5MTE0NmRmYzZmZDg0ZGY4ZTI5NTRmMDM3
N2QwMDY2YTc3MjMzY2M5Li4xNDE2OWEwNzU1OGQ2MTZiMDkyMGNiMDU3ZGM4ZWIxYzJhNTg4YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcApAQCAtODIsOSArODIsOSBAQCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWly
b09wZXJhdGlvblJlY29yZGVyKFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHsgfSwgeyB9LCBGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgp
IH0pOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVw
ZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoZmxhZ3Mg
JiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSB7CisgICAgaWYg
KHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
dHJva2VUaGlja25lc3MpKSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VUaGlja25lc3NDaGFuZ2Ug
ZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxmbG9hdD4gewogICAgICAg
ICAgICAgdmlydHVhbCB+U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKCkgPSBkZWZhdWx0OwogCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3Mp
KTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
U3R5bGVDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlKSkgewogICAgICAgICBzdHJ1Y3QgU3Ry
b2tlU3R5bGVDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxT
dHJva2VTdHlsZT4gewogICAgICAgICAgICAgdmlydHVhbCB+U3Ryb2tlU3R5bGVDaGFuZ2UoKSA9
IGRlZmF1bHQ7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwog
ICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTdHJva2VTdHlsZUNoYW5nZT4oc3RhdGUuc3Ry
b2tlU3R5bGUpKTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkgewog
ICAgICAgICBzdHJ1Y3QgQ29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdP
cGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZT4gewog
ICAgICAgICAgICAgdmlydHVhbCB+Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKCkgPSBkZWZhdWx0
OwogCkBAIC0xMzUsMTAgKzEzNSwxMCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRp
ZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5k
TW9kZSkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBzdGF0ZS5jb21wb3NpdGVNb2Rl
LmJsZW5kTW9kZSkpOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpIHsK
ICAgICAgICAgc3RydWN0IFNob3VsZEFudGlhbGlhc0NoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3Bl
cmF0aW9uLCBPcGVyYXRpb25EYXRhPGJvb2w+IHsKICAgICAgICAgICAgIHZpcnR1YWwgflNob3Vs
ZEFudGlhbGlhc0NoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTU1LDYgKzE1NSw4IEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHCiAKICAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U2hvdWxk
QW50aWFsaWFzQ2hhbmdlPihzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKICAgICB9CisKKyAgICBz
dGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTI5Miw3ICsyOTQsNyBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3Jh
ZGllbnQmIGdyYWRpZW50KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRl
KCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNy
ZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkpKTsKKyAg
ICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0
dGVybigxLjAsIHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpKSk7CiB9
CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzE2LDcgKzMxOCw3IEBAIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgY29sb3IsIGNvbXBv
c2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHN0YXRl
LmNvbXBvc2l0ZU9wZXJhdG9yKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+
KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93
U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQpAQCAtMzQ2LDcgKzM0OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Zmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0CiAgICAgfTsK
IAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QsIGNvbG9yLCBz
dGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTUzMyw3ICs1MzUs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUo
c3RhdGUpLCBwb2ludCwKICAgICAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+KGZvbnQu
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKSwKICAgICAgICAgZm9udC5zeW50aGV0aWNCb2xk
T2Zmc2V0KCksIFdURk1vdmUoY2Fpcm9HbHlwaHMpLCB4T2Zmc2V0LCBzdGF0ZS50ZXh0RHJhd2lu
Z01vZGUsCi0gICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0
LCBzdGF0ZS5zaGFkb3dDb2xvciwgZm9udFNtb290aGluZykpOworICAgICAgICBzdGF0ZS5zdHJv
a2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNv
bG9yLCBmb250U21vb3RoaW5nKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQpAQCAtNTk5LDcgKzYwMSw3IEBA
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhp
cy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UmVjdD4ocmVjdCwgYm9y
ZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdSZWN0PihyZWN0LCBi
b3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VTdHls
ZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQyKQpAQCAtNjIyLDcgKzYyNCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAg
ICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0
cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0
ZS5zaG91bGRBbnRpYWxpYXMpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZT4o
cG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xv
cigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNob3VsZEFudGlhbGlhcykpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMs
IGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ryb2tlU3R5bGUpCkBAIC02
NDUsNyArNjQ3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JU
ZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcs
IGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUNvbG9yKSk7CisgICAgYXBwZW5kKGNyZWF0
ZUNvbW1hbmQ8RHJhd0xpbmVzRm9yVGV4dD4ocG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmlu
dGluZywgZG91YmxlVW5kZXJsaW5lcywgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKQEAg
LTY4NCw3ICs2ODYsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlz
LT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdFbGxpcHNlPihyZWN0LCBz
dGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0VsbGlw
c2U+KHJlY3QsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CiB9CiAKIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRo
LCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXgg
ODNjNmQyN2Q2ZWEzNmM3OWJlYmQ3ODI1Zjk5YjdjNDM5MDhlZTU0Yi4uYjk1Mjg2MzEzNDMzMDAy
ZmFlNzJiZGU0NzgwZDMyNTY4ZGM1ODFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdm9pZCBkaWRVcGRhdGVT
dGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFVwZGF0ZVN0YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRMaW5lRGFzaChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9hdCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENH
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4u
Y3BwCmluZGV4IGMxOWU3NDE1NTdjMzA4Yzk0MWU0ZWY3MTVlM2RiNDY1OTRkMTg1YjYuLjJjZDc4
NjVlY2E4MjllYjQ1NzgwZTlmYjBlNzI0N2EzNzEyYmNjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCkBAIC0xNzYsMjUgKzE3
NiwyMiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250LAogICAgIENHQ29udGV4dFNldEZvbnRTaXpl
KGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7CiAgICAgRm9udENhc2NhZGU6OnNldENH
Q29udGV4dEZvbnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQucGxhdGZvcm1EYXRhKCku
aXNTeXN0ZW1Gb250KCksIGZhbHNlLCBmb250LnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKIAot
ICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICBD
b2xvciBzaGFkb3dDb2xvcjsKLSAgICBncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGF1dG8gZHJvcFNoYWRvdyA9IGdy
YXBoaWNzQ29udGV4dC5kcm9wU2hhZG93KCk7CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZp
bGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3ND
b250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENU
TSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGJvb2wgaGFzU2lt
cGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHREcmF3
aW5nTW9kZTo6RmlsbCAmJiBkcm9wU2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAhZHJvcFNoYWRv
dy5ibHVyUmFkaXVzICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JG
bGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFpbnQg
c2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dz
LCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBncmFwaGlj
c0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhp
Y3NDb250ZXh0LmZpbGxDb2xvcigpOwotICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3IgPSBz
aGFkb3dDb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShmaWxsQ29sb3IuYWxwaGFBc0Zs
b2F0KCkpOworICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3IgPSBkcm9wU2hhZG93LmNvbG9y
LmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxDb2xvci5hbHBoYUFzRmxvYXQoKSk7CiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yKTsKLSAg
ICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgo
KTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBkcm9wU2hhZG93Lm9m
ZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zv
cm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBz
byBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50Lnko
KSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9p
bnQueSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwogICAgICAgICBDR0NvbnRleHRTZXRU
ZXh0UG9zaXRpb24oY2dDb250ZXh0LCBzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpOwogICAgICAg
ICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZh
bmNlcywgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgp
KSB7Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2lu
dC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgp
LCBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOworICAgICAgICAgICAgQ0dDb250
ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgZHJvcFNoYWRvdy5vZmZz
ZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyBkcm9w
U2hhZG93Lm9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhz
V2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKICAg
ICAgICAgfQogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7
CkBAIC0yMDgsNyArMjA1LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwKICAgICB9CiAKICAg
ICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKIAogICAgIEZvbnRDYXNjYWRlOjpz
ZXRGb250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwog
ICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY2dDb250ZXh0LCBzYXZlZE1hdHJpeCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCA3ZWQ1
MzdjOTI3OTM3NzBmNDQ4OGFlMjlkZjQwNzI3ZDdlYjFhM2E5Li42MTc4YWViMWM4NzYzNzcyMTk1
ZjllNDQ3NjEwZTQ5MGU3NjRmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRmxvYXRSZWN0IFJlbmRlclNW
R1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiBzdGF0aWMg
dm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBjb250ZXh0LnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAg
IGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5zdGF0ZSgpLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVu
dCgqZ3JhZGllbnQsIGNvbnRleHQuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAg
ICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkpCiAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1NDM4MTgyZGRlODc2M2ViYWQzOGYxOTJkZjc5
NWFhMDYwYjY1MWJiLi45ZTM3ODZlMGZkY2RiODlmYjA2NjI4YzhmY2M2ZGM4N2I3N2MzZTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjgsMTAgKzEyOCwxMCBAQCB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0
ZSYmIGl0ZW0pCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAKLSAgICBpZiAoIWZpeFBh
dHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuc3Ryb2tlUGF0dGVybi5n
ZXQoKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5maWxsQnJ1
c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFmaXhQYXR0ZXJuVGls
ZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKSkKKyAg
ICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRl
cm4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggODU3
N2NiYmRlNmQzOTAxZDM0NzA3NjFlZDMwZjc5ZDk4ZTgyYjk4ZC4uOWJhZjlhMzVjOTcwZjliNzUx
MDMwNTZjYjViZDc4MTZhZWNhZDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNz
KQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0cm9r
ZVRoaWNrbmVzcyh0aGlja25lc3MpKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0YXRlLCBm
bGFncyB9KSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
U2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlIHsgc3RhdGUgfSkpOwogfQogCiB2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxp
bmVDYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCA5
YjMzYTA2N2ZkMTZiY2NmMTQwNDJjMTk3NGRkNjkxOTQyMjYyNDY4Li5iZWQzNjNlMDYyNDUzNTI3
ZjlhMDYyMDg4Y2U2NzdjMmI5OTIyNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29y
ZFNldElubGluZUZpbGxDb2xvcihXZWJDb3JlOjpTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAg
dm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihXZWJDb3JlOjpTUkdCQTx1aW50OF90Pikg
ZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZpbmFsOwot
ICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUNhcChXZWJDb3JlOjpMaW5l
Q2FwKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IFdlYkNvcmU6OkRh
c2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGlu
ZUpvaW4oV2ViQ29yZTo6TGluZUpvaW4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxNjZhNTM5YzcxMmM0Yzc0ZWU2NmQ0NjE2NWRm
MjRiYzE3ZjllOGMuLjcwNzAwYTBlYjZjMjY0NWQ1MzA5NWYxOGZlNjkyMzRkOGMzYWFlZmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4K
KworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0
cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMi0wMy0xNyAgSm9uYXRoYW4gQmVkYXJkICA8Sm9uV0JlZGFyZEBnbWFp
bC5jb20+CiAKICAgICAgICAgY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVu
dCBmYWlscyB3aXRoIFhjb2RlIDEzLjMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAppbmRl
eCAyNDczNTgwZjE5MGUwZmQ2NzRjMzY3ZGE0N2M5ZjE5MmJhMjQ4NWU0Li4yMTVjMTdjNjY1N2Fl
ZGE2YTZlMmNkMGFlMGM5YzkyNmYzYmQ4MmIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdHMsIERyYXdOYXRp
dmVJbWFnZURvZXNOb3RMZWFrQ29tcG9zaXRlT3BlcmF0b3IpCiAgICAgR3JhcGhpY3NDb250ZXh0
Q0cgY3R4KGNnQ29udGV4dC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfRVEoY3R4LmNvbXBvc2l0ZU9w
ZXJhdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zlcik7Ci0gICAgRVhQRUNUX0VR
KGN0eC5ibGVuZE1vZGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIEVYUEVD
VF9FUShjdHguYmxlbmRNb2RlKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgIGF1dG8gZ3Jl
ZW5QaXhlbENHID0gZ3JlZW5JbWFnZSgpOwogICAgIGF1dG8gZ3JlZW5QaXhlbE5hdGl2ZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoZ3JlZW5QaXhlbENHLmdldCgpKTsKQEAgLTcxLDcgKzcxLDcgQEAg
VEVTVChHcmFwaGljc0NvbnRleHRUZXN0cywgRHJhd05hdGl2ZUltYWdlRG9lc05vdExlYWtDb21w
b3NpdGVPcGVyYXRvcikKICAgICBFWFBFQ1RfRVEocHJpbWFyeURhdGFbMl0sIDApOwogCiAgICAg
RVhQRUNUX0VRKGN0eC5jb21wb3NpdGVPcGVyYXRpb24oKSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNv
dXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlT3BlcmF0aW9uKCksIEJsZW5k
TW9kZTo6Tm9ybWFsKTsKKyAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZSgpLCBCbGVuZE1vZGU6
Ok5vcm1hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MWEz
ZGFmZjdmOTYzYjk1YWQ2NWI4MGIwNTM0ZGNkNmUwMWU2YzFhLi4yZDA2NzYzNGNiY2RkYzg3OTk1
MDkxMTI4MDNiZTRmYmZmNjI4ZTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMTgg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxs
IHRoZXkgYXJlIGFwcGxpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4
cGVjdGVkLnR4dDoKKwogMjAyMi0wMy0xNyAgTWF0dGVvIEZsb3JlcyAgPG1hdHRlb19mbG9yZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI5MTEyOS1yMjkxMTI4KTogW1dLMSBF
V1NdIDMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9hbmlt
YXRpb24tbW9kZWwvYW5pbWF0aW9uLXR5cGVzLyogdGVzdHMgYXJlIGEgY29uc3RhbnQgdGV4dCBm
YWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1
ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50
LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKaW5kZXggNTExYjdjMGM1NGQzMzIxNmI3YzZl
YWYwNDNhNzVjMTY3NjZkMDQyNy4uYjI5ZmUyZjUzOWFkOTY2ZjUwMmE1M2I3Mzc5MWVmZTE0YTBl
OWNiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRl
cy1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRl
bnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtNCwxMSArNCwxMiBAQAogICAoeSAw
LjAwKSkKIChzYXZlKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikKLSAgKHNoYWRv
dy1ibHVyIDEyLjAwKQotICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChz
aGFkb3ctY29sb3IgIzAwMDAwMCkKLSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisg
IChjaGFuZ2UtZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAgKGRyb3Atc2hhZG93CisgICAgKHNoYWRv
dy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAxMi4wMCkKKyAg
ICAoc2hhZG93LWNvbG9yICMwMDAwMDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMg
MCkpKQogKGZpbGwtY29tcG9zaXRlZC1yZWN0CiAgIChyZWN0IGF0ICg1MCw1MCkgc2l6ZSAxMDB4
MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rpc3BsYXls
aXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDM4NmUzOTQxMTg1ZjA5YTNjNjhlYzZjMmFlODhkZjExYzcwYjBhNjkuLjFkY2FiYmU3Y2Uw
NWJjYmU5NGUyMzM2NGViZTI5ZWE3NmZmMGY1OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rp
c3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVj
dGVkLnR4dApAQCAtNiwxMSArNiwxMiBAQAogICAoY3RtIHttPSgoMC44NywwLjUwKSgtMC41MCww
Ljg3KSkgdD0oODEuNzAsLTE4LjMwKX0pKQogKHNhdmUpCiAoc2V0LXN0YXRlCi0gIChjaGFuZ2Ut
ZmxhZ3MgNTEyKQotICAoc2hhZG93LWJsdXIgMTIuMDApCi0gIChzaGFkb3ctb2Zmc2V0IHdpZHRo
PTEwIGhlaWdodD0yMCkKLSAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQotICAoc2hhZG93cy11c2Ut
bGVnYWN5LXJhZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFncyBbZHJvcC1zaGFkb3ddKQorICAoZHJv
cC1zaGFkb3cKKyAgICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCisgICAgKHNo
YWRvdy1ibHVyIDEyLjAwKQorICAgIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKKyAgICAoc2hhZG93
cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1jb21wb3NpdGVkLXJlY3QKICAgKHJlY3Qg
YXQgKDAsMCkgc2l6ZSAxMDB4MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGJjMTdiNTExNDk5ZjgyNTZjOTkyOTBkYWU4NjE0ZDQ4OTRjYWY5Y2MuLjRkYTA2YjNjMzg3
NjJlZDcyNTY4NTRjNGUzZjRlMDc4M2E2NWZiNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rp
c3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dApAQCAtOCw5ICs4
LDEwIEBACiAgIChjb21wb3NpdGUtb3BlcmF0aW9uIHNvdXJjZS1vdmVyKQogICAoYmxlbmQtbW9k
ZSBub3JtYWwpIGV4dGVudCBhdCAoMCwwKSBzaXplIDEwNHgxMDQpCiAoc2V0LXN0YXRlCi0gIChj
aGFuZ2UtZmxhZ3MgMzI5NjApCi0gIChmaWxsLWNvbG9yICMwMDAwRkYpCi0gIChzdHJva2Utc3R5
bGUgMCkKKyAgKGNoYW5nZS1mbGFncyBbZmlsbC1icnVzaCwgc3Ryb2tlLXN0eWxlLCBzaG91bGQt
YW50aWFsaWFzXSkKKyAgKGZpbGwtYnJ1c2gKKyAgICAoY29sb3IgIzAwMDBGRikpCisgIChzdHJv
a2Utc3R5bGUgTk8tU1RST0tFKQogICAoc2hvdWxkLWFudGlhbGlhcyAwKSkKIChkcmF3LXJlY3QK
ICAgKHJlY3QgYXQgKDAsMCkgc2l6ZSAxMDR4MikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9zaGFkb3dz
LzJkLnNoYWRvdy5vdXRzaWRlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvc2hhZG93cy8yZC5zaGFkb3cub3V0c2lk
ZS5odG1sCmluZGV4IGM3MTM5NGRjYTY0ZjQwY2I3MzhhMTZlNzFhMjA4NWU2NmVkM2JhMGUuLjRm
MzZmYjdlOGYxNTg3Njc3YTU3NTg4NjZmZDJhYzQwNWEzMjBjYTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC9zaGFkb3dzLzJkLnNoYWRvdy5vdXRzaWRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3NoYWRvd3MvMmQu
c2hhZG93Lm91dHNpZGUuaHRtbApAQCAtMSwyMyArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KLTwh
LS0gRE8gTk9UIEVESVQhIFRoaXMgdGVzdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgL2h0bWwvY2Fu
dmFzL3Rvb2xzL2dlbnRlc3QucHkuIC0tPgotPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC5zaGFkb3cu
b3V0c2lkZTwvdGl0bGU+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVz
dHMuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52
YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5jc3MiPgotPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0
Ij4KLQotPGgxPjJkLnNoYWRvdy5vdXRzaWRlPC9oMT4KLTxwIGNsYXNzPSJkZXNjIj5TaGFkb3dz
IG9mIHNoYXBlcyBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgY2FuIGJlIG9mZnNldCBvbnRvIHRo
ZSB2aXNpYmxlIGFyZWE8L3A+Ci0KLQotPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8
L3A+Cis8Ym9keT4KIDxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhl
aWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+
PC9jYW52YXM+Ci08cCBjbGFzcz0ib3V0cHV0IGV4cGVjdGVkdGV4dCI+RXhwZWN0ZWQgb3V0cHV0
OjxwPjxpbWcgc3JjPSIvaW1hZ2VzL2dyZWVuLTEwMHg1MC5wbmciIGNsYXNzPSJvdXRwdXQgZXhw
ZWN0ZWQiIGlkPSJleHBlY3RlZCIgYWx0PSIiPgotPHVsIGlkPSJkIj48L3VsPgogPHNjcmlwdD4K
LXZhciB0ID0gYXN5bmNfdGVzdCgiU2hhZG93cyBvZiBzaGFwZXMgb3V0c2lkZSB0aGUgdmlzaWJs
ZSBhcmVhIGNhbiBiZSBvZmZzZXQgb250byB0aGUgdmlzaWJsZSBhcmVhIik7Ci1fYWRkVGVzdChm
dW5jdGlvbihjYW52YXMsIGN0eCkgeworCitjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYycpOworY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CiAKIGN0
eC5maWxsU3R5bGUgPSAnI2YwMCc7CiBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CkBAIC0z
MSwxMiArMTcsNyBAQCBjdHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5maWxsUmVjdCgyNSwg
LTEwMCwgNTAsIDI1KTsKIGN0eC5zaGFkb3dPZmZzZXRZID0gLTEwMDsKIGN0eC5maWxsUmVjdCgy
NSwgMTI1LCA1MCwgMjUpOwotX2Fzc2VydFBpeGVsKGNhbnZhcywgMTIsMjUsIDAsMjU1LDAsMjU1
LCAiMTIsMjUiLCAiMCwyNTUsMCwyNTUiKTsKLV9hc3NlcnRQaXhlbChjYW52YXMsIDg3LDI1LCAw
LDI1NSwwLDI1NSwgIjg3LDI1IiwgIjAsMjU1LDAsMjU1Iik7Ci1fYXNzZXJ0UGl4ZWwoY2FudmFz
LCA1MCwxMiwgMCwyNTUsMCwyNTUsICI1MCwxMiIsICIwLDI1NSwwLDI1NSIpOwotX2Fzc2VydFBp
eGVsKGNhbnZhcywgNTAsMzcsIDAsMjU1LDAsMjU1LCAiNTAsMzciLCAiMCwyNTUsMCwyNTUiKTsK
LQogCi19KTsKIDwvc2NyaXB0PgogCis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455154</attachid>
            <date>2022-03-18 17:26:21 -0700</date>
            <delta_ts>2022-03-20 02:27:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220318172620.patch</filename>
            <type>text/plain</type>
            <size>228798</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uM2RiMDAyNjQzZmVmNDI1ZWJjOGE5ZjIxM2I4ZmQ4
YWUzZGRmZTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MCBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmRyYXdFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENhaXJvOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
YWlybzo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OkdyYXBoaWNzQ29udGV4dENHKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0Q0dTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENH
OjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6c3Ry
b2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhz
UmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dJc0NsZWFyZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29u
dGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6
OmNsb25lRm9yU2F2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2NhbEJv
dW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KToKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KToKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKToKKyAgICAgICAg
KE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAg
ICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdvb2Ryb3cgIDxtYXR0
d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBzaG91bGQgYWx3YXlz
IGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2VhYWQwNmJlN2Y4Y2Vl
MDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUwMjc5NDZhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250
ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRT
dGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlBY3Rpdml0eUluTWFu
YWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4uZWJjYjUzMTdjZDdm
MzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTcx
LDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExvY2FsaXplQXhpc05h
bWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMzOWZmOGYyMjRlZjZh
ODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRlMDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1U
aW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQwZjg5Y2YxZjM0MmQ4
ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIyZWZkYzJjZWRkNTNm
YzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2NDQyNzg0NjFBMDAw
Mzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJG
NjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2NjdERjI2MEMyNjQ0
MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4Rjc1MDBEODJEMkQg
LyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyRkQzMEFDMjdFMzIx
N0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1
M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2
ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNF
QzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC0xMTQyOCw2
ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RB
bmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRkIyMzk2
MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2guY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnJ1c2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1
M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxNTIs
NiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVy
LmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oICov
LAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1l
cy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5jcHAg
Ki8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggKi8sCiAJ
CQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICov
LAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmgg
Ki8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBENEEzODEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhh
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNl
QnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0
MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYxMzUwOTI0QzlG
Q0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNjYjc4ODExN2RlNjkz
OGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVu
LCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICogbWFza1JlY3QuaGVp
Z2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgICAgICAg
ICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0g
ICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRv
d0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRyb3BTaGFkb3coKTsK
IAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwotICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0gICAgICAgICAgICBz
aGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAgICAgc2hhZG93UmVj
dC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAgICAgICAgICBzaGFk
b3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAgICAgICBjLT5jbGlw
KHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0gb2Zmc2V0OworICAg
ICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAgICAgICAgICBjLT5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBTaGFkb3dS
YWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93KGRyb3BTaGFkb3cu
b2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29sb3IsIFNoYWRvd1Jh
ZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQogICAgICAgICAgICAg
ICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZhNGNiMmEyLi4xYmQ2
NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJldHVybiBtX3ByaW1h
cnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lkIEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2
b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0ZVN0YXRlKCkgaW5z
dGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAgIC8vIGFyZSBhbHNv
IGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3RhdGUsIHNvIHRoYXQg
Y29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0aGF0IHJlYWRzIGZy
b20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3ByaW1hcnlDb250ZXh0
LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0
ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShz
dGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBz
dGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0MmI3Mzc3NzI3YzEx
YTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQyZTM2N2RkMzdmMDIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNh
dGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMjVhM2QzZmU4
NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgyMmYxMTNkYmJiMDYx
NDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwxNSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiwgRm9udFNtb290
aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIAotICAgIHZv
aWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0
dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9y
JiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKKyAgICB2b2lkIHVw
ZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQgdXBkYXRlU3Ryb2tl
QnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsK
ICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9Owot
ICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9h
dCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiwgU2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJ
TikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTExMSwyNyArMTExLDEz
IEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxUZXh0TWF0cml4Owog
CiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsKLSAgICAgICAgICAg
IENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAg
ICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgICAg
ICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0gICAgICAgIFN0eWxl
IGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAgICAgICAgU291cmNl
QnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaDsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hhZG93U3RhdGUgewot
ICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZsb2F0IGJsdXIgeyAw
IH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJvb2wgaWdub3JlVHJh
bnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRvd1N0YXRlIHNoYWRv
dzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBib29sIGlnbm9yZVRy
YW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmlnaW5hbFN0YXRlOwot
ICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJjOGEzZTg2My4uMDMx
MDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00Myw2
ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hh
bmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQorCiBHcmFwaGljc0Nv
bnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0YWNrLmlzRW1wdHko
KSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQog
ICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnVw
ZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7Ci0gICAgbV9zdGF0
ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwg
ZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0RHJhd2luZ1N0YXRl
KTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAtOTMsODQgKzk4LDYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNN
b2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Ci0g
ICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0g
Y29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVzTW9kZTsKLSAgICBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdl
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKLXsKLSAgICBtX3N0
YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9
IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFk
b3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAgICBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQot
Ym9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQm
IGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBtX3N0YXRlLnNoYWRv
d09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAgIGNvbG9yID0gbV9z
dGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51
bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYm
IHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBX
VEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0
ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwot
ICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGll
bnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwot
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYg
Z3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3Jh
ZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5maWxs
UGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklYTUU6IGFsc28gZmls
bCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3VudDsKQEAgLTQ5MSwx
MyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRGaWxsQ29sb3Iob2xk
RmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJh
dGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hh
bmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91bmRh
cmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBT
dHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGlu
IDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0IGFyaXRobWV0aWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZkM2ZlZi4uZmIyMzdh
NTBlOWIwNTk0MmM5OTI5NWM2MTY3MzhiY2U0ZWU1MjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY0LDkgKzY0LDgg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdy
YXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmID0g
eyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtODAsODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRleHQgU3RhdGUK
IAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0KLSAgICBmbG9hdCBz
dHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsg
fQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRl
LnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VTdHlsZSBzdHJva2VT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBjb25zdCBD
b2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+
JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBm
aWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgp
OyB9CisgICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZp
bGxCcnVzaC5wYXR0ZXJuKCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZpbGxHcmFk
aWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291
cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNoKTsgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBt
X3N0YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFk
aWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0
YXRlLnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
dHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgPSB7
IH0pOwotICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1
bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9CiAgICAg
V2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9Cisg
ICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxS
dWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKworICAgIGNvbnN0IENv
bG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guY29s
b3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRl
cm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKTsgfQorICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsg
bV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5z
ZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9p
ZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRT
dHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsg
fQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KSB7IG1fc3RhdGUuc2V0
U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENv
bG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAgICB2b2lkIHNldFN0
cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRTdHJva2VUaGlja25l
c3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4q
IGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsg
fQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5z
dHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUp
IHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBzaGFkb3dCbHVyKCkg
Y29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAgICBjb25zdCBDb2xv
ciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuY29sb3I7IH0KKyAg
ICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBtX3N0
YXRlLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXJS
YWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNN
b2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hhZG93KHsgb2Zmc2V0
LCBibHVyUmFkaXVzLCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQorICAgIHZvaWQgY2xl
YXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9vbCBoYXNWaXNpYmxl
U2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJsZSgpOyB9CisgICAg
Ym9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1
cnJlZCgpOyB9CisgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93
KCkuaGFzT3V0c2V0cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21wb3NpdGVNb2RlKCku
b3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGNv
bXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29t
cG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9zaXRlTW9kZShjb21w
b3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJsZW5kTW9kZSBibGVu
ZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2RlKHsgb3BlcmF0aW9u
LCBibGVuZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRp
ZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7Ci0gICAg
R3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRp
ZW50LmdldCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFs
cGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRlLnNldEFscGhh
KGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IGRpZFVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
dGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdp
bmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2Rl
KHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgCisgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIHZvaWQgc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShp
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3Rh
dGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQogICAg
IGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRp
YWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlh
cykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29s
IHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSBzaG91bGRT
bW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9CisgICAgdm9pZCBz
ZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0
U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRp
b24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhz
LgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBh
IGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBt
X3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMo
Ym9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsgfQotICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAgIHZvaWQgc2V0QWxw
aGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9Ci0gICAgZmxvYXQg
YWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0K
LSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBt
X3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5j
ZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNr
ID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBib29sIGRyYXdMdW1p
bmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsgfQot
Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkg
eyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOyB9Ci0gICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hhZG93
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgU2hhZG93UmFkaXVz
TW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0U2hh
ZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAgIGJvb2wgaGFzVmlz
aWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWaXNpYmxl
KCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFk
b3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRo
KCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAgYm9vbCBoYXNCbHVy
cmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUu
c2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVt
aW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VN
YXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBl
YXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBw
ZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVh
cmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5tZXJnZUNoYW5nZXMo
c3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdy
YXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdhdGUgY2hhbmdlcwog
ICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAgdmlydHVhbCB2b2lk
IGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBy
ZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkzNTQwODY2NGMyNzZm
Y2UzZDU5OWU2MTRmOWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1NzdhNTcwN2I5N2Y2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgogCi0jaW5jbHVkZSAi
R3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJQYXR0
ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoZmxhZywgcHJvcGVy
dHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCi0gICAg
ICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZyk7Ci0KLUdyYXBo
aWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAgOiBzaG91bGRBbnRp
YWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0gICAgLCBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdz
KQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4
dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRl
eHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUo
R3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGUm
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdz
KQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSBj
b25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9OwotICAgIGlm
IChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAgc3Ryb2tlQ29sb3Ig
PSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJv
a2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZVBhdHRlcm47
Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFn
cy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xvciA9IHN0YXRlLmZp
bGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdyYWRpZW50OwotICAg
ICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChm
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAg
ICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgICAgIHNoYWRvd0Js
dXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9IHN0YXRlLnNoYWRv
d0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hhZG93UmFkaXVzTW9k
ZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRl
LnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4dERyYXdpbmdNb2Rl
ID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHN0cm9rZVN0eWxl
ID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5m
aWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHByaW1pdGl2ZUNoYW5n
ZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENo
YW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0ZS5hbHBoYTsKKyAg
ICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZlQ2hhbmdlRmxhZ3Mp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNvbXBvc2l0ZU9wZXJh
dG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5kTW9kZSA9IHN0YXRl
LmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6
U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlhbGlhcyA9IHN0YXRl
LnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpG
aWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gc3RhdGUu
c2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0g
ICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0g
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAor
dm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0
ZT4mIGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5nZSA9IFsmXShDaGFu
Z2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAg
ICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8IHRoaXMtPipwcm9w
ZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRo
aXMtPipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hhbmdlRmxhZ3Muc2V0
KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVy
dHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmlsbEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJv
a2VUaGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
VGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisKKyAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6
OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpk
cm9wU2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRB
bnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBw
ZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOwog
I2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQYXR0ZXJuKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFuZ2UsIGZpbGxHcmFk
aWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBhdHRlcm5DaGFuZ2Us
IGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0YXRlLnNoYWRvd09m
ZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93
Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0YXRlLnNoYWRvd0Nv
bG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25lc3MpOwotICAgIENI
RUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5nZSwgdGV4dERyYXdp
bmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VDb2xvckNoYW5n
ZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxDb2xv
ckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJP
UEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAgICAgICAmJiAobV9z
dGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciB8fCBtX3N0
YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAgIGNoYW5nZUZsYWdz
LmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKLSAg
ICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFu
Z2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZEFudGlh
bGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9Q
RVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9udHMpOwotICAgIENI
RUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5n
ZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdMdW1pbmFuY2VNYXNr
Q2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5j
ZSk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
KSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9IDE7CiAjZW5kaWYK
LQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorc3RhdGljIGNvbnN0
IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5n
ZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3MpOwotCi0gICAgYXV0
byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5z
QW55KHN0cm9rZUZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoc3Ryb2tlRmxh
Z3MpOwotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
Q29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5j
b250YWluc0FueShmaWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShmaWxs
RmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNoYW5nZU5hbWVzW10g
PSB7CisgICAgICAgICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVsZSIsCisKKyAgICAg
ICAgInN0cm9rZS1icnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNzIiwKKyAgICAgICAg
InN0cm9rZS1zdHlsZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwKKyAgICAgICAgImRy
b3Atc2hhZG93IiwKKworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1hZ2UtaW50ZXJwb2xh
dGlvbi1xdWFsaXR5IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwKKworICAgICAgICAi
c2hvdWxkLWFudGlhbGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZvbnRzIiwKKyAgICAg
ICAgInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAgICJzaGFkb3dzLWln
bm9yZS10cmFuc2Zvcm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1hc2siCisjaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmstYXBwZWFyYW5jZSIK
KyNlbmRpZgorICAgIH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MgPSB7IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnko
Y29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGNv
bXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY2hhbmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYgbWFzaykpOwogCi0g
ICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0ZUNoYW5nZU5hbWVz
W2luZGV4XTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVu
dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hh
bmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBh
dHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRp
ZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJu
KCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9zdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaGFk
b3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFk
b3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRlLnN0cm9rZVRoaWNr
bmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRUZXh0RHJh
d2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNvbG9yKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0YXRlLmZpbGxDb2xv
cik7CisgICAgYXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250
ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7CisgICAgICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KG5hbWUsIHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAKLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOworICAgIGR1
bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAgICAgICAgICAgICAg
ICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1bXAoQ2hhbmdlOjpT
dHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJv
a2VCcnVzaCwgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlN0cm9rZUJy
dXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgc3RhdGVD
aGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0
cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9r
ZVN0eWxlLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlU3R5
bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1vZGUpOworICAgIGR1
bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OkNvbXBvc2l0ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgICAgICAgICAg
ICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7CiAKLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFs
aWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMobV9zdGF0ZS5z
aG91bGRBbnRpYWxpYXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFu
Y2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
bV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1wKENoYW5nZTo6QWxw
aGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpBbHBoYSkpOwor
ICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0YXRlQ2hhbmdlTmFt
ZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBkdW1wKENoYW5nZTo6
VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4
dERyYXdpbmdNb2RlLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpUZXh0RHJh
d2luZ01vZGUpKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAg
IHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOworICAgIGR1bXAoQ2hh
bmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTbW9vdGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNo
b3VsZFNtb290aEZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cywgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KSk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgc3RhdGVDaGFu
Z2VOYW1lKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAgICBkdW1wKENoYW5n
ZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcmF3
THVtaW5hbmNlTWFzaykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBwZWFyYW5jZShtX3N0
YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNlRGFya0FwcGVhcmFu
Y2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2Us
ICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwog
I2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBjaGFuZ2UpCiB7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZsYWdzLnRvUmF3KCkp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2Ut
Z3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUu
c3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCkpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXBhdHRlcm4i
LCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0JsdXIpOwotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNoYWRvd09mZnNldCk7
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9zdGF0ZS5zaGFkb3dD
b2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1
cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kp
OwotICAgIH0KLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdN
b2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIs
IG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRlLnN0cm9rZUNvbG9y
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtY29sb3Ii
LCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBtX3N0YXRlLmZpbGxS
dWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0
YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIG1f
c3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7Ci0K
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1z
bW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJw
aXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0KLSNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFy
a0FwcGVhcmFuY2UpOwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VOYW1lKGNoYW5nZSk7
CisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0gICAgcmV0dXJuIHRz
OworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1OTU5
NTk2Ny4uYTkyMTI3OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRT
dGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUJydXNo
LmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgR3Jh
ZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewot
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhpY3ND
b250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90IHsKLSAgICAgICAg
U3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAotICAgICAg
ICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCi0gICAg
ICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKLSAg
ICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAot
ICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQs
Ci0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
NSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSAgICAgICAg
ICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgICAgICAg
ICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2UgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01vZGVDaGFuZ2UgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRpYWxpYXNDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRTbW9vdGhGb250c0No
YW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBEcmF3THVtaW5hbmNl
TWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAgICBJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAgIGVudW0gY2xhc3Mg
Q2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAgICAgICAgICAgICAg
PSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwK
KworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgICAg
IFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgU3Ryb2tlU3R5
bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBvc2l0ZU1vZGUgICAg
ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAgICAgICAgICAgICAg
ID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
NywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAg
ICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAgICAgICAgU2hvdWxk
QW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hvdWxkU21vb3RoRm9u
dHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgICAgID0gMSA8
PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0gMSA8PCAxNCwKICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VEYXJrQXBwZWFyYW5j
ZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1c2luZyBTdGF0ZUNo
YW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hhbmdlRmxhZ3MgPSBP
cHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2Vz
KCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdl
cygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0
IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0Rmls
bENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVz
aCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2
b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdyYWRpZW50KFdURk1v
dmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZp
bGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRl
cm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGNoYW5nZUZsYWdz
LmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwg
ZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OwotICAg
IFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2go
Y29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1
c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNoKTsgfQorICAgIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIHsgY29s
b3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFk
aWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBzdHJva2VCcnVz
aC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VG
bGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQYXR0ZXJuKFdURk1v
dmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKwor
ICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgeyBzZXRQ
cm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVN0
eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tl
U3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0cm9rZVN0eWxlKTsg
fQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9k
ZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2b2lkIHNldERyb3BT
aGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgZHJvcFNoYWRv
dyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9CisgICAg
dm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAgdm9pZCBzZXRUZXh0
RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRl
eHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9pZCBzZXRTaG91bGRB
bnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91
bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzLCBzaG91
bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3Vs
ZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3VsZFNtb290aEZvbnRz
KTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorICAgIHZvaWQgc2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBz
ZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1h
c2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9CisjaWYg
SEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNl
KGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSwgdXNlRGFy
a0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IGZpbGxH
cmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47CisgICAgYm9vbCBoYXNP
bmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRl
eHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGlk
QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsK
KyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAg
ICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIGZpbGxDb2xv
ciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0
ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBzdHJva2VHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybTsKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAgIFNvdXJjZUJydXNo
IGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2lu
ZFJ1bGU6Ok5vblplcm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaCB7IENv
bG9yOjpibGFjayB9OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKLSAgICBmbG9h
dCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9OwotCiAgICAgU3Ryb2tl
U3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRSdWxlIGZpbGxSdWxl
IHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfTsK
LSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICAKKyAg
ICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNl
T3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRyb3BTaGFkb3c7Cisg
ICAgCisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07
Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9k
ZTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7
IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAx
OwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wgc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDog
MTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29sIHNob3VsZEFudGlh
bGlhcyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsgdHJ1ZSB9OworICAg
IGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1h
c2sgeyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1
c2VEYXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNl
IH07CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMt
Pipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+
KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChjaGFuZ2UpOworICAg
IH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCi0g
ICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAodGhpcy0+KnByb3Bl
cnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLT4qcHJvcGVy
dHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAg
ICAgfQorfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBjb25zdDsKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsmXShDaGFuZ2UgY2hh
bmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYg
KGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBlbmNvZGVyIDw8IHRo
aXMtPipwcm9wZXJ0eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
OwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0gICAgCi0gICAgdm9p
ZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIgPDwgY2hhbmdlRmxh
Z3M7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OworICAgIGVuY29k
ZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKworICAg
IGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhp
Y2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKworICAgIGVuY29kZShD
aGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJvcFNoYWRvdywgICAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKwor
ICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisg
ICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29kZShDaGFuZ2U6OlNo
b3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hv
dWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAg
ICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQorICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworI2VuZGlm
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29u
dGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBD
aGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAg
ICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUg
c3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRl
eHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm9w
ZXJ0eVR5cGU+IHZhbHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAo
IXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN0YXRlLipwcm9w
ZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKIAotV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFncz4gY2hhbmdlRmxh
Z3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNoYW5nZUZsYWdzKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
c3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZp
bGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1
c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAo
IWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0
cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VT
dHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hh
bmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c2hvdWxkU21vb3RoRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSk7CitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCArMjU5LDI3IEBAIG5h
bWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlR3JhZGllbnRD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQ29sb3JD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
LAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYUNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwKLSAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdl
LAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
bW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5n
ZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlLAorCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3cs
CisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGEs
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3
aW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlmCiAgICAgPjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
Y3BwCmluZGV4IDE1ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0YjdhOTNhYjQuLjEyZTRm
ZmJmMDg0NzM5MzkzOGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBAIC0xMzYsNiArMTM2
LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCiAgICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxlbmRNb2RlKTsKIH0K
IAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29tcG9zaXRlTW9kZSBj
b21wb3NpdGVNb2RlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlv
biIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5k
LW1vZGUiLCBjb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJuIHRzOworfQorCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcm9wU2hhZG93JiBk
cm9wU2hhZG93KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9mZnNldCIsIGRyb3BT
aGFkb3cub2Zmc2V0KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1ibHVyIiwgZHJvcFNo
YWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1jb2xvciIsIGRy
b3BTaGFkb3cuY29sb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5
LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdh
Y3kpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpCit7Cisg
ICAgc3dpdGNoIChpbnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2UgSW50ZXJwb2xhdGlv
blF1YWxpdHk6OkRlZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZToKKyAg
ICAgICAgdHMgPDwgIkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwgIkxPVyI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1lZGl1bToKKyAgICAg
ICAgdHMgPDwgIk1FRElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlv
blF1YWxpdHk6OkhpZ2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxlKSB7CkBAIC0xODIs
NCArMjIwLDQyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIExpbmVK
b2luIGpvaW5TdHlsZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQoreworICAgIHN3aXRj
aCAoc3Ryb2tlU3R5bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0cm9rZToKKyAgICAg
ICAgdHMgPDwgIk5PLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5
bGU6OlNvbGlkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tFIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgorICAgICAgICB0cyA8
PCAiRE9UVEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5bGU6
OkRhc2hlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0UiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6CisgICAgICAgIHRzIDw8
ICJET1VCTEUtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6
V2F2eVN0cm9rZToKKyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgVGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkKK3sKKyAgICBzd2l0
Y2ggKHRleHREcmF3aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdNb2RlOjpGaWxsOgor
ICAgICAgICB0cyA8PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dERyYXdp
bmdNb2RlOjpTdHJva2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKaW5kZXgg
ZGVjNDM0NzAyY2Y3NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcyOTc4MzFhMmJmMzQ2
OGNhZWM4ZjUyMDBmMDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5j
bHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgpAQCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVuZE1vZGUgOiB1aW50
OF90IHsKICAgICBQbHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0ZU1vZGUgeworICAg
IENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90aGVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24gJiYgYmxlbmRNb2Rl
ID09IG90aGVyLmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2RlKERlY29kZXImKTsK
K307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0ZU1vZGU6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb3BlcmF0aW9uOwor
ICAgIGVuY29kZXIgPDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBvcGVy
YXRpb247CisgICAgZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFvcGVyYXRpb24pCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9k
ZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAgIGlmICghYmxlbmRN
b2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqb3Bl
cmF0aW9uLCAqYmxlbmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50TWFya2VyTGluZVN0
eWxlIHsKICAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAgICAgVGV4dENoZWNr
aW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2ICsxNDksNjcgQEAg
c3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUsICpzaG91bGRVc2VE
YXJrQXBwZWFyYW5jZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMg
dXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8gSXQgaGFzIGRpZmZl
cmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01v
ZGUgOiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKworc3RydWN0IERyb3BT
aGFkb3cgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1clJhZGl1cyB7IDAg
fTsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUgeyBT
aGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0JsdXJyZWQoKSBjb25z
dCB7IHJldHVybiBpc1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAgYm9vbCBoYXNPdXRz
ZXRzKCkgY29uc3QgeyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJsZSgpICYmICFvZmZz
ZXQuaXNaZXJvKCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJvcFNoYWRvdyYgYikK
K3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVyUmFkaXVzID09IGIu
Ymx1clJhZGl1cyAmJiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNNb2RlID09IGIucmFk
aXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJvcFNoYWRvdzo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBvZmZzZXQ7
CisgICAgZW5jb2RlciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwgY29sb3I7CisgICAg
ZW5jb2RlciA8PCByYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxEcm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0OworICAgIGRlY29kZXIg
Pj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAgICBkZWNvZGVyID4+
IGJsdXJSYWRpdXM7CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+
PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNNb2RlOworICAgIGRl
Y29kZXIgPj4gcmFkaXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpibHVyUmFkaXVzLCAq
Y29sb3IsICpyYWRpdXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFkaWVudFNwcmVhZE1l
dGhvZCA6IHVpbnQ4X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAtMTU4LDEzICsyNTcs
NiBAQCBlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3QgewogfTsKIHVzaW5nIFRl
eHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9kZT47CiAKLS8vIExl
Z2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1i
b3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHgu
Ci1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBEZWZhdWx0LAotICAg
IExlZ2FjeQotfTsKLQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhhYmV0aWNUZXh0QmFz
ZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwxNCBAQCBib29sIHBh
cnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpDb21w
b3NpdGVPcGVyYXRvciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdlYkNvcmU6
OkNvbXBvc2l0ZU9wZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29tcG9zaXRlTW9kZSk7
CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgRHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25RdWFsaXR5KTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBMaW5lQ2FwKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUpOworV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRE
cmF3aW5nTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaAppbmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3YzlhMTFiNDIyNDY4ODVl
Li42YzMzMzM5NjI3MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdJbWFnZXNX
aXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlv
blJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlkYXRpbmdJbWFnZXNX
aXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludElu
dmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsgfQogCi0gICAgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFVwZGF0
ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNpZiBVU0UoQ0cpCiAg
ICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggYmIxMzhi
NTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFhYmZjZTM4MDgxODNh
M2IyMzFmYmNlMGZmYjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNoYWRvd0JsdXI6OlNo
YWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
LCBjb25zdCBDCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQogCi1TaGFkb3dCbHVy
OjpTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG1f
Y29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMoc3RhdGUuc2hhZG93
Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNl
dCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmIGRyb3BT
aGFkb3csIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBtX2NvbG9yKGRyb3BT
aGFkb3cuY29sb3IpCisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBk
cm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hhZG93Lm9mZnNldCkK
KyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
CiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3JyZWN0bHkgcmVuZGVy
cyBzaGFkb3dzIHdpdGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0vODEwMzQ0Mj4pLAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVoYXZpb3IgZm9yIGNh
bnZhcyBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBmbG9hdCBzaGFkb3dC
bHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7CisgICAgaWYgKGRy
b3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpIHsKKyAgICAg
ICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRyb3BTaGFkb3cuYmx1
clJhZGl1cyk7CiAgICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBz
aGFkb3dCbHVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3ZjMzMWVjYWQxYTQz
MDI5M2Y2MDNhLi44ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2MTc3MTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOworc3Ry
dWN0IERyb3BTaGFkb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgU2hhZG93Qmx1ciB7
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIoKTsKICAgICBTaGFk
b3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwg
Y29uc3QgQ29sb3ImLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwotICAg
IFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICBTaGFkb3dCbHVy
KGNvbnN0IERyb3BTaGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2Up
OwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxv
YXRTaXplJiAsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVz
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUwNzM1MjQzOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJy
dXNoLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCcnVz
aC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpTb3VyY2VCcnVzaChj
b25zdCBDb2xvciYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1c2gpCisgICAgOiBt
X2NvbG9yKGNvbG9yKQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkKK3sKK30KKworY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
IGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRyYW5zZm9ybT4gaWRl
bnRpdHk7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRlbnRpdHkuZ2V0KCk7
CisKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVzaDo6TG9naWNhbEdy
YWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3JhZGllbnQtPnNwYWNl
VHJhbnNmb3JtOworCisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQorCitHcmFkaWVudCog
U291cmNlQnJ1c2g6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnJ1c2gpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9IHN0ZDo6Z2V0X2lm
PEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisgICAgICAgIHJldHVy
biBncmFkaWVudC0+Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bh
dHRlcm4qIFNvdXJjZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnJ1c2gp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0ZXJuID0gc3RkOjpn
ZXRfaWY8UmVmPFBhdHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gcGF0
dGVybi0+cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgU291cmNlQnJ1c2g6
OnNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBzcGFjZVRyYW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVzaDo6TG9naWNhbEdy
YWRpZW50IHsgV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0gfTsKK30KKwordm9p
ZCBTb3VyY2VCcnVzaDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQoreworICAg
IG1fYnJ1c2ggPSB7IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOworCisgICAgaWYgKGF1
dG8gZ3JhZGllbnQgPSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImdyYWRpZW50IiwgZ3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVybiA9IGJydXNoLnBh
dHRlcm4oKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwgcGF0dGVybik7CisK
KyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5Yjlm
YWU1NDk0MzQ5ZGI1NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCkBAIC0wLDAgKzEs
MTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJHcmFkaWVudC5oIgor
I2luY2x1ZGUgIlBhdHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3Vy
Y2VCcnVzaCB7CitwdWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAgICAgc3RydWN0IExv
Z2ljYWxHcmFkaWVudCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdyYWRpZW50OworICAg
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisgICAgICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxMb2dpY2FsR3JhZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RkOjp2YXJpYW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+PiBicnVzaDsKKwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBTb3VyY2VCcnVz
aCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVzaChjb25zdCBDb2xv
ciYsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOworCisgICAgY29uc3Qg
Q29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIHZvaWQgc2V0Q29s
b3IoY29uc3QgQ29sb3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisKKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBtX2JydXNoOyB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEdy
YWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5z
Zm9ybSA9IHsgfSk7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKKworICAg
IGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAmJiBtX2NvbG9yLnRy
eUdldEFzU1JHQkFCeXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZh
dGU6CisgICAgQ29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIHN0ZDo6b3B0aW9u
YWw8QnJ1c2g+IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNv
dXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBTb3VyY2VCcnVzaDo6
QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5ncmFkaWVudC5wdHIo
KSA9PSBiLmdyYWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0gYi5zcGFjZVRyYW5z
Zm9ybTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaDo6QnJ1
c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihhLmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6
TG9naWNhbEdyYWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiR3Jh
ZGllbnQgPSBzdGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4o
JmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQgPT0gKmJHcmFkaWVu
dDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChj
b25zdCBSZWY8UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYlBh
dHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1c2gmIGIpCit7Cisg
ICAgcmV0dXJuIGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgpID09IGIuYnJ1c2go
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJy
dXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8PCBzcGFjZVRyYW5z
Zm9ybTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291
cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9n
aWNhbEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGdyYWRp
ZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdyYWRpZW50KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5l
VHJhbnNmb3JtPiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNwYWNlVHJhbnNmb3Jt
OworICAgIGlmICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNlVHJhbnNmb3JtIH0g
fTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJy
dXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXVEY6OnN3aXRjaE9u
KGJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYgZ3JhZGllbnQpIHsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQorICAgICk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoOjpC
cnVzaD4gU291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29kZXIgPj4gaGFzR3Jh
ZGllbnQ7CisgICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBncmFkaWVudCA9IExv
Z2ljYWxHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAoIWdyYWRpZW50KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCpncmFkaWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46
OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9IH07Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7CisgICAgZW5jb2RlciA8
PCBtX2JydXNoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxT
b3VyY2VCcnVzaD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4gY29sb3I7CisgICAg
aWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29kZXIgPj4gYnJ1c2g7
CisgICAgaWYgKCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBTb3VyY2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9CisKK1dURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTb3VyY2VCcnVzaCYp
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAxNTUy
MzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi4yZGE0OTFmZDg3ZjZjZmJiMzNl
NDdkOTgxMjMzN2JmMjE1OGY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU1OSw0MiAr
NTU5LDQyIEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAgICAgLCBmaWxsUnVs
ZShzdGF0ZS5maWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pIHsKLSAgICAg
ICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1dG8gZmlsbFBhdHRl
cm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBhdHRlcm4ub2JqZWN0
ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFu
c2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZpbGxQYXR0
ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gZmlsbFBhdHRl
cm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2Uuc2l6
ZSgpOwotICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmls
bFBhdHRlcm4tPnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmls
bFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCkg
ewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0
ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgcGF0dGVy
bi50cmFuc2Zvcm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CisgICAg
ICAgIHBhdHRlcm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7CisgICAgICAgIHBh
dHRlcm4ucmVwZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAgfSBlbHNlIGlmIChh
dXRvIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgpKSB7CisgICAgICAg
IGdyYWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmls
bEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBo
YSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0YXRlLmZpbGxH
cmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGZpbGxH
cmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEJydXNoLmdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUu
ZmlsbENvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpOwogfQog
CiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAgICBpZiAoc3RhdGUu
c3Ryb2tlUGF0dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0YXRlLnN0cm9rZVBh
dHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwotICAgIGVs
c2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRpZW50LmJhc2UgPSBz
dGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5zdHJva2VHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ry
b2tlQnJ1c2gucGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3Ryb2tlUGF0
dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgZWxz
ZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCkp
IHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJu
KDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAg
IGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0
ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFs
cGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwg
c3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UK
LSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgY29sb3IgPSBzdGF0
ZS5zdHJva2VCcnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hhZG93U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0KHN0YXRlLnNoYWRv
d09mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIGNvbG9yKHN0YXRl
LnNoYWRvd0NvbG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0KQorICAg
ICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBjb2xvcihzdGF0ZS5k
cm9wU2hhZG93LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKQotICAgICwgZ2xv
YmFsQ29tcG9zaXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpCisgICAgLCBnbG9i
YWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKaW5kZXggYTdhZjBjZWI1MjQ5MDQwNDFlZTEyZDUxZjg5YzZkZjE2Y2IzNjAzNy4u
ZmU3MzhiZGY3N2U4Y2U3NjJhY2M5YTBmMGY4NGRkODM2MWM2OWMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgYXV0byYgc3RhdGUgPSBj
b250ZXh0LnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0cm9rZVNvdXJjZShz
dGF0ZSksCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2FsZWRG
b250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKLSAgICAgICAg
c3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRv
d09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9k
ZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUu
ZHJvcFNoYWRvdy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZ01vZGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50
Q2Fpcm8uY3BwCmluZGV4IDkwMDk2YWM2NDUyMjRkYmZkYzYwYmZhNmNhY2FkMDMwNzZjYjI5N2Qu
Ljg1N2NlZDFhMjcwMzc2MWIxZDM3ODNiZGVlMzA4Mzc0ODczNjFmODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8u
Y3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gR3JhZGllbnQ6
OmNyZWF0ZVBhdHRlcm4oZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IEFmZmluZVQKIAogdm9pZCBH
cmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKLSAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5z
dGF0ZSgpLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBhdXRvIHBhdHRlcm4gPSBj
cmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsK
ICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCmluZGV4IGMzMjMwNDQ1MzUxYjAzZjJhYTg3MzZhZWUyYmNlNzhiYzQzNjFmNDku
LmJjMzg5YWU4MDEyZDUyOWEwZjlhYTlkN2VlNGNmY2ZmNGJiYzc1MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpyZXN0b3JlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewogICAgIEFTU0VS
VCghcmVjdC5pc0VtcHR5KCkpOwotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAg
ICBDYWlybzo6ZHJhd1JlY3QoKnRoaXMsIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJv
OjpkcmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBmaWxsQ29sb3IoKSwgc3Ry
b2tlU3R5bGUoKSwgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNTQsMTUgKzE1Mywx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9T
dHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUu
c2hvdWxkQW50aWFsaWFzKTsKKyAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9p
bnQyLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlja25lc3MoKSwgc2hv
dWxkQW50aWFsaWFzKCkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWQgdG8gZHJh
dyB0aGUgbGl0dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNlKCp0aGlzLCByZWN0
LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwg
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBDYWlybzo6ZHJhd0VsbGlwc2UoKnRoaXMsIHJl
Y3QsIGZpbGxDb2xvcigpLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlj
a25lc3MoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxQYXRoKGNvbnN0
IFBhdGgmIHBhdGgpCkBAIC0xOTYsOCArMTkzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgR3JhZGllbnQmIGdyYWRpZW50KQogewotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBhdXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUu
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1dG8gcGF0dGVybiA9IGdyYWRpZW50
LmNyZWF0ZVBhdHRlcm4oMS4wLCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICBp
ZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA5LDcgKzIwNSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3Jh
ZGllbnQmIGdyYWRpZW50KQogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGF1dG8mIHN0
YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJh
dG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJl
dmlvdXNPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwogCiAgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUpOwogICAgIENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwpAQCAtMjY1LDcgKzI2MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRo
aWNrCiB7CiAgICAgaWYgKHdpZHRocy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBD
YWlybzo6ZHJhd0xpbmVzRm9yVGV4dCgqdGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBw
cmludGluZywgZG91YmxlVW5kZXJsaW5lcywgbV9zdGF0ZS5zdHJva2VDb2xvcik7CisgICAgQ2Fp
cm86OmRyYXdMaW5lc0ZvclRleHQoKnRoaXMsIHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJp
bnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0cm9rZUNvbG9yKCkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC0yODQsMjggKzI4MCwz
MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQg
eSkKICAgICBDYWlybzo6dHJhbnNsYXRlKCp0aGlzLCB4LCB5KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlVGhpY2tuZXNzQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSkKICAgICAgICAgQ2Fp
cm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cyk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVD
aGFuZ2UpCisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ry
b2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKTsKIAotICAgIGlmIChmbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdl
cygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3cpKSB7
CiAgICAgICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewogICAgICAgICAg
ICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdp
dGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgICAgICAvLyBXZSBmbGlwIHRoZSBo
ZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRlIFkgYXhpcwotICAg
ICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuc2hhZG93T2Zmc2V0OwotICAgICAg
ICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSB7IHNoYWRvd09mZnNldC53aWR0aCgpLCAtc2hh
ZG93T2Zmc2V0LmhlaWdodCgpIH07CisgICAgICAgICAgICBhdXRvJiBzaGFkb3dPZmZzZXQgPSBz
dGF0ZS5kcm9wU2hhZG93Lm9mZnNldDsKKyAgICAgICAgICAgIG1fc3RhdGUuZHJvcFNoYWRvdy5v
ZmZzZXQgPSB7IHNoYWRvd09mZnNldC53aWR0aCgpLCAtc2hhZG93T2Zmc2V0LmhlaWdodCgpIH07
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldENv
bXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJs
ZW5kTW9kZSk7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpz
ZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9u
LCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5j
aGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMoKnRoaXMs
IHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtKQpAQCAtNDM0LDcgKzQzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCoKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdH
bHlwaHMoKnRoaXMsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0cm9rZVNvdXJj
ZShzdGF0ZSksCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2Fs
ZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKLSAgICAg
ICAgc3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNo
YWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5n
TW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3Rh
dGUuZHJvcFNoYWRvdy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5oCmluZGV4IDU2NDYxYzE1OWE1ODNjODljNjFlOGYwMmU0ZTBiZWU3
YjA1OTMyZWYuLjczMjE0NzBmYzRmMWM3ZmIxZjNhZjdiYjQ2OGVhYTE3YzVlMWQ1ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBHcmFwaGljc0NvbnRleHRD
YWlybyogcGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250
ZXh0U3RhdGUmKTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICB2
b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0KSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAppbmRleCAzMjQ1YzYwMDQzMTU1MmQ1MTNiNzRlZWJjMDlmMzE4ZWVjM2RkNzJhLi5m
OWZlYWI0ZTI2ZjI5ODMzODFkY2RkYTRkNTRjNTBiNzUzOGU3ODY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCkBAIC0xODUsMTMgKzE4NSwxNCBAQCBzdGF0aWMgdm9pZCBzZXRDR0JsZW5kTW9kZShDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZQogfQogCiBH
cmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0coQ0dDb250ZXh0UmVmIGNnQ29udGV4
dCkKKyAgICA6IEdyYXBoaWNzQ29udGV4dCh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkZpbGxCcnVzaCwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcyB9KQogewogICAgIGlm
ICghY2dDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKGNnQ29udGV4dCk7CiAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgIGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIH0pOworICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OwogICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvcmVJbnRlcnBvbGF0
aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRl
eHQoKSkpOwogfQogCkBAIC0zMzgsNyArMzM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXoK
ICNlbmRpZgogCiAgICAgYXV0byBvbGRDb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJh
dGlvbigpOwotICAgIGF1dG8gb2xkQmxlbmRNb2RlID0gYmxlbmRNb2RlT3BlcmF0aW9uKCk7Cisg
ICAgYXV0byBvbGRCbGVuZE1vZGUgPSBibGVuZE1vZGUoKTsKICAgICBzZXRDR0JsZW5kTW9kZShj
b250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkp
OwogCiAgICAgLy8gTWFrZSB0aGUgb3JpZ2luIGJlIGF0IGFkanVzdGVkRGVzdFJlY3QubG9jYXRp
b24oKQpAQCAtNTU1LDEzICs1NTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd0Vs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjph
cHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGlmICghbV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQor
ICAgIGlmICghc3Ryb2tlUGF0dGVybigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3Jt
IHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRl
eHQpKTsKIAotICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJu
LT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CisgICAgYXV0byBwbGF0Zm9y
bVBhdHRlcm4gPSBzdHJva2VQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9C
YXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCkBA
IC01NzQsMTMgKzU3NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseVN0cm9rZVBh
dHRlcm4oKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKCkKIHsK
LSAgICBpZiAoIW1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKCFmaWxsUGF0dGVybigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFu
c2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIGF1dG8gcGxhdGZvcm1Q
YXR0ZXJuID0gbV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJU
b0Jhc2VDVE0pOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gZmlsbFBhdHRlcm4oKS0+Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0
ZXJuKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5MSwxMSArNTkyLDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIENHQ29udGV4dFNldEZpbGxQYXR0
ZXJuKGNnQ29udGV4dCwgcGxhdGZvcm1QYXR0ZXJuLmdldCgpLCAmcGF0dGVybkFscGhhKTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgQ0dQYXRoRHJhd2luZ01vZGUmIG1vZGUpCitzdGF0aWMgaW5s
aW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01vZGUoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBDR1BhdGhEcmF3aW5nTW9kZSYgbW9kZSkKIHsKLSAgICBib29sIHNob3VsZEZpbGwgPSBz
dGF0ZS5maWxsUGF0dGVybiB8fCBzdGF0ZS5maWxsQ29sb3IuaXNWaXNpYmxlKCk7Ci0gICAgYm9v
bCBzaG91bGRTdHJva2UgPSBzdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IChzdGF0ZS5zdHJva2VTdHls
ZSAhPSBOb1N0cm9rZSAmJiBzdGF0ZS5zdHJva2VDb2xvci5pc1Zpc2libGUoKSk7Ci0gICAgYm9v
bCB1c2VFT0ZpbGwgPSBzdGF0ZS5maWxsUnVsZSA9PSBXaW5kUnVsZTo6RXZlbk9kZDsKKyAgICBi
b29sIHNob3VsZEZpbGwgPSBjb250ZXh0LmZpbGxQYXR0ZXJuKCkgfHwgY29udGV4dC5maWxsQ29s
b3IoKS5pc1Zpc2libGUoKTsKKyAgICBib29sIHNob3VsZFN0cm9rZSA9IGNvbnRleHQuc3Ryb2tl
UGF0dGVybigpIHx8IChjb250ZXh0LnN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UgJiYgY29udGV4
dC5zdHJva2VDb2xvcigpLmlzVmlzaWJsZSgpKTsKKyAgICBib29sIHVzZUVPRmlsbCA9IGNvbnRl
eHQuZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZDsKIAogICAgIGlmIChzaG91bGRGaWxs
KSB7CiAgICAgICAgIGlmIChzaG91bGRTdHJva2UpIHsKQEAgLTYyNCw5ICs2MjUsOCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKLSAgICBp
ZiAoc3RhdGUuZmlsbEdyYWRpZW50IHx8IHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYg
KGZpbGxHcmFkaWVudCgpIHx8IHN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgaGF2ZSBhbnkgb3B0aW1pemVkIHdheSB0byBmaWxsICYgc3Ryb2tlIGEgcGF0aCB1c2luZyBn
cmFkaWVudHMKICAgICAgICAgLy8gRklYTUU6IEJlIHNtYXJ0ZXIgYWJvdXQgdGhpcy4KICAgICAg
ICAgZmlsbFBhdGgocGF0aCk7CkBAIC02MzQsMTMgKzYzNCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigpKQog
ICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7Ci0gICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4p
CisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7
CiAKICAgICBDR1BhdGhEcmF3aW5nTW9kZSBkcmF3aW5nTW9kZTsKLSAgICBpZiAoY2FsY3VsYXRl
RHJhd2luZ01vZGUoc3RhdGUsIGRyYXdpbmdNb2RlKSkgeworICAgIGlmIChjYWxjdWxhdGVEcmF3
aW5nTW9kZSgqdGhpcywgZHJhd2luZ01vZGUpKSB7CiAjaWYgSEFWRShDR19DT05URVhUX0RSQVdf
UEFUSF9ESVJFQ1QpCiAgICAgICAgIENHQ29udGV4dERyYXdQYXRoRGlyZWN0KGNvbnRleHQsIGRy
YXdpbmdNb2RlLCBwYXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKICNlbHNlCkBAIC02NTgs
NyArNjU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAK
LSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBmaWxsR3JhZGll
bnQgPSB0aGlzLT5maWxsR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsK
ICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAg
ICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNp
emUoKSk7CkBAIC02NzAsMzMgKzY3MCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxs
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RN
KGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgICAgICAgICAgQ0dDb250
ZXh0QmVnaW5QYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRo
KGxheWVyQ29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIGZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9
PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAobGF5
ZXJDb250ZXh0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBDR0NvbnRleHRD
bGlwKGxheWVyQ29udGV4dCk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5w
YWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWludChsYXll
ckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQs
IHJlY3QsIGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29u
dGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29u
dGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAg
ICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkKQog
ICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwogCi0gICAgICAgICAg
ICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgZmlsbEdy
YWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0ZXJuKCkp
CiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICNpZiBIQVZFKENHX0NPTlRFWFRfRFJBV19Q
QVRIX0RJUkVDVCkKICAgICBDR0NvbnRleHREcmF3UGF0aERpcmVjdChjb250ZXh0LCBmaWxsUnVs
ZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkID8ga0NHUGF0aEVPRmlsbCA6IGtDR1BhdGhGaWxsLCBw
YXRoLnBsYXRmb3JtUGF0aCgpLCBudWxscHRyKTsKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHRoaXMtPnN0
cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAg
ICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAg
ZmxvYXQgbGluZVdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC03NDIsOCArNzQyLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAg
ICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRo
KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgobGF5
ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsKLSAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RN
KGxheWVyQ29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
ICAgIHN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogCiAgICAgICAgICAgICBm
bG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAg
ICAgICAgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsK
QEAgLTc1NCwxMyArNzU0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgo
Y29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwg
cGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdp
dGhTdHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4
dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5zdHJv
a2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250
ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tl
R3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoc3Ryb2tlUGF0dGVy
bigpKQogICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKIAogI2lmIFVTRShDR19DT05URVhU
X1NUUk9LRV9MSU5FX1NFR01FTlRTX1dIRU5fU1RST0tJTkdfUEFUSCkKQEAgLTc4NSw3ICs3ODUs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAot
ICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgeworICAgIGlmIChhdXRvIGZpbGxHcmFkaWVu
dCA9IHRoaXMtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAg
ICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7
CkBAIC03OTgsMTggKzc5OCwxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGxheWVy
Q29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7
CiAKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUu
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3Jh
ZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRD
VE0obGF5ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
ICAgIGZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29u
dGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3Qp
OwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBm
aWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+
cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAobV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4oKSkKICAgICAgICAg
YXBwbHlGaWxsUGF0dGVybigpOwogCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gY2FuVXNlU2hh
ZG93Qmx1cigpOwpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hh
ZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4
dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFk
b3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hhZG93
KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRy
YXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9CiAKQEAg
LTgzOSw3ICs4MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgLy8gVHVybiBvZmYg
Q0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3Jt
Q29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRl
eHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9w
U2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hh
ZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKICAgICB9
CiAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRl
ZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0CiAgICAgICAgIC8v
IFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xv
cihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93
Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAg
Y29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgcmVjdCk7CiAgICAgfQogCkBAIC04
NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1w
bChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdAogICAgIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSA9IHJlY3QucmFkaWkoKTsKICAgICBib29sIGVxdWFsV2lk
dGhzID0gKHJhZGlpLnRvcExlZnQoKS53aWR0aCgpID09IHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgo
KSAmJiByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLndpZHRo
KCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgPT0gcmFkaWkuYm90dG9tUmlnaHQoKS53
aWR0aCgpKTsKICAgICBib29sIGVxdWFsSGVpZ2h0cyA9IChyYWRpaS50b3BMZWZ0KCkuaGVpZ2h0
KCkgPT0gcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS5o
ZWlnaHQoKSA9PSByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpICYmIHJhZGlpLnRvcFJpZ2h0KCku
aGVpZ2h0KCkgPT0gcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSk7Ci0gICAgYm9vbCBoYXND
dXN0b21GaWxsID0gbV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVybjsK
KyAgICBib29sIGhhc0N1c3RvbUZpbGwgPSBmaWxsR3JhZGllbnQoKSB8fCBmaWxsUGF0dGVybigp
OwogICAgIGlmICghaGFzQ3VzdG9tRmlsbCAmJiBlcXVhbFdpZHRocyAmJiBlcXVhbEhlaWdodHMg
JiYgcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKiAyID09IHIud2lkdGgoKSAmJiByYWRpaS50b3BM
ZWZ0KCkuaGVpZ2h0KCkgKiAyID09IHIuaGVpZ2h0KCkpCiAgICAgICAgIENHQ29udGV4dEZpbGxF
bGxpcHNlSW5SZWN0KGNvbnRleHQsIHIpOwogICAgIGVsc2UgewpAQCAtOTE1LDcgKzkxNSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3Mu
CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
Q0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1f
c3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5z
ZXRTaGFkb3coKnRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCkBAIC05ODks
NiArOTg5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgb3BhY2l0eSk7CiAgICAgQ0dD
b250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcihjb250ZXh0LCAwKTsKKyAgICAKKyAgICBtX3N0
YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2
aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIApAQCAtMTAwMiwxNyAr
MTAwNCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjplbmRUcmFuc3BhcmVuY3lMYXllcigp
CiAgICAgcmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmth
cm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHRmxvYXQmIHhP
ZmZzZXQsIENHRmxvYXQmIHlPZmZzZXQpCitzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdv
cmthcm91bmRJZk5lZWRlZChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwg
Q0dGbG9hdCYgeU9mZnNldCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9S
TShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTSh4T2Zm
c2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CiAjZWxzZQotICAgIGlmIChjb250ZXh0
LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRz
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhD
b3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
V29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1MzkzODg+IGJ5IGVuc3VyaW5nIHRoYXQgdGhl
IG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCkBAIC0xMDMwLDEwICsxMDI5LDggQEAgc3RhdGlj
IHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIHZvaWQgc2V0Q0dT
aGFkb3coQ0dDb250ZXh0UmVmIGNvbnRleHQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwg
Ym9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLQogICAgIGlmIChvZmZzZXQu
aXNaZXJvKCkgJiYgIWJsdXIpIHsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KGNvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOwogICAgICAgICByZXR1cm47CkBAIC0xMDQ1LDcg
KzEwNDIsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgIENHRmxvYXQgeU9mZnNldCA9
IG9mZnNldC5oZWlnaHQoKTsKICAgICBDR0Zsb2F0IGJsdXJSYWRpdXMgPSBibHVyOwogCi0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkgeworICAgIGlm
ICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0g
dXNlclRvQmFzZUNUTSA9IGdldFVzZXJUb0Jhc2VDVE0oY29udGV4dCk7CiAKICAgICAgICAgQ0dG
bG9hdCBBID0gdXNlclRvQmFzZUNUTS5hICogdXNlclRvQmFzZUNUTS5hICsgdXNlclRvQmFzZUNU
TS5iICogdXNlclRvQmFzZUNUTS5iOwpAQCAtMTA2Niw3ICsxMDYzLDggQEAgc3RhdGljIHZvaWQg
c2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSYKICAgICAvLyBFeHRyZW1lICJibHVyIiB2YWx1ZXMgY2FuIG1ha2UgdGV4dCBk
cmF3aW5nIGNyYXNoIG9yIHRha2UgY3JhenkgbG9uZyB0aW1lcywgc28gY2xhbXAKICAgICBibHVy
UmFkaXVzID0gc3RkOjptaW4oYmx1clJhZGl1cywgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KDEw
MDAuMCkpOwogCi0gICAgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoZ3JhcGhp
Y3NDb250ZXh0LCB4T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgICBpZiAocmVuZGVyaW5nTW9kZSAhPSBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAgICAgYXBwbHlTaGFkb3dPZmZzZXRXb3Jr
YXJvdW5kSWZOZWVkZWQoY29udGV4dCwgeE9mZnNldCwgeU9mZnNldCk7CiAKICAgICAvLyBDaGVj
ayBmb3IgYW4gaW52YWxpZCBjb2xvciwgYXMgdGhpcyBtZWFucyB0aGF0IHRoZSBjb2xvciB3YXMg
bm90IHNldCBmb3IgdGhlIHNoYWRvdwogICAgIC8vIGFuZCB3ZSBzaG91bGQgdGhlcmVmb3JlIGp1
c3QgdXNlIHRoZSBkZWZhdWx0IHNoYWRvdyBjb2xvci4KQEAgLTEwNzYsMzkgKzEwNzQsNjEgQEAg
c3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENv
bG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNh
Y2hlZENHQ29sb3IoY29sb3IpLmdldCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6
ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBpZiAoIXN0YXRlLmNoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIENHQ29udGV4
dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MsIDAu
ZikpOworICAgIGZvciAoYXV0byBjaGFuZ2UgOiBzdGF0ZS5jaGFuZ2VzKCkpIHsKKyAgICAgICAg
c3dpdGNoIChjaGFuZ2UpIHsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpGaWxsQnJ1c2g6CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0
ZS5maWxsQnJ1c2guY29sb3IoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzczoKKyAgICAgICAg
ICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VU
aGlja25lc3MsIDAuZikpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaDoKKyAgICAgICAgICAgIENHQ29u
dGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUu
c3Ryb2tlQnJ1c2guY29sb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdl
KSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VDb2xvcikuZ2V0KCkpOworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGU6CisgICAgICAgICAgICBzZXRD
R0JsZW5kTW9kZShjb250ZXh0LCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUu
Y29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0g
ICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxDb2xvcik7CisgICAgICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdzoKKyAgICAgICAg
ICAgIHNldENHU2hhZG93KGNvbnRleHQsIHJlbmRlcmluZ01vZGUoKSwgc3RhdGUuZHJvcFNoYWRv
dy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuYmx1clJhZGl1cywgc3RhdGUuZHJvcFNoYWRvdy5j
b2xvciwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hh
bmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgc3RhdGUuYWxwaGEpOwor
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhOgorICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgc3RhdGUuYWxwaGEpOworICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pKQotICAgICAgICBzZXRDR0JsZW5kTW9kZShjb250ZXh0LCBzdGF0ZS5j
b21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlKTsKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5OgorICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBv
bGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAgICAg
ICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdp
bmdNb2RlKGNvbnRleHQsIGNnVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5nTW9kZSkp
OworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5n
TW9kZToKKyAgICAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBj
Z1RleHREcmF3aW5nTW9kZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMo
Y29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXM6CisgICAgICAgICAgICBDR0NvbnRl
eHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFNo
b3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250czoK
KyAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRl
LnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
Q2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4
dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93
Q2hhbmdlKSkKLSAgICAgICAgc2V0Q0dTaGFkb3coKnRoaXMsIHN0YXRlLnNoYWRvd09mZnNldCwg
bV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICBzdGF0ZS5kaWRB
cHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c2V0TWl0ZXJMaW1p
dChmbG9hdCBsaW1pdCkKQEAgLTExMjUsNyArMTE0NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7
CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlm
IChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQg
PSB0aGlzLT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewog
ICAgICAgICAgICAgY29uc3QgZmxvYXQgZG91YmxlTGluZVdpZHRoID0gbGluZVdpZHRoICogMjsK
ICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkV2lkdGggPSBjZWlsZihyZWN0LndpZHRoKCkgKyBk
b3VibGVMaW5lV2lkdGgpOwpAQCAtMTE0OSw4ICsxMTY5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkK
ICAgICAgICAgICAgIENHQ29udGV4dEFkZFJlY3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAg
ICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7
CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQo
bGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRl
eHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VH
cmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKIAogICAgICAgICAgICAgY29uc3QgZmxvYXQg
ZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7
CkBAIC0xMTYxLDEzICsxMTgxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBD
R0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVw
bGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRD
bGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1f
c3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0oY29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
ICAgIHN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0
cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICAgICAvLyBV
c2luZyBDR0NvbnRleHRBZGRSZWN0IGFuZCBDR0NvbnRleHRTdHJva2VQYXRoIHRvIHN0cm9rZSBy
ZWN0IHJhdGhlciB0aGFuCkBAIC0xNDIyLDcgKzE0NDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENHOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNl
KQogewogICAgIC8vIENHQ29udGV4dEZpbGxFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMgc29s
aWQgY29sb3JzLgotICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQ
YXR0ZXJuKSB7CisgICAgaWYgKGZpbGxHcmFkaWVudCgpIHx8IGZpbGxQYXR0ZXJuKCkpIHsKICAg
ICAgICAgZmlsbEVsbGlwc2VBc1BhdGgoZWxsaXBzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNDM0LDcgKzE0NTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJv
a2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAvLyBDR0NvbnRleHRT
dHJva2VFbGxpcHNlSW5SZWN0IG9ubHkgc3VwcG9ydHMgc29saWQgY29sb3JzLgotICAgIGlmICht
X3N0YXRlLnN0cm9rZUdyYWRpZW50IHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVybikgeworICAgIGlm
IChzdHJva2VHcmFkaWVudCgpIHx8IHN0cm9rZVBhdHRlcm4oKSkgewogICAgICAgICBzdHJva2VF
bGxpcHNlQXNQYXRoKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmgKaW5kZXggNjAzYjBlOTM2ZWZiNTI4Y2FjM2Q3YWRjODY2ZTk5NTdlZTMwZWJlYy4uYTFhMjZi
ZmQyODRkODQ0NjNlYzIwZmIwMTRmYTMzNjljODhjOTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCkBAIC0x
MjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0ludGVybmFsTGlua3Mo
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmlu
YWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFs
OwogCiAgICAgdmlydHVhbCBib29sIGNhblVzZVNoYWRvd0JsdXIoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBo
c1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGVmYmMxZTQ5NTQ0
MWJlZGU3MzRlOTQ4ZGQyNmQzNzE0NDE2NTUzZTAuLmQwYmVjOGQ2Mzg0NzA5Yjc4Y2YxZGU4MGJi
MDJlMWUzN2QyZjk0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3Jl
VGV4dC5jcHAKQEAgLTk2LDUyICs5NiwyNCBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlw
aHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbAogCiB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCiB7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZp
bGxTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5maWxsQ29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0
YXRlLmZpbGxTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAg
bV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtID0gY29udGV4
dFN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5m
aWxsU3R5bGUucGF0dGVybiA9IGNvbnRleHRTdGF0ZS5maWxsUGF0dGVybjsKLQotICAgIG1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9IGNvbnRleHRTdGF0ZS5zdHJva2VDb2xvcjsK
LSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUu
c3Ryb2tlR3JhZGllbnQ7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bTsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybiA9IGNvbnRleHRTdGF0
ZS5zdHJva2VQYXR0ZXJuOworICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0
U3RhdGUuZmlsbEJydXNoOworICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRl
eHRTdGF0ZS5zdHJva2VCcnVzaDsKIAogICAgIG1fb3JpZ2luYWxTdGF0ZS5jdG0gPSBtX293bmVy
LmdldENUTSgpOyAvLyBGSVhNRTogRGVhbCB3aXRoIGJhc2UgQ1RNLgogCi0gICAgbV9vcmlnaW5h
bFN0YXRlLnNoYWRvdy5vZmZzZXQgPSBjb250ZXh0U3RhdGUuc2hhZG93T2Zmc2V0OwotICAgIG1f
b3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciA9IGNvbnRleHRTdGF0ZS5zaGFkb3dCbHVyOwotICAg
IG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IgPSBjb250ZXh0U3RhdGUuc2hhZG93Q29sb3I7
Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID0gY29udGV4dFN0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAgbV9jdXJyZW50U3RhdGUgPSBtX29y
aWdpbmFsU3RhdGU7CisgICAgbV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cgPSBjb250ZXh0U3Rh
dGUuZHJvcFNoYWRvdzsKKyAgICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA9IGNv
bnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIH0KIAogdm9pZCBEcmF3R2x5cGhz
UmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBjb250ZXh0U3RhdGUpCiB7Ci0gICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUu
Y29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbENvbG9y
KG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IpOwotICAgIGVsc2UgaWYgKG1fb3JpZ2lu
YWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5z
ZXRGaWxsR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQsIG1fb3Jp
Z2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pOwotICAg
ICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKQotICAgICAgICAgICAg
bV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxQYXR0ZXJuKCptX29yaWdpbmFsU3RhdGUuZmlsbFN0
eWxlLnBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUuY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yKTsKLSAgICBlbHNlIGlmICht
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdy
YWRpZW50LCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9y
bSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUucGF0dGVybik7Ci0gICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0
dGVybikKLSAgICAgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKCpt
X29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7Ci0gICAgfQorICAgIG1faW50ZXJu
YWxDb250ZXh0LT5zZXRGaWxsQnJ1c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCk7CisgICAg
bV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUJydXNoKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VC
cnVzaCk7CiAKICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0Q1RNKG1fb3JpZ2luYWxTdGF0ZS5j
dG0pOwogCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgbV9pbnRlcm5h
bENvbnRleHQtPnNldFNoYWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCwgbV9vcmln
aW5hbFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yLCBjb250
ZXh0U3RhdGUuc2hhZG93UmFkaXVzTW9kZSk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsK
KyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RHJvcFNoYWRvdyhtX29yaWdpbmFsU3RhdGUuZHJv
cFNoYWRvdyk7CiAKICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNv
bnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwogfQpAQCAtMTY1LDk1ICsxMzcsMzkgQEAgdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnByZXBhcmVJbnRlcm5hbENvbnRleHQoY29uc3QgRm9udCYg
Zm9udCwgRm9udFNtb290aGluZ00KIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUlu
dGVybmFsQ29udGV4dCgpCiB7CiAgICAgdXBkYXRlQ1RNKG1fb3JpZ2luYWxTdGF0ZS5jdG0pOwot
ICAgIHVwZGF0ZUZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLCBtX29y
aWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuZmls
bFN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVN0cm9rZUNvbG9yKG1fb3JpZ2luYWxT
dGF0ZS5zdHJva2VTdHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRp
ZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybi5nZXQoKSk7Ci0g
ICAgdXBkYXRlU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0LCBtX29yaWdpbmFs
U3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IsIG1fb3JpZ2lu
YWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA/IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6Tm8pOworICAgIHVwZGF0ZUZpbGxCcnVz
aChtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoKTsKKyAgICB1cGRhdGVTdHJva2VCcnVzaChtX29y
aWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOworICAgIHVwZGF0ZVNoYWRvdyhtX29yaWdpbmFsU3Rh
dGUuZHJvcFNoYWRvdywgbV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMgPyBTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Ok5vKTsKIH0K
IAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcihjb25zdCBDb2xvciYg
bmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmFkaWVudCwgUGF0dGVybiogbmV3UGF0dGVybikKK3Zv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gm
IG5ld0JydXNoKQogewotICAgIC8vIFRoaXMgY2hlY2sgbG9va3Mgd3JvbmcgYnV0IGl0IGFjdHVh
bGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0ZWQgdXNlLgotICAgIC8vIENUIHdpbGwgb25seSBldmVy
IHNldCB0aGlzIHRvIGEgc29saWQgY29sb3IsIHdoaWNoIHRoaXMgaXMgdGhlIGNvcnJlY3QgY2hl
Y2sgZm9yLgotICAgIC8vIEluIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCkgd2Ugc2V0IGl0IGJh
Y2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2luYWxseSwgd2hpY2ggdGhpcyBjaGVjayB3b3JrcyBjb3Jy
ZWN0bHkgZm9yIHRvby4KLSAgICBpZiAobmV3Q29sb3IgPT0gbV9jdXJyZW50U3RhdGUuZmlsbFN0
eWxlLmNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBu
ZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5maWxsQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3
R3JhZGllbnQpCi0gICAgICAgIG5ld1N0YXRlLmZpbGxHcmFkaWVudCA9IG5ld0dyYWRpZW50Owot
ICAgIGlmIChuZXdQYXR0ZXJuKQotICAgICAgICBuZXdTdGF0ZS5maWxsUGF0dGVybiA9IG5ld1Bh
dHRlcm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0YXRlLmZpbGxT
dHlsZS5jb2xvciA9IG5ld0NvbG9yOworICAgIG1fb3duZXIuc2V0RmlsbEJydXNoKG5ld0JydXNo
KTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0
IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0ZXJuKiBuZXdQYXR0
ZXJuKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJydXNoKGNvbnN0IFNv
dXJjZUJydXNoJiBuZXdCcnVzaCkKIHsKLSAgICAvLyBUaGlzIGNoZWNrIGxvb2tzIHdyb25nIGJ1
dCBpdCBhY3R1YWxseSBpc24ndCwgZm9yIG91ciBsaW1pdGVkIHVzZS4KLSAgICAvLyBDVCB3aWxs
IG9ubHkgZXZlciBzZXQgdGhpcyB0byBhIHNvbGlkIGNvbG9yLCB3aGljaCB0aGlzIGlzIHRoZSBj
b3JyZWN0IGNoZWNrIGZvci4KLSAgICAvLyBJbiBjb25jbHVkZUludGVybmFsQ29udGV4dCgpIHdl
IHNldCBpdCBiYWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdpbmFsbHksIHdoaWNoIHRoaXMgY2hlY2sg
d29ya3MgY29ycmVjdGx5IGZvciB0b28uCi0gICAgaWYgKG5ld0NvbG9yID09IG1fY3VycmVudFN0
YXRlLnN0cm9rZVN0eWxlLmNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5zdHJva2VDb2xvciA9IG5ld0NvbG9y
OwotICAgIGlmIChuZXdHcmFkaWVudCkKLSAgICAgICAgbmV3U3RhdGUuc3Ryb2tlR3JhZGllbnQg
PSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3UGF0dGVybikKLSAgICAgICAgbmV3U3RhdGUuc3Ry
b2tlUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdT
dGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UgfSk7Ci0gICAg
bV9jdXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKKyAgICBtX293bmVy
LnNldFN0cm9rZUJydXNoKG5ld0JydXNoKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnVwZGF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSkKIHsKLSAgICBpZiAoY3RtID09
IG1fY3VycmVudFN0YXRlLmN0bSkKKyAgICBpZiAobV9vd25lci5nZXRDVE0oKSA9PSBjdG0pCiAg
ICAgICAgIHJldHVybjsKLQogICAgIG1fb3duZXIuc2V0Q1RNKGN0bSk7Ci0gICAgbV9jdXJyZW50
U3RhdGUuY3RtID0gY3RtOwogfQogCi1zdGF0aWMgYm9vbCBzaGFkb3dJc0NsZWFyZWQoY29uc3Qg
RmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIpCit2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3csIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewotICAgIHJl
dHVybiBzaGFkb3dPZmZzZXQgPT0gRmxvYXRTaXplKCkgJiYgIXNoYWRvd0JsdXI7Ci19Ci0KLXZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaGFk
b3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgU2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi17Ci0gICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBpZiBub2Jv
ZHkgaGFzIGFueSBzaGFkb3dzLgotICAgIGlmIChzaGFkb3dJc0NsZWFyZWQoc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyKSAmJiBzaGFkb3dJc0NsZWFyZWQobV9jdXJyZW50U3RhdGUuc2hhZG93Lm9m
ZnNldCwgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBzdGF0ZUNoYW5nZUZsYWdzOwotCi0gICAgaWYgKHNoYWRvd09m
ZnNldCAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0IHx8IHNoYWRvd0JsdXIgIT0gbV9j
dXJyZW50U3RhdGUuc2hhZG93LmJsdXIgfHwgc2hhZG93Q29sb3IgIT0gbV9jdXJyZW50U3RhdGUu
c2hhZG93LmNvbG9yKSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd09mZnNldCA9IHNoYWRvd09m
ZnNldDsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93Qmx1ciA9IHNoYWRvd0JsdXI7Ci0gICAgICAg
IG5ld1N0YXRlLnNoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7Ci0gICAgICAgIHN0YXRlQ2hhbmdl
RmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotICAgIH0KLSAg
ICBpZiAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgIT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6
OlVuc3BlY2lmaWVkICYmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtczo6WWVzKSAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3Jt
cykgewotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IChzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKLSAgICAg
ICAgc3RhdGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zQ2hhbmdlKTsKLSAgICB9Ci0gICAgaWYgKHN0YXRlQ2hhbmdlRmxhZ3MuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9vd25lci5kaWRVcGRhdGVTdGF0ZShuZXdT
dGF0ZSwgc3RhdGVDaGFuZ2VGbGFncyk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zm
c2V0ID0gc2hhZG93T2Zmc2V0OwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyID0gc2hh
ZG93Qmx1cjsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuY29sb3IgPSBzaGFkb3dDb2xvcjsK
LSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9IChzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKKyAgICBtX293
bmVyLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7CisgICAgbV9vd25lci5zZXRTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9PSBTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtczo6WWVzKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRv
dyhDR1N0eWxlUmVmIHN0eWxlKQogewogICAgIGlmIChDR1N0eWxlR2V0VHlwZShzdHlsZSkgIT0g
a0NHU3R5bGVTaGFkb3cpIHsKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbW9yZSBraW5kcyBv
ZiBDR1N0eWxlcy4KLSAgICAgICAgdXBkYXRlU2hhZG93KHswLCAwfSwgMCwgQ29sb3IoKSwgU2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkKTsKKyAgICAgICAgdXBkYXRlU2hhZG93
KHsgfSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlVuc3BlY2lmaWVkKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjYxLDcgKzE3Nyw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVy
Ojp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKICAgICBhdXRvIHJhZCA9IGRlZzJyYWQo
c2hhZG93U3R5bGUuYXppbXV0aCAtIDE4MCk7CiAgICAgYXV0byBzaGFkb3dPZmZzZXQgPSBGbG9h
dFNpemUoc3RkOjpjb3MocmFkKSwgc3RkOjpzaW4ocmFkKSkgKiBzaGFkb3dTdHlsZS5oZWlnaHQ7
CiAgICAgYXV0byBzaGFkb3dDb2xvciA9IENHU3R5bGVHZXRDb2xvcihzdHlsZSk7Ci0gICAgdXBk
YXRlU2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93U3R5bGUucmFkaXVzLCBDb2xvcjo6Y3JlYXRl
QW5kUHJlc2VydmVDb2xvclNwYWNlKHNoYWRvd0NvbG9yKSwgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXM6Olllcyk7CisgICAgdXBkYXRlU2hhZG93KHsgc2hhZG93T2Zmc2V0LCBzdGF0aWNfY2FzdDxm
bG9hdD4oc2hhZG93U3R5bGUucmFkaXVzKSwgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JT
cGFjZShzaGFkb3dDb2xvcikgfSwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CiB9CiAK
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3Rh
dGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZSwgQ0dSZWN0KQpAQCAtMzI4LDggKzI0NCw4IEBAIHZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVS
ZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAKICAgICBhdXRvIGZpbGxDb2xvciA9IENHR1N0YXRlR2V0
RmlsbENvbG9yKGdzdGF0ZSk7CiAgICAgYXV0byBzdHJva2VDb2xvciA9IENHR1N0YXRlR2V0U3Ry
b2tlQ29sb3IoZ3N0YXRlKTsKLSAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFBy
ZXNlcnZlQ29sb3JTcGFjZShmaWxsQ29sb3IpKTsKLSAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xv
cjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CisgICAgdXBkYXRl
RmlsbEJydXNoKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7
CisgICAgdXBkYXRlU3Ryb2tlQnJ1c2goQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFj
ZShzdHJva2VDb2xvcikpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0
ZSkpOwogCiAgICAgYXV0byBmb250U2l6ZSA9IENHR1N0YXRlR2V0Rm9udFNpemUoZ3N0YXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDYXNjYWRlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKaW5kZXggNTExZTA5Yjk2Y2VmMDMyNTA5
MGUyM2FmOTE0YWUzNWYyYWI4ZWQyZS4uODBhOGM4YWU2NTQ4ZDBiNmE5NmFhMzJkN2MwNTVkYjY4
NjQ5MTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAgLTI0MiwxMCAr
MjQyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBzZXRDR0ZvbnRSZW5kZXJpbmdN
b2RlKGNvbnRleHQpOwogICAgIENHQ29udGV4dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZv
cm1EYXRhLnNpemUoKSk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0
IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgY29udGV4dC5nZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgYXV0byBkcm9w
U2hhZG93ID0gY29udGV4dC5kcm9wU2hhZG93KCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY29u
dGV4dENUTSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAgZmxvYXQgc3ludGhldGljQm9sZE9mZnNl
dCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwpAQCAtMjU4LDE2ICsyNTUsMTYgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgfQogICAgIH07CiAKLSAgICBib29sIGhhc1Np
bXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2Rl
OjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZv
cm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgp
KSAmJiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBs
ZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpG
aWxsICYmIGRyb3BTaGFkb3cuY29sb3IuaXNWYWxpZCgpICYmICFkcm9wU2hhZG93LmJsdXJSYWRp
dXMgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRp
b25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
aWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBv
dXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2lu
ZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsK
ICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKLSAgICAgICAg
Q29sb3Igc2hhZG93RmlsbENvbG9yID0gc2hhZG93Q29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBs
aWVkQnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKKyAgICAgICAgQ29sb3Igc2hhZG93Rmls
bENvbG9yID0gZHJvcFNoYWRvdy5jb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShmaWxs
Q29sb3IuYWxwaGFBc0Zsb2F0KCkpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IpOwotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNo
YWRvd09mZnNldC53aWR0aCgpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50Lngo
KSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJl
IGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3Jk
aW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAgIGZsb2F0IHNoYWRv
d1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRvd1Rl
eHRZID0gcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNn
Q29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICAg
ICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFk
dmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFk
b3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKQEAgLTI4MCw3ICsyNzcsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwog
ICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3lu
dGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFk
dmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRv
dykKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvcik7CisgICAgICAgIGNvbnRleHQuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsK
IAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChzaG91bGRTbW9vdGhGb250cyAh
PSBvcmlnaW5hbFNob3VsZFVzZUZvbnRTbW9vdGhpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAppbmRleCAyZTJmNGY0ZjJjYjU1ZDM2NWU1YWUzOTkzMjVkMDVmMmMxNzM2MWZkLi4yYjAzY2U0
YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFlZGZkZTFjODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKQEAgLTkwLDEwICs5MCw3IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JG
bGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBpZiAoIShm
bGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewogICAgICAg
ICAgICAgY29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5
IHN0YXRlLWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCi0gICAgICAgICAgICBp
ZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5n
ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5j
aGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4
IDIzZDBiYmNjNzFjMjgxYzUyYzM1YThjMjUyZGE5NmMwYWIxMmE5OGMuLmI2NmM4NDhhMzNiZGQ5
MjM2MGZlYTg1MzM3ZmFiNWRiMmQyZDAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKQEAgLTE0OCwyNCArMTQ4LDE5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmIHN0YXRlKQogICAg
IHJldHVybiB0czsKIH0KIAotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxh
Z3MpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlLCBmbGFncykKLXsKLX0KLQotU2V0U3RhdGU6
OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkK
LSAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2UpCitTZXRTdGF0ZTo6U2V0U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQorICAgIDogbV9zdGF0ZShzdGF0ZSkKIHsK
IH0KIAogdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CisgICAgY29udGV4dC51cGRhdGVTdGF0
ZShtX3N0YXRlKTsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFNldFN0YXRlJiBzdGF0ZSkKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKIHsKLSAgICB0cyA8PCBz
dGF0ZS5zdGF0ZUNoYW5nZSgpOworICAgIHRzIDw8IGl0ZW0uc3RhdGUoKTsKICAgICByZXR1cm4g
dHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDk3Y2I1ZmM4ZDA0
YmE4NjYyYjcyYzdkZGVlYmM0NDE1NWMyODI1YjcuLjk2OTRkNjhkMTVlOThkNTY3ZDM4ZDNhYzli
MmMwOTlmMzBkMGE1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjQ3
LDEwICsyNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5l
SXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0g
ZmFsc2U7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCi0g
ICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
JiBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KKyAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+
IGRlY29kZShEZWNvZGVyJik7CkBAIC0yNTgsMjg4ICsyNTcsMjQgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jik7CiAKIHByaXZhdGU6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGVDaGFuZ2U7Cisg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzOwotICAg
IGVuY29kZXIgPDwgY2hhbmdlRmxhZ3M7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFu
Z2UubV9zdGF0ZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5z
dHJva2VHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50
OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9r
ZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOwotICAg
IH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuZmlsbEdyYWRpZW50
KTsKLSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmlsbEdyYWRpZW50OwotICAgIH0KLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5maWxsUGF0dGVybik7Ci0gICAgICAg
IGVuY29kZXIgPDwgKnN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgZW5jb2RlciA8PCBz
dGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd0NvbG9yOwot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7Ci0gICAgfQotCi0gICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsK
LQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4
dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS50ZXh0RHJhd2lu
Z01vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VD
b2xvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsQ29sb3I7
Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VTdHlsZTsK
LQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFJ1bGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxSdWxlOwotCi0gICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVP
cGVyYXRpb25DaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpCbGVuZE1vZGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmJsZW5kTW9kZTsK
LQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLmFscGhhOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0
YXRlLnNob3VsZEFudGlhbGlhczsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLnNob3VsZFNtb290aEZvbnRzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHND
aGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAgIGVuY29kZXIgPDwgbV9zdGF0ZTsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0
YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzPiBjaGFuZ2VGbGFnczsKLSAgICBkZWNv
ZGVyID4+IGNoYW5nZUZsYWdzOwotICAgIGlmICghY2hhbmdlRmxhZ3MpCisgICAgc3RkOjpvcHRp
b25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gc3RhdGU7CisgICAgZGVjb2RlciA+PiBzdGF0ZTsK
KyAgICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0gICAgc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncyA9ICpjaGFuZ2VGbGFnczsKLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5n
ZSkpIHsKLSAgICAgICAgYXV0byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVj
b2Rlcik7Ci0gICAgICAgIGlmICghc3Ryb2tlR3JhZGllbnQpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGll
bnQgPSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBh
dHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmRl
Y29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAoc3Rh
dGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBhdXRvIGZpbGxHcmFkaWVudCA9IEdyYWRpZW50
OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghZmlsbEdyYWRpZW50KQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZp
bGxHcmFkaWVudCA9IFdURk1vdmUoKmZpbGxHcmFkaWVudCk7Ci0gICAgfQotCi0gICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBhdXRvIGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6
ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQ
YXR0ZXJuID0gV1RGTW92ZSgqZmlsbFBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dD
aGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBzaGFkb3dPZmZzZXQ7
Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93T2Zmc2V0OwotICAgICAgICBpZiAoIXNoYWRvd09m
ZnNldCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSAqc2hhZG93T2Zmc2V0OwotCi0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93
Qmx1cjsKLSAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hh
ZG93Qmx1cjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzaGFkb3dDb2xvcjsKLSAg
ICAgICAgZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKLSAgICAgICAgaWYgKCFzaGFkb3dDb2xvcikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKLQotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNoYWRvd1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7Ci0gICAgICAgIGRlY29kZXIg
Pj4gc2hhZG93UmFkaXVzTW9kZTsKLSAgICAgICAgaWYgKCFzaGFkb3dSYWRpdXNNb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnNoYWRvd1JhZGl1c01vZGUgPSBXVEZNb3ZlKCpzaGFkb3dSYWRpdXNNb2RlKTsKLSAgICB9
Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBzdHJva2VUaGlja25lc3M7Ci0gICAgICAgIGRlY29kZXIgPj4gc3Ryb2tlVGhp
Y2tuZXNzOwotICAgICAgICBpZiAoIXN0cm9rZVRoaWNrbmVzcykKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VUaGlj
a25lc3MgPSAqc3Ryb2tlVGhpY2tuZXNzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01v
ZGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+
IHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgZGVjb2RlciA+PiB0ZXh0RHJhd2luZ01vZGU7Ci0g
ICAgICAgIGlmICghdGV4dERyYXdpbmdNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IFdU
Rk1vdmUoKnRleHREcmF3aW5nTW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzdHJva2VDb2xvcjsKLSAgICAg
ICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsKLSAgICAgICAgaWYgKCFzdHJva2VDb2xvcikKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENv
bG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7Ci0g
ICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwotICAgICAgICBpZiAoIWZpbGxDb2xvcikKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsQ29sb3IgPSAqZmlsbENvbG9yOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5n
ZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHls
ZUNoYW5nZSkpIHsKLSAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVN0eWxlID0gc3Ry
b2tlU3R5bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkgewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsKLSAgICAgICAgZGVjb2RlciA+PiBmaWxs
UnVsZTsKLSAgICAgICAgaWYgKCFmaWxsUnVsZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUnVsZSA9ICpmaWxsUnVs
ZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBjb21wb3NpdGVPcGVyYXRvcjsKLSAg
ICAgICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgaWYgKCFjb21wb3Np
dGVPcGVyYXRvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9ICpjb21wb3NpdGVPcGVyYXRv
cjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwotICAgICAgICBkZWNvZGVyID4+IGJsZW5kTW9k
ZTsKLSAgICAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYmxlbmRNb2RlID0gKmJsZW5kTW9k
ZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eTsKLSAgICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5OwotICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAg
IH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9h
dD4gYWxwaGE7Ci0gICAgICAgIGRlY29kZXIgPj4gYWxwaGE7Ci0gICAgICAgIGlmICghYWxwaGEp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdl
Lm1fc3RhdGUuYWxwaGEgPSAqYWxwaGE7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlh
c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRBbnRpYWxpYXM7
Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBpZiAoIXNob3Vs
ZEFudGlhbGlhcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMgPSAqc2hvdWxkQW50aWFsaWFzOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBzaG91bGRTbW9vdGhGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBz
aG91bGRTbW9vdGhGb250czsKLSAgICAgICAgaWYgKCFzaG91bGRTbW9vdGhGb250cykKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaG91bGRTbW9vdGhGb250cyA9ICpzaG91bGRTbW9vdGhGb250czsKLSAgICB9Ci0KLSAgICBp
ZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICAgICAgZGVjb2Rl
ciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0gICAgICAgIGlmICghc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9
ICpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOwotICAgICAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAg
IH0KLQotICAgIHJldHVybiB7IHsgc3RhdGVDaGFuZ2UgfSB9OworICAgIHJldHVybiBTZXRTdGF0
ZSgqc3RhdGUpOwogfQogCiBjbGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlZWU0NDcxZDM1NGU3NTE1MzEyNTE4OWRmY2M5NDE4
YTM5NDUxNGExLi5mZTkyODE2N2QxNGVkZTVmZWY3ODY5M2FlN2UxNDBjZTY0YWNhYjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01Myw0NSArNTMsMzQg
QEAgUmVjb3JkZXI6On5SZWNvcmRlcigpCiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkg
PT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVz
dG9yZS4KIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVjb3JkZXI6OmFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyBpbmxpbmVTdGF0ZUNoYW5nZUZsYWdzIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlLAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9y
Q2hhbmdlLAotICAgIH07Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYg
aW5saW5lU3RhdGVDaGFuZ2VGbGFncykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JD
aGFuZ2UpICYmICFjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVz
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoc3RhdGUuY2hhbmdlcygpKTsK
KyAgICAKKyAgICBpZiAoc3RhdGUuaGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSkgeworICAgICAg
ICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkZpbGxCcnVzaCkpCisgICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmZp
bGxDb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSAmJiAhY2hhbmdl
cy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkKKyAgICAgICAgICAgIHJlY29yZFNldElu
bGluZVN0cm9rZUNvbG9yKCpzdHJva2VDb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIAot
ICAgIHJldHVybiB0cnVlOwotfQorICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCisgICAgICAg
ICAgICByZWNvcmRTZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKCkpOwogCi12b2lk
IFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGNoYW5nZUZsYWdzKQotewotICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2Vz
KGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkgewotICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hh
bmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVz
ZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFu
Z2VzLm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9z
dGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5n
ZSkpCi0gICAgICAgIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUu
c3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgIGlmIChzdGF0ZS5jaGFuZ2Vz
KCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoKSkgewor
ICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gZmlsbFBhdHRlcm4oKSkKKyAgICAgICAgICAgIHJl
Y29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICB9CiAKLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhjaGFuZ2VzLm1fc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkgeworICAgICAgICBpZiAo
YXV0byBwYXR0ZXJuID0gc3Ryb2tlUGF0dGVybigpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAg
ICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRy
eUdldEFzU1JHQkFCeXRlcygpKTsKKyAgICByZWNvcmRTZXRTdGF0ZShzdGF0ZSk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKQEAgLTk5LDI1
ICs4OCwyNSBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2Fy
eSgpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY3VycmVudGx5IGludm9rZWQgaW4gYW4gYWQtaG9j
IG1hbm5lciB3aGVuIHJlY29yZGluZyBkcmF3aW5nIGl0ZW1zLiBXZSBzaG91bGQgY29uc2lkZXIg
ZWl0aGVyCiAgICAgLy8gc3BsaXR0aW5nIEdyYXBoaWNzQ29udGV4dCBzdGF0ZSBjaGFuZ2VzIGlu
dG8gaW5kaXZpZHVhbCBkaXNwbGF5IGxpc3QgaXRlbXMsIG9yIHJlZmFjdG9yaW5nIHRoZSBjb2Rl
IHN1Y2ggdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgaW52b2tlZCB3
aGVuIHJlY29yZGluZyBhIGRyYXdpbmcgaXRlbS4KLSAgICBhdXRvJiBzdGF0ZUNoYW5nZXMgPSBj
dXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZTsKLSAgICBhdXRvIGNoYW5nZXNGcm9tTGFzdFN0YXRl
ID0gc3RhdGVDaGFuZ2VzLmNoYW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdp
bmdTdGF0ZSk7Ci0gICAgaWYgKCFjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkKKyAgICBhdXRvJiBzdGF0
ZSA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlOworICAgIGlmICghc3RhdGUuY2hhbmdlcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0g
PDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKLSAgICBh
cHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7
Ci0gICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07Ci0gICAgY3VycmVudFN0YXRl
KCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOworICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0
ZSAiIDw8IHN0YXRlKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGUpOworICAgIHN0
YXRlLmRpZEFwcGx5Q2hhbmdlcygpOworICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3Rh
dGUgPSBzdGF0ZTsKIH0KIAogY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIFJlY29yZGVyOjpz
dGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1f
c3RhdGU7CisgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlOwogfQogCi12b2lkIFJlY29y
ZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZWNvcmRl
cjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIGN1
cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLmFjY3VtdWxhdGUoc3RhdGUsIGZsYWdzKTsKKyAgICBj
dXJyZW50U3RhdGUoKS5zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGN1cnJlbnRTdGF0ZSgpLmxh
c3REcmF3aW5nU3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTIyMiwxMiArMjExLDE1
IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogdm9pZCBSZWNvcmRlcjo6c2F2ZSgpCiB7Cisg
ICAgR3JhcGhpY3NDb250ZXh0OjpzYXZlKCk7CiAgICAgcmVjb3JkU2F2ZSgpOwotICAgIG1fc3Rh
dGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CisgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpKTsKIH0KIAogdm9pZCBSZWNv
cmRlcjo6cmVzdG9yZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCk7CisKICAg
ICBpZiAoIW1fc3RhdGVTdGFjay5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc1LDE2
ICsyNjcsMjQgQEAgQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpnZXRDVE0oR3JhcGhpY3NDb250
ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0
eSk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9y
VHJhbnNwYXJlbmN5TGF5ZXIoKSk7CisgICAgCisgICAgbV9zdGF0ZS5hbHBoYSA9IDE7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKKyAgICBHcmFwaGljc0Nv
bnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
bV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIG1fc3RhdGUuYWxwaGEgPSBjdXJyZW50
U3RhdGUoKS5zdGF0ZS5hbHBoYTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA4NDVlYzAwNzcyZWQyYzU0YTFlNmNiMjZiMjE1MWRh
YmFhNmVjMDc1Li5hMmEyMjY4ZTVlZDVlYjVjMGE5Y2ZlM2NmZWViYTc3MDFjMmFlZjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8
dWludDhfdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29s
b3IoU1JHQkE8dWludDhfdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3Ryb2tl
VGhpY2tuZXNzKGZsb2F0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVD
YXAoTGluZUNhcCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChjb25z
dCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CkBAIC0xMzUsMzAgKzEzNSwyNSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CiAK
ICAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
c3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IGxhc3RE
cmF3aW5nU3RhdGU7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAgICAgICAgIEZsb2F0
UmVjdCBjbGlwQm91bmRzOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0
ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsK
IAotICAgICAgICBDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBjbGlw
KQotICAgICAgICAgICAgOiBjdG0odHJhbnNmb3JtKQotICAgICAgICAgICAgLCBjbGlwQm91bmRz
KGNsaXApCi0gICAgICAgICAgICAsIGxhc3REcmF3aW5nU3RhdGUoc3RhdGUpCisgICAgICAgIENv
bnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3RtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXBCb3VuZHMpCisgICAgICAgICAg
ICA6IHN0YXRlKHN0YXRlKQorICAgICAgICAgICAgLCBjdG0oY3RtKQorICAgICAgICAgICAgLCBj
bGlwQm91bmRzKGNsaXBCb3VuZHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIENv
bnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBD
b250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwgY3RtLCBjbGlwQm91bmRzKTsKLSAg
ICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVDaGFuZ2U7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQogICAgICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JU
cmFuc3BhcmVuY3lMYXllcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3Rh
dGUgPSBjbG9uZUZvclNhdmUoKTsKLSAgICAgICAgICAgIHN0YXRlLmxhc3REcmF3aW5nU3RhdGUu
YWxwaGEgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRlOworICAgICAgICAgICAgYXV0byBj
b3B5ID0gKnRoaXM7CisgICAgICAgICAgICBjb3B5LnN0YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKKyAgICAgICAgICAgIGlmIChjb3B5Lmxhc3REcmF3aW5nU3RhdGUpCisgICAgICAg
ICAgICAgICAgY29weS5sYXN0RHJhd2luZ1N0YXRlLT5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVy
KCk7CisgICAgICAgICAgICByZXR1cm4gY29weTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwpAQCAtMTg5LDcgKzE4NCw3IEBAIHByaXZhdGU6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUo
KSBjb25zdCBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkVXBkYXRlU3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRVcGRhdGVTdGF0
ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CkBAIC0y
NzAsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgcm91
bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5k
aW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7Ci0gICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7
CisgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IDFmZGM2YmE1
NmJmZGIyNjM2ZWZiMzQ2MmFkYTJhOTkwZDMzODk5NDUuLjc5ZGQxMDIwNDYyMjZmYzBhMTFlZGUz
YmUzYjk1MmVjYjg3ZDM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcApAQCAtMTA0LDkgKzEwNCw5IEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogICAgIGFwcGVuZDxTZXRTdHJv
a2VUaGlja25lc3M+KHRoaWNrbmVzcyk7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBhcHBlbmQ8U2V0U3RhdGU+KHN0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgYXBwZW5kPFNldFN0
YXRlPihzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5lQ2FwKExp
bmVDYXAgbGluZUNhcCkKQEAgLTQxNywxNiArNDE3LDEzIEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQg
c2hhZG93UGFpbnRpbmdFeHRlbnQoZmxvYXQgYmx1clJhZGl1cykKIAogRmxvYXRSZWN0IFJlY29y
ZGVySW1wbDo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29u
c3QKIHsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVjdDsKKyAgICBhdXRvIGJvdW5kcyA9IHJl
Y3Q7CiAgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKTsKIAotICAgIEZsb2F0U2l6ZSBz
aGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgIENvbG9yIHNoYWRvd0Nv
bG9yOwotICAgIGlmIChnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRv
d0NvbG9yKSkgewotICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50ID0gYm91bmRzOwotICAg
ICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOwotICAgICAgICBzaGFkb3dFeHRl
bnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRpdXMpKTsKKyAgICBpZiAo
aGFzU2hhZG93KCkpIHsKKyAgICAgICAgYXV0byBzaGFkb3dFeHRlbnQgPSBib3VuZHM7CisgICAg
ICAgIHNoYWRvd0V4dGVudC5tb3ZlKGRyb3BTaGFkb3coKS5vZmZzZXQpOworICAgICAgICBzaGFk
b3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChkcm9wU2hhZG93KCkuYmx1clJh
ZGl1cykpOwogICAgICAgICBib3VuZHMudW5pdGUoc2hhZG93RXh0ZW50KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5kZXggNjQyMjY1ZjA5
ODAyMmNmMmIwNWYxODBjMTc0ZmEwMzQ2MmYyZGQ0MC4uYWMyZDMxNzk2NzU4YzYyY2M2MTUwYTE1
NDlkN2EwOTQwNmVlZmFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZFNldElu
bGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRJ
bmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRT
ZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2Fw
KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZs
b2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpv
aW4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4
IDhmZjE5ZDAwMzU0Y2RiZWRlM2E1YmExYWY3NThjZmYwMjNhMjVhMjIuLmYzYzhjOTBjZDg4YmJl
MGM1MWUxZDRmYTEzM2M1MWU4M2I4MGIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAKQEAgLTk3LDEwICs5NywxMCBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFw
aAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAKLSAgICBpZiAoYXV0byBp
bWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZUNo
YW5nZSgpLm1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJ
ZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5zdHJv
a2VCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAot
ICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3Rh
dGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSkpCisgICAgaWYg
KGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0u
c3RhdGUoKS5maWxsQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuICppbWFnZUlkZW50
aWZpZXI7CiAKICAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDkx
MTQ2ZGZjNmZkODRkZjhlMjk1NGYwMzc3ZDAwNjZhNzcyMzNjYzkuLjE0MTY5YTA3NTU4ZDYxNmIw
OTIwY2IwNTdkYzhlYjFjMmE1ODhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC04Miw5ICs4Miw5IEBAIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoUGFpbnRpbmdPcGVyYXRp
b25zJiBjb21tYW5kTGlzdCkKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgeyB9LCB7IH0sIEZs
b2F0UmVjdDo6aW5maW5pdGVSZWN0KCkgfSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKQogewotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpIHsKICAgICAgICAgc3RydWN0
IFN0cm9rZVRoaWNrbmVzc0NoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRp
b25EYXRhPGZsb2F0PiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TdHJva2VUaGlja25lc3NDaGFu
Z2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgRwogICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTdHJva2VUaGlja25lc3NDaGFuZ2U+
KHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFu
Z2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUp
KSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VTdHlsZUNoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3Bl
cmF0aW9uLCBPcGVyYXRpb25EYXRhPFN0cm9rZVN0eWxlPiB7CiAgICAgICAgICAgICB2aXJ0dWFs
IH5TdHJva2VTdHlsZUNoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9r
ZVN0eWxlQ2hhbmdlPihzdGF0ZS5zdHJva2VTdHlsZSkpOwogICAgIH0KIAotICAgIGlmIChmbGFn
cyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpIHsKKyAg
ICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkNvbXBvc2l0ZU1vZGUpKSB7CiAgICAgICAgIHN0cnVjdCBDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlPiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5Db21wb3NpdGVPcGVy
YXRpb25DaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlPihzdGF0ZS5jb21wb3Np
dGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRp
b24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKSk7CiAgICAgfQogCi0gICAgaWYgKGZs
YWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkgeworICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U2hvdWxkQW50aWFsaWFzKSkgewogICAgICAgICBzdHJ1Y3QgU2hvdWxkQW50aWFsaWFzQ2hh
bmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8Ym9vbD4gewogICAg
ICAgICAgICAgdmlydHVhbCB+U2hvdWxkQW50aWFsaWFzQ2hhbmdlKCkgPSBkZWZhdWx0OwogCkBA
IC0xNTUsNiArMTU1LDggQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKIAogICAgICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxTaG91bGRBbnRpYWxpYXNDaGFuZ2U+KHN0YXRlLnNob3VsZEFudGlh
bGlhcykpOwogICAgIH0KKworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OnNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpAQCAt
MjkyLDcgKzI5NCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgfTsKIAogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxs
UmVjdD4ocmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0Pihy
ZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0z
MTYsNyArMzE4LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwKICAgICB9OwogCiAgICAgYXV0
byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxS
ZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpKTsKKyAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgY29sb3IsIGNvbXBvc2l0ZU9wZXJhdG9yLCBi
bGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHN0YXRlLmNvbXBvc2l0ZU1vZGUu
b3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0zNDYsNyArMzQ4LDcgQEAgdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZFJlY3QKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgp
OwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3Qs
IGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93
U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJvdW5kZWRSZWN0
Pihyb3VuZGVkUmVjdCwgY29sb3IsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBibGVu
ZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yKQpAQCAtNTMzLDcgKzUzNSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoCiAgICAg
ICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LAogICAgICAgICBSZWZQdHI8Y2Fp
cm9fc2NhbGVkX2ZvbnRfdD4oZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpLAogICAg
ICAgICBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RGTW92ZShjYWlyb0dseXBocyksIHhP
ZmZzZXQsIHN0YXRlLnRleHREcmF3aW5nTW9kZSwKLSAgICAgICAgc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLCBmb250U21vb3RoaW5n
KSk7CisgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZz
ZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKIH0KIAogdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpCkBAIC01OTksNyArNjAxLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmUKICAgICB9Owog
CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3Rh
dGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNoLmNv
bG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKSk7CiB9
CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC02MjIsNyArNjI0LDcgQEAg
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBw
b2ludDEsIGNvbnN0IEZsb2F0UG9pbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3Rh
dGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lPihw
b2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yLCBzdGF0
ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNob3VsZEFudGlhbGlhcykpOworICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUs
IHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUu
c2hvdWxkQW50aWFsaWFzKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpY2tuZXNzLCBj
b25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVVbmRlcmxp
bmVzLCBTdHJva2VTdHlsZSkKQEAgLTY0NSw3ICs2NDcsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0
IHRoaQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7
Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmVzRm9yVGV4dD4ocG9pbnQsIHRoaWNr
bmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgc3RhdGUuc3Ryb2tlQ29s
b3IpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwg
dGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJv
a2VCcnVzaC5jb2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW50TWFy
a2VyTGluZVN0eWxlIHN0eWxlKQpAQCAtNjg0LDcgKzY4Niw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH07CiAK
ICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RHJhd0VsbGlwc2U+KHJlY3QsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tlU3R5bGUs
IHN0YXRlLnN0cm9rZUNvbG9yLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCks
IHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJv
a2VUaGlja25lc3MpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3Rm9j
dXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0
IENvbG9yJiBjb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAppbmRleCA4M2M2ZDI3ZDZlYTM2Yzc5YmViZDc4MjVmOTliN2M0Mzkw
OGVlNTRiLi5iOTUyODYzMTM0MzMwMDJmYWU3MmJkZTQ3ODBkMzI1NjhkYzU4MWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TGluZUNhcChXZWJDb3JlOjpMaW5l
Q2FwKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IFdlYkNvcmU6OkRhc2hB
cnJheSYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggYzE5ZTc0MTU1N2MzMDhjOTQxZTRlZjcx
NWUzZGI0NjU5NGQxODViNi4uMmNkNzg2NWVjYTgyOWViNDU3ODBlOWZiMGU3MjQ3YTM3MTJiY2Mz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
R1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
R1dpbi5jcHAKQEAgLTE3NiwyNSArMTc2LDIyIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsCiAg
ICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsK
ICAgICBGb250Q2FzY2FkZTo6c2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0eWxlKGNnQ29udGV4
dCwgZm9udC5wbGF0Zm9ybURhdGEoKS5pc1N5c3RlbUZvbnQoKSwgZmFsc2UsIGZvbnQucGxhdGZv
cm1EYXRhKCkudXNlR0RJKCkpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBm
bG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGdyYXBoaWNzQ29u
dGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7Cisg
ICAgYXV0byBkcm9wU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LmRyb3BTaGFkb3coKTsKIAotICAg
IGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgp
ID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNo
YWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8
fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBw
ZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERy
YXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIGRyb3BTaGFkb3cuY29sb3Iu
aXNWYWxpZCgpICYmICFkcm9wU2hhZG93LmJsdXJSYWRpdXMgJiYgKCFncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRv
dykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBv
ZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxp
YXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogICAgICAgICBD
b2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yKCk7Ci0gICAgICAgIENv
bG9yIHNoYWRvd0ZpbGxDb2xvciA9IHNoYWRvd0NvbG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGll
ZEJ5KGZpbGxDb2xvci5hbHBoYUFzRmxvYXQoKSk7CisgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxD
b2xvciA9IGRyb3BTaGFkb3cuY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENv
bG9yLmFscGhhQXNGbG9hdCgpKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihzaGFkb3dGaWxsQ29sb3IpOwotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50Lngo
KSArIHNoYWRvd09mZnNldC53aWR0aCgpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBv
aW50LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRv
d3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZ
IGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAgIGZsb2F0
IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGdyYXBo
aWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAg
ZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBkcm9wU2hhZG93Lm9mZnNldC5oZWlnaHQo
KSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7
CiAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHNoYWRvd1RleHRY
LCBzaGFkb3dUZXh0WSk7CiAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMo
Y2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwogICAgICAgICBpZiAoZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpICsgZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQo
KSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2lu
dC54KCkgKyBkcm9wU2hhZG93Lm9mZnNldC53aWR0aCgpICsgZm9udC5zeW50aGV0aWNCb2xkT2Zm
c2V0KCksIHBvaW50LnkoKSArIGRyb3BTaGFkb3cub2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAg
ICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaHMsIGFk
dmFuY2VzLCBudW1HbHlwaHMpOwogICAgICAgICB9CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKQEAgLTIwOCw3ICsyMDUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
b250JiBmb250LAogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cp
OwogCiAgICAgRm9udENhc2NhZGU6OnNldEZvbnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIG9s
ZEZvbnRTbW9vdGhpbmdTdHlsZSk7CiAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjZ0NvbnRl
eHQsIHNhdmVkTWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1BhdGguY3BwCmluZGV4IDdlZDUzN2M5Mjc5Mzc3MGY0NDg4YWUyOWRmNDA3MjdkN2ViMWEz
YTkuLjYxNzhhZWIxYzg3NjM3NzIxOTVmOWU0NDc2MTBlNDkwZTc2NGY1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNjksNyArNjks
NyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6Y2FsY3VsYXRlVXBkYXRlZFN0cm9rZUJvdW5k
aW5nQm94KCkgY29uc3QKIHN0YXRpYyB2b2lkIHVzZVN0cm9rZVN0eWxlVG9GaWxsKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBncmFkaWVudCA9IGNvbnRleHQuc3Ry
b2tlR3JhZGllbnQoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50
LCBjb250ZXh0LnN0YXRlKCkuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAg
IGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5zdHJva2VHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250
ZXh0LnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqcGF0
dGVybik7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDU0Mzgx
ODJkZGU4NzYzZWJhZDM4ZjE5MmRmNzk1YWEwNjBiNjUxYmIuLjllMzc4NmUwZmRjZGI4OWZiMDY2
MjhjOGZjYzZkYzg3Yjc3YzNlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAg
LTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3Rh
dGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfTsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCku
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1h
Z2UoaXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUu
ZmlsbFBhdHRlcm4uZ2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0
YXRlKCkuc3Ryb2tlQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaGFu
ZGxlSXRlbShXVEZNb3ZlKGl0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmNwcAppbmRleCA4NTc3Y2JiZGU2ZDM5MDFkMzQ3MDc2MWVkMzBmNzlkOThlODJi
OThkLi45YmFmOWEzNWM5NzBmOWI3NTEwMzA1NmNiNWJkNzgxNmFlY2FkNzQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC0xMTcsOSArMTE3LDkg
QEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0cm9rZVRo
aWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6U2V0U3Ryb2tlVGhpY2tuZXNzKHRoaWNrbmVzcykpOwogfQogCi12b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncyBmbGFncykKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNv
cmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6U2V0U3RhdGUoRGlzcGxheUxp
c3Q6OlNldFN0YXRlIHsgc3RhdGUsIGZsYWdzIH0pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUgeyBz
dGF0ZSB9KSk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNv
cmRTZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5oCmluZGV4IDliMzNhMDY3ZmQxNmJjY2YxNDA0MmMxOTc0ZGQ2OTE5NDIy
NjI0NjguLmJlZDM2M2UwNjI0NTM1MjdmOWEwNjIwODhjZTY3N2MyYjk5MjI1ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFdlYkNvcmU6OlNSR0JB
PHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFdl
YkNvcmU6OlNSR0JBPHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldFN0cm9rZVRo
aWNrbmVzcyhmbG9hdCkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRT
ZXRMaW5lQ2FwKFdlYkNvcmU6OkxpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGlu
ZURhc2goY29uc3QgV2ViQ29yZTo6RGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihXZWJDb3JlOjpMaW5lSm9pbikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDE2NmE1
MzljNzEyYzRjNzRlZTY2ZDQ2MTY1ZGYyNGJjMTdmOWU4Yy4uNzA3MDBhMGViNmMyNjQ1ZDUzMDk1
ZjE4ZmU2OTIzNGQ4YzNhYWVmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTE4ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBHcmFw
aGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgdGlsbCB0aGV5IGFyZSBhcHBs
aWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgw
NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAzLTE3ICBKb25hdGhhbiBC
ZWRhcmQgIDxKb25XQmVkYXJkQGdtYWlsLmNvbT4KIAogICAgICAgICBjb25maWd1cmUteGNvZGUt
Zm9yLWVtYmVkZGVkLWRldmVsb3BtZW50IGZhaWxzIHdpdGggWGNvZGUgMTMuMwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRl
c3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNz
Q29udGV4dFRlc3RzQ0cuY3BwCmluZGV4IDI0NzM1ODBmMTkwZTBmZDY3NGMzNjdkYTQ3YzlmMTky
YmEyNDg1ZTQuLjIxNWMxN2M2NjU3YWVkYTZhNmUyY2QwYWUwYzljOTI2ZjNiZDgyYjAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRl
eHRUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
R3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgVEVTVChHcmFwaGlj
c0NvbnRleHRUZXN0cywgRHJhd05hdGl2ZUltYWdlRG9lc05vdExlYWtDb21wb3NpdGVPcGVyYXRv
cikKICAgICBHcmFwaGljc0NvbnRleHRDRyBjdHgoY2dDb250ZXh0LmdldCgpKTsKIAogICAgIEVY
UEVDVF9FUShjdHguY29tcG9zaXRlT3BlcmF0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3Vy
Y2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZU9wZXJhdGlvbigpLCBCbGVuZE1v
ZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpO
b3JtYWwpOwogCiAgICAgYXV0byBncmVlblBpeGVsQ0cgPSBncmVlbkltYWdlKCk7CiAgICAgYXV0
byBncmVlblBpeGVsTmF0aXZlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShncmVlblBpeGVsQ0cuZ2V0
KCkpOwpAQCAtNzEsNyArNzEsNyBAQCBURVNUKEdyYXBoaWNzQ29udGV4dFRlc3RzLCBEcmF3TmF0
aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBvc2l0ZU9wZXJhdG9yKQogICAgIEVYUEVDVF9FUShwcmlt
YXJ5RGF0YVsyXSwgMCk7CiAKICAgICBFWFBFQ1RfRVEoY3R4LmNvbXBvc2l0ZU9wZXJhdGlvbigp
LCBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zlcik7Ci0gICAgRVhQRUNUX0VRKGN0eC5ibGVu
ZE1vZGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIEVYUEVDVF9FUShjdHgu
YmxlbmRNb2RlKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDQxYTNkYWZmN2Y5NjNiOTVhZDY1YjgwYjA1MzRkY2Q2ZTAxZTZj
MWEuLmExN2IxMjZiY2NjNmNkNmI4MzY0MjVkYzQ4ZDBhMWFkODhiZGQyZDEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2Vl
cCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMvZXh0ZW50LWlu
Y2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZGlzcGxheWxpc3RzL2V4dGVu
dC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkaXNwbGF5bGlz
dHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGdwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDMtMTcgIE1hdHRlbyBGbG9yZXMgIDxtYXR0ZW9f
ZmxvcmVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyOTExMjktcjI5MTEyOCk6
IFtXSzEgRVdTXSAzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlv
bnMvYW5pbWF0aW9uLW1vZGVsL2FuaW1hdGlvbi10eXBlcy8qIHRlc3RzIGFyZSBhIGNvbnN0YW50
IHRleHQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVu
dC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3Rz
L2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IDUxMWI3YzBjNTRkMzMy
MTZiN2M2ZWFmMDQzYTc1YzE2NzY2ZDA0MjcuLmIyOWZlMmY1MzlhZDk2NmY1MDJhNTNiNzM3OTFl
ZmUxNGEwZTljYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQt
aW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlz
dHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTQsMTEgKzQsMTIgQEAK
ICAgKHkgMC4wMCkpCiAoc2F2ZSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyA1MTIpCi0g
IChzaGFkb3ctYmx1ciAxMi4wMCkKLSAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIw
KQotICAoc2hhZG93LWNvbG9yICMwMDAwMDApCi0gIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVz
IDApKQorICAoY2hhbmdlLWZsYWdzIFtkcm9wLXNoYWRvd10pCisgIChkcm9wLXNoYWRvdworICAg
IChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKKyAgICAoc2hhZG93LWJsdXIgMTIu
MDApCisgICAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQorICAgIChzaGFkb3dzLXVzZS1sZWdhY3kt
cmFkaXVzIDApKSkKIChmaWxsLWNvbXBvc2l0ZWQtcmVjdAogICAocmVjdCBhdCAoNTAsNTApIHNp
emUgMTAweDEwMCkKICAgKGNvbG9yICMwMDAwRkYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
aXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVk
LnR4dAppbmRleCAzODZlMzk0MTE4NWYwOWEzYzY4ZWM2YzJhZTg4ZGYxMWM3MGIwYTY5Li4xZGNh
YmJlN2NlMDViY2JlOTRlMjMzNjRlYmUyOWVhNzZmZjBmNTk4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jt
cy1leHBlY3RlZC50eHQKQEAgLTYsMTEgKzYsMTIgQEAKICAgKGN0bSB7bT0oKDAuODcsMC41MCko
LTAuNTAsMC44NykpIHQ9KDgxLjcwLC0xOC4zMCl9KSkKIChzYXZlKQogKHNldC1zdGF0ZQotICAo
Y2hhbmdlLWZsYWdzIDUxMikKLSAgKHNoYWRvdy1ibHVyIDEyLjAwKQotICAoc2hhZG93LW9mZnNl
dCB3aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKLSAgKHNoYWRv
d3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisgIChjaGFuZ2UtZmxhZ3MgW2Ryb3Atc2hhZG93XSkK
KyAgKGRyb3Atc2hhZG93CisgICAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQor
ICAgIChzaGFkb3ctYmx1ciAxMi4wMCkKKyAgICAoc2hhZG93LWNvbG9yICMwMDAwMDApCisgICAg
KHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpKQogKGZpbGwtY29tcG9zaXRlZC1yZWN0CiAg
IChyZWN0IGF0ICgwLDApIHNpemUgMTAweDEwMCkKICAgKGNvbG9yICMwMDAwRkYpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVk
LnR4dAppbmRleCBiYzE3YjUxMTQ5OWY4MjU2Yzk5MjkwZGFlODYxNGQ0ODk0Y2FmOWNjLi40ZGEw
NmIzYzM4NzYyZWQ3MjU2ODU0YzRlM2Y0ZTA3ODNhNjVmYjY1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKQEAg
LTgsOSArOCwxMCBAQAogICAoY29tcG9zaXRlLW9wZXJhdGlvbiBzb3VyY2Utb3ZlcikKICAgKGJs
ZW5kLW1vZGUgbm9ybWFsKSBleHRlbnQgYXQgKDAsMCkgc2l6ZSAxMDR4MTA0KQogKHNldC1zdGF0
ZQotICAoY2hhbmdlLWZsYWdzIDMyOTYwKQotICAoZmlsbC1jb2xvciAjMDAwMEZGKQotICAoc3Ry
b2tlLXN0eWxlIDApCisgIChjaGFuZ2UtZmxhZ3MgW2ZpbGwtYnJ1c2gsIHN0cm9rZS1zdHlsZSwg
c2hvdWxkLWFudGlhbGlhc10pCisgIChmaWxsLWJydXNoCisgICAgKGNvbG9yICMwMDAwRkYpKQor
ICAoc3Ryb2tlLXN0eWxlIE5PLVNUUk9LRSkKICAgKHNob3VsZC1hbnRpYWxpYXMgMCkpCiAoZHJh
dy1yZWN0CiAgIChyZWN0IGF0ICgwLDApIHNpemUgMTA0eDIpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYzlmMjFiM2RlM2MxODkxZTVmYWUxMmJmNWI2ODBj
MDhkOTViZGFkLi5iN2JmMWVkZWQ5M2FmMjFkMWZkNGRlYzQ4YzdmMTU2ZDljOGRhZmE4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsMjEgKzEsMTEgQEAK
ICMgR29vZCBzdGFydGluZyBwb2ludCBpcyB0byBsb29rIGF0IHRoZSBib3RzIG9uIHJlc3VsdHMu
d2Via2l0Lm9yZyBmaXJzdAogCiAjIEluY29ycmVjdCBzaXplCi13ZWJraXQub3JnL2IvMjM2OTA2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4t
c2l6ZS1icmVha3MtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8y
MzY5MDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvbGluZS1i
cmVhay9saW5lLWJyZWFrLWFueXdoZXJlLWFuZC13aGl0ZS1zcGFjZS0wMDMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjM2OTA2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3doaXRlLXNwYWNlL2JyZWFrLXNwYWNlcy0wMDYu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjM2OTA2IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3doaXRlLXNwYWNlL2JyZWFr
LXNwYWNlcy13aXRoLW92ZXJmbG93LXdyYXAtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBh
c3MgXQogCiAjIFRoZXJlIGlzIHRleHQgaW4vbmVhciB0aGUgYm94Ci13ZWJraXQub3JnL2IvMjM2
OTA3IGZhc3Qvc2hhZG93LWRvbS9udGgtbm9kZS1vbi1zaGFkb3ctY2hpbGQtaW52YWxpZGF0aW9u
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgZmFzdC9zaGFk
b3ctZG9tL250aC1ub2RlLW9uLXNoYWRvdy1jaGlsZC1uby1qaXQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3NoYWRvdy1kb20vbnRoLW5vZGUtb24t
c2hhZG93LWNoaWxkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MDcgZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LXN0eWxlLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjb3BpbmcvY3NzLXNjb3Bpbmctc2hhZG93LXNsb3Qtc3R5
bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBtYXRobWwv
cHJlc2VudGF0aW9uL21yb290LXByZWYtd2lkdGguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtY29udGFpbi9jb250YWluLXNpemUtbXVsdGljb2wtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLW11bHRpY29sLTAwMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4tc2l6ZS1tdWx0aWNvbC0wMDMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9jc3MtZmxleGJveC10ZXN0MS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgTWlzcGxhY2VkIHRleHQKQEAgLTM3LDYwICsyNyw3IEBA
IHdlYmtpdC5vcmcvYi8yMzY5MTIgaHR0cC93cHQvY3NzL2Nzcy1oaWdobGlnaHQtYXBpL2hpZ2hs
aWdodC10ZXh0LWRlY29yYXRpb25zLmh0CiAKICMgV3JvbmcgdGV4dCBjb2xvcgogd2Via2l0Lm9y
Zy9iLzIzNjkxMyBmYXN0L2Nzcy92YXJpYWJsZXMvdGVzdC1zdWl0ZS8wMDUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgUGFzcyBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zh
c3QvbXVsdGljb2wvZHluYW1pYy9pbnNlcnQtc3Bhbm5lci1hZnRlci1jb250ZW50Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFz
dC9tdWx0aWNvbC9keW5hbWljL2luc2VydC1zcGFubmVyLWJlZm9yZS1jb250ZW50Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFz
dC9tdWx0aWNvbC9keW5hbWljL2luc2VydC1zcGFubmVyLWFmdGVyLXNwYW5uZXItYmVmb3JlLWNv
bnRlbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBv
cnRlZC9ibGluay9mYXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2Zsb2F0LWNvbnRlbnQtYnJlYWsu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9i
bGluay9mYXN0L211bHRpY29sL3ZlcnRpY2FsLXJsL2Zsb2F0LWNvbnRlbnQtYnJlYWsuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9m
YXN0L211bHRpY29sL3RhbGwtbGluZS1pbi1zaG9ydC1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4tbGF5b3V0LXN1cHByZXNzLWJhc2VsaW5lLTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4tc2l6ZS1ibG9jay0w
MDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29udGFpbi9jb250YWluLXNpemUtYmxv
Y2stMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleGJveF9yb3dz
cGFuLW92ZXJmbG93LWF1dG9tYXRpYy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTEzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4
Ym94L2ZsZXhib3hfcm93c3Bhbi1vdmVyZmxvdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1mb250cy9maXJzdC1hdmFpbGFibGUtZm9udC0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotCi0jIE5vdCBhIGdyZWVuIGxpbmUgb24gdGhlIGxlZnQgc2lkZSBvZiBhIHllbGxvdyBzcXVh
cmUKLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVz
L3N2Zy1kb2N1bWVudC1zdHlsZXMtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDAzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1
bWVudC1zdHlsZXMtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
ZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDA1Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHls
ZXMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQt
c3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDA5Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2
Zy1kb2N1bWVudC1zdHlsZXMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDExLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9jdW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVu
dC1zdHlsZXMtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZG9j
dW1lbnQtc3R5bGVzL3N2Zy1kb2N1bWVudC1zdHlsZXMtMDEzLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5
bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMtMDAzLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1l
eHRlcm5hbC1zdHlsZXMtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMtMDA1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1z
dHlsZXMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJu
YWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMtMDA5
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVz
L3N2Zy1leHRlcm5hbC1zdHlsZXMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRlcm5hbC1zdHlsZXMtMDExLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZXh0ZXJuYWwtc3R5bGVzL3N2Zy1leHRl
cm5hbC1zdHlsZXMtMDEzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
aW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwMi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3Zn
LWlubGluZS1zdHlsZXMtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAw
NS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMv
c3ZnLWlubGluZS1zdHlsZXMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVz
LTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHls
ZXMvc3ZnLWlubGluZS1zdHlsZXMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMTEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5
bGVzLTAxMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1z
dHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDEzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQot
IyBUaGVyZSBpcyByZWQKLXdlYmtpdC5vcmcvYi8yMzY5MTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZ3JhZGllbnRUcmFuc2Zvcm0vc3ZnLWdyYWRp
ZW50VHJhbnNmb3JtLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L2dyYWRpZW50VHJhbnNmb3JtL3N2Zy1ncmFkaWVudFRyYW5zZm9ybS1jb21iaW5hdGlvbi0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9ncmFkaWVudFRyYW5zZm9y
bS9zdmctZ3JhZGllbnRUcmFuc2Zvcm0tY29tYmluYXRpb24tMDAzLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAogIyBUaGVyZSBhcmUgc21hbGwgcmVjdGFuZ2xlcyBvciBjaGFyYWN0ZXJzIGJl
bG93IG1haW4gY2hhcmFjdGVyCiB3ZWJraXQub3JnL2IvMjM2OTE2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YWx1ZXMvY2gtdW5pdC0wMTEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQpAQCAtMTAxLDE1MiArMzgsNiBAQCB3ZWJraXQub3JnL2IvMjM2OTE2IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YWx1ZXMvaWMtdW5pdC0wMTAuaAog
d2Via2l0Lm9yZy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdmFsdWVzL2ljLXVuaXQtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMzY5MTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVl
cy9pYy11bml0LTAxMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgVHJhbnNmb3JtIGZh
aWx1cmVzCi13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5z
Zm9ybS1saXN0LXNlcGFyYXRpb25zLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1saXN0LXNl
cGFyYXRpb25zLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1saXN0LXNlcGFyYXRpb25zLTAw
My5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0
LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1saXN0LXNlcGFyYXRpb25zLTAwNC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24v
c3ZnLXRyYW5zZm9ybS1saXN0LXNlcGFyYXRpb25zLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9y
bS1saXN0LXNlcGFyYXRpb25zLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1saXN0LXNlcGFy
YXRpb25zLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1saXN0LXNlcGFyYXRpb25zLTAwOC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNl
cGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1saXN0LXNlcGFyYXRpb25zLTAwOS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3Zn
LXRyYW5zZm9ybS1saXN0LXNlcGFyYXRpb25zLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1saXN0LXNlcGFyYXRpb24vc3ZnLXRyYW5zZm9ybS1s
aXN0LXNlcGFyYXRpb25zLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxl
bmd0aC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDA0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLWxlbmd0aC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwNi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1s
ZW5ndGgtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWNtLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tbGVuZ3RoLWNtLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDA1Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLWxlbmd0aC1pbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAwMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1s
ZW5ndGgtaW4tMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1pbi0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3Ro
LWluLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1wdC0w
MDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDA0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLWxlbmd0aC1wdC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0
aC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
b3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2
ZS1sZW5ndGgtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDYuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4t
cmVsYXRpdmUtbGVuZ3RoLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDA4Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmct
b3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAx
MC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxl
bmd0aC0wMTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxh
dGl2ZS1sZW5ndGgtMDE0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tcmVsYXRpdmUtbGVuZ3RoLTAxNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDE3Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3Ro
LTAxOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1v
cmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDIwLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC0wMjEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtMDIzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjQuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI2
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdp
bi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVu
Z3RoLTAyOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI5Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC0wMzAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdp
bi1yZWxhdGl2ZS1sZW5ndGgtMDMyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
MDM1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzYuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLTAzNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM4Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC0wMzkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0MC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wNDIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0My5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtMDQ0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wNDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLTA0Ni5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC1pbnZhbGlkLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0w
MDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52
YWxpZC0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA4Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtaW52YWxpZC0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDExLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAxMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi0KLSMgTXVsdGljb2wgZmFpbHVyZXMKLXdlYmtpdC5vcmcvYi8yMzY5MTkgaWV0ZXN0
Y2VudGVyL2NzczMvbXVsdGljb2x1bW4vY29sdW1uLWNvbnRhaW5pbmctYmxvY2stMDAzLmh0bSBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtYmxvY2stbm8tY2xpcC0w
MDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ibG9jay1u
by1jbGlwLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29s
LWNsaXAtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
Y2xpcC0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1j
b2x1bW5zLWludmFsaWQtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wv
bXVsdGljb2wtY29sdW1ucy1pbnZhbGlkLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLWNvbHVtbnMtdG9vbG9uZy0wMDEueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb250YWluaW5nLTAwMS54aHQgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvbnRhaW5pbmctMDAyLnhodCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY291bnQtbmVnYXRpdmUtMDAx
LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY291bnQtbmVn
YXRpdmUtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
Y291bnQtbm9uLWludGVnZXItMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGlj
b2wvbXVsdGljb2wtY291bnQtbm9uLWludGVnZXItMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY291bnQtbm9uLWludGVnZXItMDAzLnhodCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZmlsbC1hdXRvLTAwMi54aHQgWyBJ
bWFnZU9ubHlGYWlsdXJlIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZmlsbC1hdXRvLTAw
My54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWZpbGwtYXV0
by1ibG9jay1jaGlsZHJlbi0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNv
bC9tdWx0aWNvbC1maWxsLWJhbGFuY2UtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtZ2FwLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11
bHRpY29sL211bHRpY29sLWdhcC0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1nYXAtbGFyZ2UtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtZ2FwLWxhcmdlLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW11bHRpY29sL211bHRpY29sLWdhcC1uZWdhdGl2ZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1oZWlnaHQtMDAxLnhodCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtaGVpZ2h0LWJsb2NrLWNoaWxkLTAwMS54aHQg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW1hcmdpbi0wMDEueGh0
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1tYXJnaW4tMDAyLnho
dCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLTAwMy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1tYXJnaW4tY2hp
bGQtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtbmVz
dGVkLWNvbHVtbi1ydWxlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29s
L211bHRpY29sLW92ZXJmbG93aW5nLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11
bHRpY29sL211bHRpY29sLXJ1bGUtMDAzLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVs
dGljb2wvbXVsdGljb2wtcnVsZS1jb2xvci0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLWZyYWN0aW9uLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtZnJhY3Rpb24tMDAyLnhodCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1sYXJnZS0wMDEueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLXBlcmNlbnQtMDAx
LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1zYW1l
bGVuZ3RoLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29s
LXJ1bGUtc2hvcnRoYW5kLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29s
L211bHRpY29sLXNwYW4tYWxsLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLXNwYW4tYWxsLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11
bHRpY29sL211bHRpY29sLXNwYW4tYWxsLTAwMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLXNwYW4tYWxsLW1hcmdpbi0wMDEueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC1tYXJnaW4tYm90dG9tLTAwMS54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwYW4tZmxvYXQt
MDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtdGFibGUt
Y2VsbC12ZXJ0aWNhbC1hbGlnbi0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC13aWR0aC1zbWFsbC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wb3NpdGlvbi9tdWx0aWNvbC92bHItbHRyLWx0ci1pbi1tdWx0aWNvbHMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcG9zaXRpb24vbXVsdGljb2wvdnJsLWx0ci1sdHItaW4tbXVsdGlj
b2xzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyBDU1MgU2hhcGVzIGZhaWx1cmVzCiB3
ZWJraXQub3JnL2IvMjM2OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zaGFwZXMvc2hhcGUtb3V0c2lkZS9zaGFwZS1pbWFnZS9zaGFwZS1pbWFnZS0wMDIuaHRtbAog
d2Via2l0Lm9yZy9iLzIzNjkyMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3Mtc2hhcGVzL3NoYXBlLW91dHNpZGUvc2hhcGUtaW1hZ2Uvc2hhcGUtaW1hZ2UtMDAzLmh0bWwK
QEAgLTI4MiwyNSArNzMsOSBAQCB3ZWJraXQub3JnL2IvMjM2OTIyIHN5c3RlbS1wcmV2aWV3L2Jh
ZGdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KICMgTm8vYmFkIGNvbG9yZWQgYm94ZXMKIHdl
YmtpdC5vcmcvYi8yMzY5MjMgZmFzdC9jc3MvcGFpbnQtb3JkZXItc2hhZG93Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MjMgaW1wb3J0ZWQvYmxpbmsvc3ZnL3Rl
eHQvb2JiLXBhaW50c2VydmVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXRobWwvcmVsYXRpb25z
L2Nzcy1zdHlsaW5nL2NvbG9yLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTIzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wb3Np
dGlvbi9zdGlja3kvcG9zaXRpb24tc3RpY2t5LWlubGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wb3NpdGlvbi9zdGlja3kvcG9zaXRpb24tc3RpY2t5LXdyaXRpbmctbW9kZXMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFyaWFibGVzL3ZhcnMtZm9udC1zaG9ydGhhbmQt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBOby9iYWQgZ3JhZGllbnQvcGF0dGVy
bgotd2Via2l0Lm9yZy9iLzIzNjkyNCBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9saW5lYXJHcmFkaWVu
dC1iYXNpYy0wMy5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQg
aW1wb3J0ZWQvbW96aWxsYS9zdmcvcGF0dGVybi10cmFuc2Zvcm1lZC0wMS5zdmcgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9ncmFkaWVudC1m
bGlwcGVkLXN0YXJ0LWVuZC1wb2ludHMuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kLnN2ZyBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZEFs
cGhhLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3Jh
ZGllbnRzL3NwcmVhZE1ldGhvZERpYWdvbmFsLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZERpYWdvbmFsMi5zdmcg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9z
cHJlYWRNZXRob2REaWFnb25hbDMuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kRGlhZ29uYWw0LnN2ZyBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1l
dGhvZER1cGxpY2F0ZVN0b3Auc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kUmV2ZXJzZWQuc3ZnIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3RvcEFscGhhLnN2
ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvdHJhbnNmb3Jt
cy90cmFuc2Zvcm1lZC10ZXh0LWZpbGwtZ3JhZGllbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvdHJhbnNmb3Jtcy90cmFuc2Zvcm1lZC10ZXh0LWZp
bGwtcGF0dGVybi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgTWVkaWEgZmFpbHVyZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455190</attachid>
            <date>2022-03-20 00:26:46 -0700</date>
            <delta_ts>2022-03-20 02:27:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220320002645.patch</filename>
            <type>text/plain</type>
            <size>228569</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uM2RiMDAyNjQzZmVmNDI1ZWJjOGE5ZjIxM2I4ZmQ4
YWUzZGRmZTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MCBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmRyYXdFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENhaXJvOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
YWlybzo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OkdyYXBoaWNzQ29udGV4dENHKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0Q0dTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENH
OjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6c3Ry
b2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhz
UmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dJc0NsZWFyZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29u
dGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6
OmNsb25lRm9yU2F2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2NhbEJv
dW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KToKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KToKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKToKKyAgICAgICAg
KE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAg
ICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdvb2Ryb3cgIDxtYXR0
d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBzaG91bGQgYWx3YXlz
IGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2VhYWQwNmJlN2Y4Y2Vl
MDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUwMjc5NDZhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250
ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRT
dGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlBY3Rpdml0eUluTWFu
YWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4uZWJjYjUzMTdjZDdm
MzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTcx
LDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExvY2FsaXplQXhpc05h
bWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMzOWZmOGYyMjRlZjZh
ODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRlMDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1U
aW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQwZjg5Y2YxZjM0MmQ4
ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIyZWZkYzJjZWRkNTNm
YzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2NDQyNzg0NjFBMDAw
Mzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJG
NjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2NjdERjI2MEMyNjQ0
MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4Rjc1MDBEODJEMkQg
LyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyRkQzMEFDMjdFMzIx
N0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1
M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2
ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNF
QzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC0xMTQyOCw2
ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RB
bmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRkIyMzk2
MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2guY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnJ1c2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1
M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxNTIs
NiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVy
LmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oICov
LAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1l
cy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5jcHAg
Ki8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggKi8sCiAJ
CQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICov
LAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmgg
Ki8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBENEEzODEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhh
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNl
QnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0
MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYxMzUwOTI0QzlG
Q0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNjYjc4ODExN2RlNjkz
OGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVu
LCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICogbWFza1JlY3QuaGVp
Z2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgICAgICAg
ICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0g
ICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRv
d0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRyb3BTaGFkb3coKTsK
IAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwotICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0gICAgICAgICAgICBz
aGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAgICAgc2hhZG93UmVj
dC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAgICAgICAgICBzaGFk
b3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAgICAgICBjLT5jbGlw
KHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0gb2Zmc2V0OworICAg
ICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAgICAgICAgICBjLT5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBTaGFkb3dS
YWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93KGRyb3BTaGFkb3cu
b2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29sb3IsIFNoYWRvd1Jh
ZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQogICAgICAgICAgICAg
ICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZhNGNiMmEyLi4xYmQ2
NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJldHVybiBtX3ByaW1h
cnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lkIEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2
b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0ZVN0YXRlKCkgaW5z
dGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAgIC8vIGFyZSBhbHNv
IGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3RhdGUsIHNvIHRoYXQg
Y29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0aGF0IHJlYWRzIGZy
b20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3ByaW1hcnlDb250ZXh0
LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0
ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShz
dGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBz
dGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0MmI3Mzc3NzI3YzEx
YTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQyZTM2N2RkMzdmMDIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNh
dGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMjVhM2QzZmU4
NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgyMmYxMTNkYmJiMDYx
NDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwxNSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiwgRm9udFNtb290
aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIAotICAgIHZv
aWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0
dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9y
JiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKKyAgICB2b2lkIHVw
ZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQgdXBkYXRlU3Ryb2tl
QnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsK
ICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9Owot
ICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9h
dCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiwgU2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJ
TikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTExMSwyNyArMTExLDEz
IEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxUZXh0TWF0cml4Owog
CiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsKLSAgICAgICAgICAg
IENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAg
ICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgICAg
ICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0gICAgICAgIFN0eWxl
IGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAgICAgICAgU291cmNl
QnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaDsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hhZG93U3RhdGUgewot
ICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZsb2F0IGJsdXIgeyAw
IH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJvb2wgaWdub3JlVHJh
bnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRvd1N0YXRlIHNoYWRv
dzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBib29sIGlnbm9yZVRy
YW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmlnaW5hbFN0YXRlOwot
ICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJjOGEzZTg2My4uMDMx
MDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00Myw2
ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hh
bmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQorCiBHcmFwaGljc0Nv
bnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0YWNrLmlzRW1wdHko
KSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQog
ICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnVw
ZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7Ci0gICAgbV9zdGF0
ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwg
ZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0RHJhd2luZ1N0YXRl
KTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAtOTMsODQgKzk4LDYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNN
b2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Ci0g
ICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0g
Y29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVzTW9kZTsKLSAgICBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdl
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKLXsKLSAgICBtX3N0
YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9
IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFk
b3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAgICBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQot
Ym9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQm
IGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBtX3N0YXRlLnNoYWRv
d09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAgIGNvbG9yID0gbV9z
dGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51
bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYm
IHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBX
VEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0
ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwot
ICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGll
bnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwot
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYg
Z3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3Jh
ZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5maWxs
UGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklYTUU6IGFsc28gZmls
bCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3VudDsKQEAgLTQ5MSwx
MyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRGaWxsQ29sb3Iob2xk
RmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJh
dGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hh
bmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91bmRh
cmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBT
dHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGlu
IDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0IGFyaXRobWV0aWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZkM2ZlZi4uMzYzOTFl
NGIyYjZjNmRhYjYyMzU3MzAzZjliNGE1YmUyMzRiZjM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY0LDkgKzY0LDgg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdy
YXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmID0g
eyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtODAsODMgKzc5LDkwIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRleHQgU3RhdGUK
IAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0KLSAgICBmbG9hdCBz
dHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsg
fQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRl
LnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VTdHlsZSBzdHJva2VT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBjb25zdCBD
b2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+
JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBm
aWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgp
OyB9CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKTsgfQorICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5maWxsQnJ1c2gucGF0dGVybigpOyB9CisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291
cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNoKTsgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNl
dEZpbGxHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+
JiYgcGF0dGVybikgeyBtX3N0YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
dHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgPSB7
IH0pOwotICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KLQotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1
bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9CiAgICAg
V2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9Cisg
ICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxS
dWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKworICAgIGNvbnN0IENv
bG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guY29s
b3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
c3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgUGF0dGVybiogc3Ry
b2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsg
bV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5z
ZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9p
ZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRTdHJva2VHcmFk
aWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKSB7IG1fc3RhdGUuc2V0U3Ryb2tlUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENv
bG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAgICB2b2lkIHNldFN0
cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRTdHJva2VUaGlja25l
c3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwotICAgIFBhdHRlcm4q
IGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsg
fQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5z
dHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUp
IHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0KKyAgICBmbG9hdCBzaGFkb3dCbHVyKCkg
Y29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7IH0KKyAgICBjb25zdCBDb2xv
ciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuY29sb3I7IH0KKyAg
ICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBtX3N0
YXRlLnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXJS
YWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNN
b2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCkgeyBzZXREcm9wU2hhZG93KHsgb2Zmc2V0
LCBibHVyUmFkaXVzLCBjb2xvciwgc2hhZG93UmFkaXVzTW9kZSB9KTsgfQorICAgIHZvaWQgY2xl
YXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3coeyB9KTsgfQorCisgICAgYm9vbCBoYXNWaXNpYmxl
U2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJsZSgpOyB9CisgICAg
Ym9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1
cnJlZCgpOyB9CisgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93
KCkuaGFzT3V0c2V0cygpOyB9CisKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21wb3NpdGVNb2RlKCku
b3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGNv
bXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29t
cG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9zaXRlTW9kZShjb21w
b3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJsZW5kTW9kZSBibGVu
ZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2RlKHsgb3BlcmF0aW9u
LCBibGVuZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRp
ZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7Ci0gICAg
R3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRp
ZW50LmdldCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFs
cGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRlLnNldEFscGhh
KGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IGRpZFVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
dGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdp
bmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2Rl
KHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgCisgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIHZvaWQgc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShp
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3Rh
dGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQogICAg
IGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRp
YWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlh
cykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29s
IHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSBzaG91bGRT
bW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9CisgICAgdm9pZCBz
ZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0
U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRp
b24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhz
LgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBh
IGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBt
X3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMo
Ym9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsgfQotICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAgIHZvaWQgc2V0QWxw
aGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9Ci0gICAgZmxvYXQg
YWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0K
LSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBt
X3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5j
ZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNr
ID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBib29sIGRyYXdMdW1p
bmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsgfQot
Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkg
eyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOyB9Ci0gICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hhZG93
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgU2hhZG93UmFkaXVz
TW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0U2hh
ZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAgIGJvb2wgaGFzVmlz
aWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWaXNpYmxl
KCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFk
b3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRo
KCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAgYm9vbCBoYXNCbHVy
cmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUu
c2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVt
aW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VN
YXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBl
YXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBw
ZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVh
cmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIG1lcmdlU3RhdGVDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpIHsgbV9zdGF0ZS5tZXJnZUNoYW5nZXMo
c3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdy
YXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdhdGUgY2hhbmdlcwog
ICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAgdmlydHVhbCB2b2lk
IGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBy
ZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkzNTQwODY2NGMyNzZm
Y2UzZDU5OWU2MTRmOWFmMy4uMTUzYTFiZjZhMzFlZjJhNzMxNjVlZTQ0YTA1NzdhNTcwN2I5N2Y2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxNDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgogCi0jaW5jbHVkZSAi
R3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJQYXR0
ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoZmxhZywgcHJvcGVy
dHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCi0gICAg
ICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZyk7Ci0KLUdyYXBo
aWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAgOiBzaG91bGRBbnRp
YWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0gICAgLCBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdz
KQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4
dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRl
eHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUo
R3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGUm
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci0KLXZvaWQg
R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdz
KQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSBj
b25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9OwotICAgIGlm
IChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAgICAgICAgc3Ryb2tlQ29sb3Ig
PSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJv
a2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZVBhdHRlcm47
Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFn
cy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZpbGxDb2xvciA9IHN0YXRlLmZp
bGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdyYWRpZW50OwotICAg
ICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChm
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAg
ICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgICAgIHNoYWRvd0Js
dXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dDb2xvciA9IHN0YXRlLnNoYWRv
d0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3RhdGUuc2hhZG93UmFkaXVzTW9k
ZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRl
LnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdGV4dERyYXdpbmdNb2Rl
ID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHN0cm9rZVN0eWxl
ID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5m
aWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIHByaW1pdGl2ZUNoYW5n
ZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENo
YW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0ZS5hbHBoYTsKKyAg
ICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgcHJpbWl0aXZlQ2hhbmdlRmxhZ3Mp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAgICAgIGNvbXBvc2l0ZU9wZXJh
dG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGJsZW5kTW9kZSA9IHN0YXRl
LmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6
U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1ByaW1pdGl2ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHNob3VsZEFudGlhbGlhcyA9IHN0YXRl
LnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpG
aWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gc3RhdGUu
c2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0g
ICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0g
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAor
dm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0
ZT4mIGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5nZSA9IFsmXShDaGFu
Z2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAg
ICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8IHRoaXMtPipwcm9w
ZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRo
aXMtPipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hhbmdlRmxhZ3Muc2V0
KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVy
dHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmlsbEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJv
a2VUaGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
VGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisKKyAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6
OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpk
cm9wU2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRB
bnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBw
ZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOwog
I2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQYXR0ZXJuKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFuZ2UsIGZpbGxHcmFk
aWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBhdHRlcm5DaGFuZ2Us
IGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0YXRlLnNoYWRvd09m
ZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93
Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0YXRlLnNoYWRvd0Nv
bG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25lc3MpOwotICAgIENI
RUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5nZSwgdGV4dERyYXdp
bmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VDb2xvckNoYW5n
ZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxDb2xv
ckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJv
a2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJP
UEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAgICAgICAmJiAobV9z
dGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciB8fCBtX3N0
YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAgIGNoYW5nZUZsYWdz
LmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKLSAg
ICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFu
Z2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZEFudGlh
bGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9Q
RVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9udHMpOwotICAgIENI
RUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5n
ZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdMdW1pbmFuY2VNYXNr
Q2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5j
ZSk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
KSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4KKyAgICBhbHBoYSA9IDE7CiAjZW5kaWYK
LQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorc3RhdGljIGNvbnN0
IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5n
ZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgZmxhZ3MpOwotCi0gICAgYXV0
byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5z
QW55KHN0cm9rZUZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoc3Ryb2tlRmxh
Z3MpOwotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
Q29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5j
b250YWluc0FueShmaWxsRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShmaWxs
RmxhZ3MpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdGF0ZUNoYW5nZU5hbWVzW10g
PSB7CisgICAgICAgICJmaWxsLWJydXNoIiwKKyAgICAgICAgImZpbGwtcnVsZSIsCisKKyAgICAg
ICAgInN0cm9rZS1icnVzaCIsCisgICAgICAgICJzdHJva2UtdGhpY2tuZXNzIiwKKyAgICAgICAg
InN0cm9rZS1zdHlsZSIsCisKKyAgICAgICAgImNvbXBvc2l0ZS1tb2RlIiwKKyAgICAgICAgImRy
b3Atc2hhZG93IiwKKworICAgICAgICAiYWxwaGEiLAorICAgICAgICAiaW1hZ2UtaW50ZXJwb2xh
dGlvbi1xdWFsaXR5IiwKKyAgICAgICAgInRleHQtZHJhd2luZy1tb2RlIiwKKworICAgICAgICAi
c2hvdWxkLWFudGlhbGlhcyIsCisgICAgICAgICJzaG91bGQtc21vb3RoLWZvbnRzIiwKKyAgICAg
ICAgInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsCisgICAgICAgICJzaGFkb3dzLWln
bm9yZS10cmFuc2Zvcm1zIiwKKyAgICAgICAgImRyYXctbHVtaW5hbmNlLW1hc2siCisjaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAgICAgLCAidXNlLWRhcmstYXBwZWFyYW5jZSIK
KyNlbmRpZgorICAgIH07CiAKLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MgPSB7IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnko
Y29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGNv
bXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworICAgIHVuc2lnbmVkIG1hc2sgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY2hhbmdlKTsKKyAgICBBU1NFUlQoISgobWFzayAtIDEpICYgbWFzaykpOwogCi0g
ICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGxvZzIobWFzaykpOworICAgIHJldHVybiBzdGF0ZUNoYW5nZU5hbWVz
W2luZGV4XTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorVGV4dFN0cmVhbSYgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVu
dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hh
bmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBh
dHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRp
ZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJu
KCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9zdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaGFk
b3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFk
b3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRlLnN0cm9rZVRoaWNr
bmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRUZXh0RHJh
d2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNvbG9yKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0YXRlLmZpbGxDb2xv
cik7CisgICAgYXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250
ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBuYW1lKSB7CisgICAgICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KG5hbWUsIHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7CiAKLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOworICAgIGR1
bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwgICAgICAgICAgICAgICAg
ICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7CiAKLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGR1bXAoQ2hhbmdlOjpT
dHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJv
a2VCcnVzaCwgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlN0cm9rZUJy
dXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgc3RhdGVD
aGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgZHVtcChDaGFuZ2U6OlN0
cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9r
ZVN0eWxlLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlU3R5
bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1vZGUpOworICAgIGR1
bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFu
Z2U6OkNvbXBvc2l0ZU1vZGUpKTsKKyAgICBkdW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgICAgICAgICAg
ICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcm9wU2hhZG93KSk7CiAKLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFs
aWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMobV9zdGF0ZS5z
aG91bGRBbnRpYWxpYXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4
dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFu
Y2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
bV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1wKENoYW5nZTo6QWxw
aGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpBbHBoYSkpOwor
ICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgIHN0YXRlQ2hhbmdlTmFt
ZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICBkdW1wKENoYW5nZTo6
VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4
dERyYXdpbmdNb2RlLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpUZXh0RHJh
d2luZ01vZGUpKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAg
IHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpOworICAgIGR1bXAoQ2hh
bmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTbW9vdGhGb250cywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlNo
b3VsZFNtb290aEZvbnRzKSk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cywgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KSk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgc3RhdGVDaGFu
Z2VOYW1lKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKTsKKyAgICBkdW1wKENoYW5n
ZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpEcmF3
THVtaW5hbmNlTWFzaykpOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBwZWFyYW5jZShtX3N0
YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNlRGFya0FwcGVhcmFu
Y2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2Us
ICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSkpOwog
I2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBjaGFuZ2UpCiB7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZsYWdzLnRvUmF3KCkp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2Ut
Z3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUu
c3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCkpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXBhdHRlcm4i
LCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0JsdXIpOwotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNoYWRvd09mZnNldCk7
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9zdGF0ZS5zaGFkb3dD
b2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1
cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kp
OwotICAgIH0KLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdN
b2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIs
IG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0YXRlLnN0cm9rZUNvbG9y
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtY29sb3Ii
LCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBtX3N0YXRlLmZpbGxS
dWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0
YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIG1f
c3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7Ci0K
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1z
bW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJw
aXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0KLSNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFy
a0FwcGVhcmFuY2UpOwotI2VuZGlmCisgICAgdHMgPDwgc3RhdGVDaGFuZ2VOYW1lKGNoYW5nZSk7
CisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7Ci0gICAgcmV0dXJuIHRz
OworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1OTU5
NTk2Ny4uYTkyMTI3OWEwODVkMWQyNzI4NWE2YjE3YmM0Y2IxMDM0M2FjODdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRT
dGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUJydXNo
LmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgR3Jh
ZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewot
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhpY3ND
b250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90IHsKLSAgICAgICAg
U3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAotICAgICAg
ICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCi0gICAg
ICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKLSAg
ICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAot
ICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQs
Ci0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
NSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSAgICAgICAg
ICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgICAgICAg
ICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2UgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01vZGVDaGFuZ2UgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRpYWxpYXNDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRTbW9vdGhGb250c0No
YW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBEcmF3THVtaW5hbmNl
TWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAgICBJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAgIGVudW0gY2xhc3Mg
Q2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAgICAgICAgICAgICAg
PSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwK
KworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgICAg
IFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgU3Ryb2tlU3R5
bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBvc2l0ZU1vZGUgICAg
ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAgICAgICAgICAgICAg
ID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
NywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAg
ICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAgICAgICAgU2hvdWxk
QW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hvdWxkU21vb3RoRm9u
dHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgICAgID0gMSA8
PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0gMSA8PCAxNCwKICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VEYXJrQXBwZWFyYW5j
ZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1c2luZyBTdGF0ZUNo
YW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hhbmdlRmxhZ3MgPSBP
cHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2Vz
KCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdl
cygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0
IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0Rmls
bENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVz
aCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2
b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdyYWRpZW50KFdURk1v
dmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZp
bGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRl
cm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGNoYW5nZUZsYWdz
LmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSwg
ZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OwotICAg
IFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2go
Y29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1
c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNoKTsgfQorICAgIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIHsgY29s
b3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFk
aWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBzdHJva2VCcnVz
aC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VG
bGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQYXR0ZXJuKFdURk1v
dmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKwor
ICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgeyBzZXRQ
cm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVN0
eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tl
U3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0cm9rZVN0eWxlKTsg
fQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9k
ZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2b2lkIHNldERyb3BT
aGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgZHJvcFNoYWRv
dyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9CisgICAg
dm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAgdm9pZCBzZXRUZXh0
RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRl
eHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9pZCBzZXRTaG91bGRB
bnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91
bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzLCBzaG91
bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3Vs
ZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3VsZFNtb290aEZvbnRz
KTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorICAgIHZvaWQgc2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBz
ZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1h
c2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9CisjaWYg
SEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNl
KGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSwgdXNlRGFy
a0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IGZpbGxH
cmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47CisgICAgYm9vbCBoYXNP
bmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRl
eHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZGlk
QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsK
KyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAg
ICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIGZpbGxDb2xv
ciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0
ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBzdHJva2VHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtOwotICAgIEFmZmluZVRyYW5zZm9ybSBmaWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybTsKKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKIAorICAgIFNvdXJjZUJydXNo
IGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2lu
ZFJ1bGU6Ok5vblplcm8gfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaCB7IENv
bG9yOjpibGFjayB9OwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKLSAgICBmbG9h
dCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9OwotCiAgICAgU3Ryb2tl
U3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIFdpbmRSdWxlIGZpbGxSdWxl
IHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIgfTsK
LSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICAKKyAg
ICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNl
T3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRyb3BTaGFkb3c7Cisg
ICAgCisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07
Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9k
ZTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7
IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAx
OwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wgc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDog
MTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29sIHNob3VsZEFudGlh
bGlhcyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsgdHJ1ZSB9OworICAg
IGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1h
c2sgeyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1
c2VEYXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNl
IH07CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMt
Pipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+
KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChjaGFuZ2UpOworICAg
IH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCi0g
ICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAodGhpcy0+KnByb3Bl
cnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLT4qcHJvcGVy
dHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAg
ICAgfQorfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBjb25zdDsKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZSA9IFsmXShDaGFuZ2UgY2hh
bmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYg
KGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICBlbmNvZGVyIDw8IHRo
aXMtPipwcm9wZXJ0eTsKKyAgICB9OwogCi0gICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
OwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0gICAgCi0gICAgdm9p
ZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZXIgPDwgY2hhbmdlRmxh
Z3M7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OworICAgIGVuY29k
ZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKworICAg
IGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhp
Y2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKworICAgIGVuY29kZShD
aGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJvcFNoYWRvdywgICAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKwor
ICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisg
ICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29kZShDaGFuZ2U6OlNo
b3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hv
dWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAg
ICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQorICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworI2VuZGlm
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29u
dGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBD
aGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAg
ICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUg
c3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRl
eHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm9w
ZXJ0eVR5cGU+IHZhbHVlOworICAgICAgICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAo
IXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN0YXRlLipwcm9w
ZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKIAotV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFncz4gY2hhbmdlRmxh
Z3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNoYW5nZUZsYWdzKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
c3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZp
bGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1
c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAo
IWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0
cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VT
dHlsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hh
bmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c2hvdWxkU21vb3RoRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSk7CitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKQEAgLTE0MywyOCArMjU5LDI3IEBAIG5h
bWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKICAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlR3JhZGllbnRD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQ29sb3JD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
LAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYUNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZUNoYW5nZSwKLSAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdl
LAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRT
bW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5n
ZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlLAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlLAorCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3cs
CisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGEs
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3
aW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwKKworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsCisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzawogI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKKyAgICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZQogI2VuZGlmCiAgICAgPjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
Y3BwCmluZGV4IDE1ZGYxZGZkYjZmM2ExNmFkNWVhZjY0NzI2MWZjZmM0YjdhOTNhYjQuLjEyZTRm
ZmJmMDg0NzM5MzkzOGQxMjUxOGJjYzhlZTM3NTY0NzM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBAIC0xMzYsNiArMTM2
LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCiAgICAgcmV0dXJuIHRzIDw8IGJsZW5kTW9kZU5hbWUoYmxlbmRNb2RlKTsKIH0K
IAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29tcG9zaXRlTW9kZSBj
b21wb3NpdGVNb2RlKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlv
biIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5k
LW1vZGUiLCBjb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgcmV0dXJuIHRzOworfQorCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcm9wU2hhZG93JiBk
cm9wU2hhZG93KQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LW9mZnNldCIsIGRyb3BT
aGFkb3cub2Zmc2V0KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1ibHVyIiwgZHJvcFNo
YWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1jb2xvciIsIGRy
b3BTaGFkb3cuY29sb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5
LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdh
Y3kpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpCit7Cisg
ICAgc3dpdGNoIChpbnRlcnBvbGF0aW9uUXVhbGl0eSkgeworICAgIGNhc2UgSW50ZXJwb2xhdGlv
blF1YWxpdHk6OkRlZmF1bHQ6CisgICAgICAgIHRzIDw8ICJERUZBVUxUIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZToKKyAg
ICAgICAgdHMgPDwgIkRPLU5PVC1JTlRFUlBPTEFURSI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkxvdzoKKyAgICAgICAgdHMgPDwgIkxPVyI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6Ok1lZGl1bToKKyAgICAg
ICAgdHMgPDwgIk1FRElVTSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlv
blF1YWxpdHk6OkhpZ2g6CisgICAgICAgIHRzIDw8ICJIRUlHSCI7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIFdpbmRSdWxlIHJ1bGUpCiB7CiAgICAgc3dpdGNoIChydWxlKSB7CkBAIC0xODIs
NCArMjIwLDQyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIExpbmVK
b2luIGpvaW5TdHlsZSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQoreworICAgIHN3aXRj
aCAoc3Ryb2tlU3R5bGUpIHsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpOb1N0cm9rZToKKyAgICAg
ICAgdHMgPDwgIk5PLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5
bGU6OlNvbGlkU3Ryb2tlOgorICAgICAgICB0cyA8PCAiU09MSUQtU1RST0tFIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG90dGVkU3Ryb2tlOgorICAgICAgICB0cyA8
PCAiRE9UVEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5bGU6
OkRhc2hlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRBU0hFRC1TVFJPS0UiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2U6CisgICAgICAgIHRzIDw8
ICJET1VCTEUtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6
V2F2eVN0cm9rZToKKyAgICAgICAgdHMgPDwgIldBVlktU1RST0tFIjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgVGV4dERyYXdpbmdNb2RlIHRleHREcmF3aW5nTW9kZSkKK3sKKyAgICBzd2l0
Y2ggKHRleHREcmF3aW5nTW9kZSkgeworICAgIGNhc2UgVGV4dERyYXdpbmdNb2RlOjpGaWxsOgor
ICAgICAgICB0cyA8PCAiRklMTCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dERyYXdp
bmdNb2RlOjpTdHJva2U6CisgICAgICAgIHRzIDw8ICJTVFJPS0UiOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKaW5kZXgg
ZGVjNDM0NzAyY2Y3NmE4OWZhODY1MzBjMzM3NmQ4YmFjNWQ5Y2E5ZS4uMzcyOTc4MzFhMmJmMzQ2
OGNhZWM4ZjUyMDBmMDQ3ODA3NjY2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5j
bHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgpAQCAtNzQsNiArNzYsNDIgQEAgZW51bSBjbGFzcyBCbGVuZE1vZGUgOiB1aW50
OF90IHsKICAgICBQbHVzTGlnaHRlcgogfTsKIAorc3RydWN0IENvbXBvc2l0ZU1vZGUgeworICAg
IENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbjsKKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbXBvc2l0ZU1vZGUmIG90aGVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbiA9PSBvdGhlci5vcGVyYXRpb24gJiYgYmxlbmRNb2Rl
ID09IG90aGVyLmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gZGVjb2RlKERlY29kZXImKTsK
K307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbXBvc2l0ZU1vZGU6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb3BlcmF0aW9uOwor
ICAgIGVuY29kZXIgPDwgYmxlbmRNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBDb21wb3NpdGVNb2RlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBvcGVy
YXRpb247CisgICAgZGVjb2RlciA+PiBvcGVyYXRpb247CisgICAgaWYgKCFvcGVyYXRpb24pCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9k
ZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOworICAgIGlmICghYmxlbmRN
b2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqb3Bl
cmF0aW9uLCAqYmxlbmRNb2RlIH0gfTsKK30KKwogc3RydWN0IERvY3VtZW50TWFya2VyTGluZVN0
eWxlIHsKICAgICBlbnVtIGNsYXNzIE1vZGUgOiB1aW50OF90IHsKICAgICAgICAgVGV4dENoZWNr
aW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKQEAgLTExMSw2ICsxNDksNjcgQEAg
c3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGU6OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgKm1vZGUsICpzaG91bGRVc2VE
YXJrQXBwZWFyYW5jZSB9IH07CiB9CiAKKy8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMg
dXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8gSXQgaGFzIGRpZmZl
cmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01v
ZGUgOiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKworc3RydWN0IERyb3BT
aGFkb3cgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1clJhZGl1cyB7IDAg
fTsKKyAgICBDb2xvciBjb2xvcjsKKyAgICBTaGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUgeyBT
aGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGNvbG9yLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBpc0JsdXJyZWQoKSBjb25z
dCB7IHJldHVybiBpc1Zpc2libGUoKSAmJiBibHVyUmFkaXVzOyB9CisgICAgYm9vbCBoYXNPdXRz
ZXRzKCkgY29uc3QgeyByZXR1cm4gaXNCbHVycmVkKCkgfHwgKGlzVmlzaWJsZSgpICYmICFvZmZz
ZXQuaXNaZXJvKCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRHJvcFNoYWRvdyYgYSwgY29uc3QgRHJvcFNoYWRvdyYgYikK
K3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5vZmZzZXQgJiYgYS5ibHVyUmFkaXVzID09IGIu
Ymx1clJhZGl1cyAmJiBhLmNvbG9yID09IGIuY29sb3IgJiYgYS5yYWRpdXNNb2RlID09IGIucmFk
aXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJvcFNoYWRvdzo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBvZmZzZXQ7
CisgICAgZW5jb2RlciA8PCBibHVyUmFkaXVzOworICAgIGVuY29kZXIgPDwgY29sb3I7CisgICAg
ZW5jb2RlciA8PCByYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxEcm9wU2hhZG93PiBEcm9wU2hhZG93OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb2Zmc2V0OworICAgIGRlY29kZXIg
Pj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYmx1clJhZGl1czsKKyAgICBkZWNvZGVyID4+
IGJsdXJSYWRpdXM7CisgICAgaWYgKCFibHVyUmFkaXVzKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+
PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiByYWRpdXNNb2RlOworICAgIGRl
Y29kZXIgPj4gcmFkaXVzTW9kZTsKKyAgICBpZiAoIXJhZGl1c01vZGUpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvZmZzZXQsICpibHVyUmFkaXVzLCAq
Y29sb3IsICpyYWRpdXNNb2RlIH0gfTsKK30KKwogZW51bSBjbGFzcyBHcmFkaWVudFNwcmVhZE1l
dGhvZCA6IHVpbnQ4X3QgewogICAgIFBhZCwKICAgICBSZWZsZWN0LApAQCAtMTU4LDEzICsyNTcs
NiBAQCBlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3QgewogfTsKIHVzaW5nIFRl
eHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9kZT47CiAKLS8vIExl
Z2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1i
b3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHgu
Ci1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKLSAgICBEZWZhdWx0LAotICAg
IExlZ2FjeQotfTsKLQogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhhYmV0aWNUZXh0QmFz
ZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMTg5LDkgKzI4MSwxNCBAQCBib29sIHBh
cnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpDb21w
b3NpdGVPcGVyYXRvciYsCiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdlYkNvcmU6
OkNvbXBvc2l0ZU9wZXJhdG9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29tcG9zaXRlTW9kZSk7
CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgRHJvcFNoYWRvdyYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEludGVycG9sYXRpb25RdWFsaXR5KTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBMaW5lQ2FwKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3Ryb2tlU3R5bGUpOworV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRE
cmF3aW5nTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaAppbmRleCBiNjIzNjc4ODBlM2U1MzU0YjYxNzExMzQ3YzlhMTFiNDIyNDY4ODVl
Li42YzMzMzM5NjI3MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdJbWFnZXNX
aXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlv
blJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlkYXRpbmdJbWFnZXNX
aXRoQXN5bmNEZWNvZGVzOyB9CiAgICAgYm9vbCBkZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludElu
dmFsaWRhdGlvblJlYXNvbnM6OkRldGVjdGluZ0NvbnRlbnRmdWxQYWludDsgfQogCi0gICAgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFVwZGF0
ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWwgeyB9CiAKICNpZiBVU0UoQ0cpCiAg
ICAgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKSBmaW5hbCB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggYmIxMzhi
NTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZS4uOTAyNGY1ZDFhYmZjZTM4MDgxODNh
M2IyMzFmYmNlMGZmYjJmZjQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFNoYWRvd0JsdXI6OlNo
YWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
LCBjb25zdCBDCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQogCi1TaGFkb3dCbHVy
OjpTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG1f
Y29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2JsdXJSYWRpdXMoc3RhdGUuc2hhZG93
Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIG1fb2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNl
dCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IERyb3BTaGFkb3cmIGRyb3BT
aGFkb3csIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgOiBtX2NvbG9yKGRyb3BT
aGFkb3cuY29sb3IpCisgICAgLCBtX2JsdXJSYWRpdXMoZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBk
cm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBtX29mZnNldChkcm9wU2hhZG93Lm9mZnNldCkK
KyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
CiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENvcmUgR3JhcGhpY3MgaW5jb3JyZWN0bHkgcmVuZGVy
cyBzaGFkb3dzIHdpdGggcmFkaXVzID4gOHB4ICg8cmRhcjovL3Byb2JsZW0vODEwMzQ0Mj4pLAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoaXMgYnVnZ3kgYmVoYXZpb3IgZm9yIGNh
bnZhcyBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotICAgIGlmIChzdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgewotICAgICAgICBmbG9hdCBzaGFkb3dC
bHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7CisgICAgaWYgKGRy
b3BTaGFkb3cucmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpIHsKKyAgICAg
ICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGRyb3BTaGFkb3cuYmx1
clJhZGl1cyk7CiAgICAgICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBz
aGFkb3dCbHVyKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAxNGZkODNlZGUxYTFiYWNmMTc3ZjMzMWVjYWQxYTQz
MDI5M2Y2MDNhLi44ZWZkNjM3N2FhZWJlOTgzZWUzYWY1ODYxMzA5MTBiZTY2MTc3MTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0Owotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOworc3Ry
dWN0IERyb3BTaGFkb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgU2hhZG93Qmx1ciB7
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd0JsdXIoKTsKICAgICBTaGFk
b3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwg
Y29uc3QgQ29sb3ImLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwotICAg
IFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICBTaGFkb3dCbHVy
KGNvbnN0IERyb3BTaGFkb3cmLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2Up
OwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxv
YXRTaXplJiAsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVz
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTJlZjk0MjQwZDZhYjk1ZGYzZTUwMzdkYWRjZjZhNGUwNzM1MjQzOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJy
dXNoLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCcnVz
aC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUJydXNoOjpTb3VyY2VCcnVzaChj
b25zdCBDb2xvciYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgYnJ1c2gpCisgICAgOiBt
X2NvbG9yKGNvbG9yKQorICAgICwgbV9icnVzaChXVEZNb3ZlKGJydXNoKSkKK3sKK30KKworY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBTb3VyY2VCcnVzaDo6Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
IGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFmZmluZVRyYW5zZm9ybT4gaWRl
bnRpdHk7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gaWRlbnRpdHkuZ2V0KCk7
CisKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVzaDo6TG9naWNhbEdy
YWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3JhZGllbnQtPnNwYWNl
VHJhbnNmb3JtOworCisgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworfQorCitHcmFkaWVudCog
U291cmNlQnJ1c2g6OmdyYWRpZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnJ1c2gpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBncmFkaWVudCA9IHN0ZDo6Z2V0X2lm
PEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkpCisgICAgICAgIHJldHVy
biBncmFkaWVudC0+Z3JhZGllbnQucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bh
dHRlcm4qIFNvdXJjZUJydXNoOjpwYXR0ZXJuKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnJ1c2gp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBwYXR0ZXJuID0gc3RkOjpn
ZXRfaWY8UmVmPFBhdHRlcm4+PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gcGF0
dGVybi0+cHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgU291cmNlQnJ1c2g6
OnNldEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBzcGFjZVRyYW5zZm9ybSkKK3sKKyAgICBtX2JydXNoID0geyBCcnVzaDo6TG9naWNhbEdy
YWRpZW50IHsgV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtIH0gfTsKK30KKwordm9p
ZCBTb3VyY2VCcnVzaDo6c2V0UGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQoreworICAg
IG1fYnJ1c2ggPSB7IFdURk1vdmUocGF0dGVybikgfTsKK30KKworV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpCit7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGJydXNoLmNvbG9yKCkpOworCisgICAgaWYgKGF1
dG8gZ3JhZGllbnQgPSBicnVzaC5ncmFkaWVudCgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImdyYWRpZW50IiwgZ3JhZGllbnQpOworCisgICAgaWYgKGF1dG8gcGF0dGVybiA9IGJydXNoLnBh
dHRlcm4oKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuIiwgcGF0dGVybik7CisK
KyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5Yjlm
YWU1NDk0MzQ5ZGI1NWFlNTMzYzViM2EwZjlmYTk1NTIyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCkBAIC0wLDAgKzEs
MTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJHcmFkaWVudC5oIgor
I2luY2x1ZGUgIlBhdHRlcm4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb3Vy
Y2VCcnVzaCB7CitwdWJsaWM6CisgICAgc3RydWN0IEJydXNoIHsKKyAgICAgICAgc3RydWN0IExv
Z2ljYWxHcmFkaWVudCB7CisgICAgICAgICAgICBSZWY8R3JhZGllbnQ+IGdyYWRpZW50OworICAg
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNwYWNlVHJhbnNmb3JtOworCisgICAgICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxMb2dpY2FsR3JhZGllbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RkOjp2YXJpYW50PExvZ2ljYWxHcmFkaWVudCwgUmVmPFBhdHRlcm4+PiBicnVzaDsKKwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBTb3VyY2VCcnVz
aCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCcnVzaChjb25zdCBDb2xv
ciYsIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiYgPSBzdGQ6Om51bGxvcHQpOworCisgICAgY29uc3Qg
Q29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIHZvaWQgc2V0Q29s
b3IoY29uc3QgQ29sb3IgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CisKKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPEJydXNoPiYgYnJ1c2goKSBjb25zdCB7IHJldHVybiBtX2JydXNoOyB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3Q7CisgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEdy
YWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5z
Zm9ybSA9IHsgfSk7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKKworICAg
IGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiAhbV9icnVzaCAmJiBtX2NvbG9yLnRy
eUdldEFzU1JHQkFCeXRlcygpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZh
dGU6CisgICAgQ29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIHN0ZDo6b3B0aW9u
YWw8QnJ1c2g+IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNv
dXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBTb3VyY2VCcnVzaDo6
QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5ncmFkaWVudC5wdHIo
KSA9PSBiLmdyYWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0gYi5zcGFjZVRyYW5z
Zm9ybTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaDo6QnJ1
c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihhLmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6
TG9naWNhbEdyYWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiR3Jh
ZGllbnQgPSBzdGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4o
JmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQgPT0gKmJHcmFkaWVu
dDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChj
b25zdCBSZWY8UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYlBh
dHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1c2gmIGIpCit7Cisg
ICAgcmV0dXJuIGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgpID09IGIuYnJ1c2go
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJy
dXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8PCBzcGFjZVRyYW5z
Zm9ybTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291
cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9n
aWNhbEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGdyYWRp
ZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdyYWRpZW50KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5l
VHJhbnNmb3JtPiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNwYWNlVHJhbnNmb3Jt
OworICAgIGlmICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNlVHJhbnNmb3JtIH0g
fTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJy
dXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXVEY6OnN3aXRjaE9u
KGJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYgZ3JhZGllbnQpIHsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQorICAgICk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoOjpC
cnVzaD4gU291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29kZXIgPj4gaGFzR3Jh
ZGllbnQ7CisgICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBncmFkaWVudCA9IExv
Z2ljYWxHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAoIWdyYWRpZW50KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCpncmFkaWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46
OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9IH07Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7CisgICAgZW5jb2RlciA8
PCBtX2JydXNoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxT
b3VyY2VCcnVzaD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4gY29sb3I7CisgICAg
aWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29kZXIgPj4gYnJ1c2g7
CisgICAgaWYgKCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBTb3VyY2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9CisKK1dURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTb3VyY2VCcnVzaCYp
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAxNTUy
MzU2YTIzYTVmZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi4yZGE0OTFmZDg3ZjZjZmJiMzNl
NDdkOTgxMjMzN2JmMjE1OGY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU1OSw0MiAr
NTU5LDQyIEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAgICAgLCBmaWxsUnVs
ZShzdGF0ZS5maWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pIHsKLSAgICAg
ICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1dG8gZmlsbFBhdHRl
cm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBhdHRlcm4ub2JqZWN0
ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFu
c2Zvcm0oKSkpOwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZpbGxQYXR0
ZXJuLT50aWxlSW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gZmlsbFBhdHRl
cm4tPnRpbGVJbWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2Uuc2l6
ZSgpOwotICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmls
bFBhdHRlcm4tPnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmls
bFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCkg
ewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0
ZXJuKDEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgcGF0dGVy
bi50cmFuc2Zvcm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CisgICAg
ICAgIHBhdHRlcm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7CisgICAgICAgIHBh
dHRlcm4ucmVwZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAgfSBlbHNlIGlmIChh
dXRvIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgpKSB7CisgICAgICAg
IGdyYWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmls
bEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBo
YSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0YXRlLmZpbGxH
cmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGZpbGxH
cmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEJydXNoLmdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUu
ZmlsbENvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpOwogfQog
CiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAgICBpZiAoc3RhdGUu
c3Ryb2tlUGF0dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0YXRlLnN0cm9rZVBh
dHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwotICAgIGVs
c2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRpZW50LmJhc2UgPSBz
dGF0ZS5zdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5zdHJva2VHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ry
b2tlQnJ1c2gucGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3Ryb2tlUGF0
dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgZWxz
ZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCkp
IHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJu
KDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAg
IGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0
ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFs
cGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwg
c3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UK
LSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgY29sb3IgPSBzdGF0
ZS5zdHJva2VCcnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hhZG93U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0KHN0YXRlLnNoYWRv
d09mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIGNvbG9yKHN0YXRl
LnNoYWRvd0NvbG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0KQorICAg
ICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBjb2xvcihzdGF0ZS5k
cm9wU2hhZG93LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKQotICAgICwgZ2xv
YmFsQ29tcG9zaXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpCisgICAgLCBnbG9i
YWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKaW5kZXggYTdhZjBjZWI1MjQ5MDQwNDFlZTEyZDUxZjg5YzZkZjE2Y2IzNjAzNy4u
ZmU3MzhiZGY3N2U4Y2U3NjJhY2M5YTBmMGY4NGRkODM2MWM2OWMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgYXV0byYgc3RhdGUgPSBj
b250ZXh0LnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0cm9rZVNvdXJjZShz
dGF0ZSksCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2FsZWRG
b250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKLSAgICAgICAg
c3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRv
d09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9k
ZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUu
ZHJvcFNoYWRvdy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZ01vZGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50
Q2Fpcm8uY3BwCmluZGV4IDkwMDk2YWM2NDUyMjRkYmZkYzYwYmZhNmNhY2FkMDMwNzZjYjI5N2Qu
Ljg1N2NlZDFhMjcwMzc2MWIxZDM3ODNiZGVlMzA4Mzc0ODczNjFmODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8u
Y3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gR3JhZGllbnQ6
OmNyZWF0ZVBhdHRlcm4oZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IEFmZmluZVQKIAogdm9pZCBH
cmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKLSAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5z
dGF0ZSgpLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBhdXRvIHBhdHRlcm4gPSBj
cmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsK
ICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCmluZGV4IGMzMjMwNDQ1MzUxYjAzZjJhYTg3MzZhZWUyYmNlNzhiYzQzNjFmNDku
LmRjYmViZWVhMzA1N2VmODMwM2E3MzZiNmZkOTg1OTJjZjc0MDU4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpyZXN0b3JlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewogICAgIEFTU0VS
VCghcmVjdC5pc0VtcHR5KCkpOwotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAg
ICBDYWlybzo6ZHJhd1JlY3QoKnRoaXMsIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJv
OjpkcmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBmaWxsQ29sb3IoKSwgc3Ry
b2tlU3R5bGUoKSwgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNTQsMTUgKzE1Mywx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9T
dHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUu
c2hvdWxkQW50aWFsaWFzKTsKKyAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9p
bnQyLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlja25lc3MoKSwgc2hv
dWxkQW50aWFsaWFzKCkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWQgdG8gZHJh
dyB0aGUgbGl0dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNlKCp0aGlzLCByZWN0
LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwg
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBDYWlybzo6ZHJhd0VsbGlwc2UoKnRoaXMsIHJl
Y3QsIGZpbGxDb2xvcigpLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlj
a25lc3MoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxQYXRoKGNvbnN0
IFBhdGgmIHBhdGgpCkBAIC0xOTYsOCArMTkzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgR3JhZGllbnQmIGdyYWRpZW50KQogewotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBhdXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUu
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1dG8gcGF0dGVybiA9IGdyYWRpZW50
LmNyZWF0ZVBhdHRlcm4oMS4wLCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICBp
ZiAoIXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA5LDcgKzIwNSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3Jh
ZGllbnQmIGdyYWRpZW50KQogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGF1dG8mIHN0
YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJh
dG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJl
dmlvdXNPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwogCiAgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUpOwogICAgIENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwpAQCAtMjY1LDcgKzI2MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRo
aWNrCiB7CiAgICAgaWYgKHdpZHRocy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBD
YWlybzo6ZHJhd0xpbmVzRm9yVGV4dCgqdGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBw
cmludGluZywgZG91YmxlVW5kZXJsaW5lcywgbV9zdGF0ZS5zdHJva2VDb2xvcik7CisgICAgQ2Fp
cm86OmRyYXdMaW5lc0ZvclRleHQoKnRoaXMsIHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJp
bnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0cm9rZUNvbG9yKCkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC0yODQsMjggKzI4MCwy
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQg
eSkKICAgICBDYWlybzo6dHJhbnNsYXRlKCp0aGlzLCB4LCB5KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlVGhpY2tuZXNzQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSkKICAgICAgICAgQ2Fp
cm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cyk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVD
aGFuZ2UpCisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ry
b2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKTsKIAotICAgIGlmIChmbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpIHsKLSAgICAgICAgaWYgKHN0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7Ci0gICAgICAgICAgICAvLyBNZWFuaW5nIHRoYXQgdGhp
cyBncmFwaGljcyBjb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQKLSAgICAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRN
TDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCi0gICAgICAgICAgICBhdXRvJiBzaGFkb3dP
ZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgICAgICAgICBtX3N0YXRlLnNoYWRvd09m
ZnNldCA9IHsgc2hhZG93T2Zmc2V0LndpZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVpZ2h0KCkgfTsK
LSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKQorICAgICAgICBDYWlybzo6
U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlTW9kZS5v
cGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKIAotICAgIGlmIChmbGFn
cyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpCi0gICAg
ICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21w
b3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlmIChmbGFncyAmIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpCisgICAgaWYgKHN0YXRlLmNo
YW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRp
YWxpYXMpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcygqdGhpcywg
c3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2Zvcm0pCkBAIC00MzQsNyArNDIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKgogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0ds
eXBocygqdGhpcywgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNl
KHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxl
ZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAotICAgICAg
ICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hh
ZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwKKyAgICAgICAgc3RhdGUudGV4dERyYXdpbmdN
b2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0
ZS5kcm9wU2hhZG93LmNvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmgKaW5kZXggNTY0NjFjMTU5YTU4M2M4OWM2MWU4ZjAyZTRlMGJlZTdi
MDU5MzJlZi4uNzMyMTQ3MGZjNGYxYzdmYjFmM2FmN2JiNDY4ZWFhMTdjNWUxZDVlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIEdyYXBoaWNzQ29udGV4dENh
aXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYpOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIHZv
aWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCmluZGV4IDMyNDVjNjAwNDMxNTUyZDUxM2I3NGVlYmMwOWYzMThlZWMzZGQ3MmEuLmY5
ZmVhYjRlMjZmMjk4MzM4MWRjZGRhNGQ1NGM1MGI3NTM4ZTc4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKQEAgLTE4NSwxMyArMTg1LDE0IEBAIHN0YXRpYyB2b2lkIHNldENHQmxlbmRNb2RlKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlCiB9CiAKIEdy
YXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRleHRDRyhDR0NvbnRleHRSZWYgY2dDb250ZXh0
KQorICAgIDogR3JhcGhpY3NDb250ZXh0KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
RmlsbEJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaCwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzIH0pCiB7CiAgICAgaWYg
KCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsKICAgICAvLyBNYWtlIHN1cmUgdGhl
IGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VUaGlja25lc3NDaGFuZ2UgfSk7CisgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7
CiAgICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gY29yZUludGVycG9sYXRp
b25RdWFsaXR5KENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4
dCgpKSk7CiB9CiAKQEAgLTMzOCw3ICszMzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpegog
I2VuZGlmCiAKICAgICBhdXRvIG9sZENvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0
aW9uKCk7Ci0gICAgYXV0byBvbGRCbGVuZE1vZGUgPSBibGVuZE1vZGVPcGVyYXRpb24oKTsKKyAg
ICBhdXRvIG9sZEJsZW5kTW9kZSA9IGJsZW5kTW9kZSgpOwogICAgIHNldENHQmxlbmRNb2RlKGNv
bnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7
CiAKICAgICAvLyBNYWtlIHRoZSBvcmlnaW4gYmUgYXQgYWRqdXN0ZWREZXN0UmVjdC5sb2NhdGlv
bigpCkBAIC01NTUsMTMgKzU1NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkcmF3RWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFw
cGx5U3Ryb2tlUGF0dGVybigpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisg
ICAgaWYgKCFzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4
dFJlZiBjZ0NvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
dXNlclRvQmFzZUNUTSA9IEFmZmluZVRyYW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4
dCkpOwogCi0gICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBtX3N0YXRlLnN0cm9rZVBhdHRlcm4t
PmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKKyAgICBhdXRvIHBsYXRmb3Jt
UGF0dGVybiA9IHN0cm9rZVBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jh
c2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKQEAg
LTU3NCwxMyArNTc1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0
dGVybigpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5RmlsbFBhdHRlcm4oKQogewot
ICAgIGlmICghbV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoIWZpbGxQYXR0ZXJuKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IEFmZmluZVRyYW5z
Zm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgYXV0byBwbGF0Zm9ybVBh
dHRlcm4gPSBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRv
QmFzZUNUTSk7CisgICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBmaWxsUGF0dGVybigpLT5jcmVh
dGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRl
cm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTkxLDExICs1OTIsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybigpCiAgICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRl
cm4oY2dDb250ZXh0LCBwbGF0Zm9ybVBhdHRlcm4uZ2V0KCksICZwYXR0ZXJuQWxwaGEpOwogfQog
Ci1zdGF0aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01vZGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBDR1BhdGhEcmF3aW5nTW9kZSYgbW9kZSkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9kZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIENHUGF0aERyYXdpbmdNb2RlJiBtb2RlKQogewotICAgIGJvb2wgc2hvdWxkRmlsbCA9IHN0
YXRlLmZpbGxQYXR0ZXJuIHx8IHN0YXRlLmZpbGxDb2xvci5pc1Zpc2libGUoKTsKLSAgICBib29s
IHNob3VsZFN0cm9rZSA9IHN0YXRlLnN0cm9rZVBhdHRlcm4gfHwgKHN0YXRlLnN0cm9rZVN0eWxl
ICE9IE5vU3Ryb2tlICYmIHN0YXRlLnN0cm9rZUNvbG9yLmlzVmlzaWJsZSgpKTsKLSAgICBib29s
IHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxlID09IFdpbmRSdWxlOjpFdmVuT2RkOworICAgIGJv
b2wgc2hvdWxkRmlsbCA9IGNvbnRleHQuZmlsbFBhdHRlcm4oKSB8fCBjb250ZXh0LmZpbGxDb2xv
cigpLmlzVmlzaWJsZSgpOworICAgIGJvb2wgc2hvdWxkU3Ryb2tlID0gY29udGV4dC5zdHJva2VQ
YXR0ZXJuKCkgfHwgKGNvbnRleHQuc3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZSAmJiBjb250ZXh0
LnN0cm9rZUNvbG9yKCkuaXNWaXNpYmxlKCkpOworICAgIGJvb2wgdXNlRU9GaWxsID0gY29udGV4
dC5maWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkOwogCiAgICAgaWYgKHNob3VsZEZpbGwp
IHsKICAgICAgICAgaWYgKHNob3VsZFN0cm9rZSkgewpAQCAtNjI0LDkgKzYyNSw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0g
ICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAotICAgIGlm
IChzdGF0ZS5maWxsR3JhZGllbnQgfHwgc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKKyAgICBpZiAo
ZmlsbEdyYWRpZW50KCkgfHwgc3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICAvLyBXZSBkb24n
dCBoYXZlIGFueSBvcHRpbWl6ZWQgd2F5IHRvIGZpbGwgJiBzdHJva2UgYSBwYXRoIHVzaW5nIGdy
YWRpZW50cwogICAgICAgICAvLyBGSVhNRTogQmUgc21hcnRlciBhYm91dCB0aGlzLgogICAgICAg
ICBmaWxsUGF0aChwYXRoKTsKQEAgLTYzNCwxMyArNjM0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q0c6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAg
ICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKLSAgICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikK
KyAgICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsK
IAogICAgIENHUGF0aERyYXdpbmdNb2RlIGRyYXdpbmdNb2RlOwotICAgIGlmIChjYWxjdWxhdGVE
cmF3aW5nTW9kZShzdGF0ZSwgZHJhd2luZ01vZGUpKSB7CisgICAgaWYgKGNhbGN1bGF0ZURyYXdp
bmdNb2RlKCp0aGlzLCBkcmF3aW5nTW9kZSkpIHsKICNpZiBIQVZFKENHX0NPTlRFWFRfRFJBV19Q
QVRIX0RJUkVDVCkKICAgICAgICAgQ0dDb250ZXh0RHJhd1BhdGhEaXJlY3QoY29udGV4dCwgZHJh
d2luZ01vZGUsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIpOwogI2Vsc2UKQEAgLTY1OCw3
ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUGF0aChjb25zdCBQYXRoJiBw
YXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAot
ICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgeworICAgIGlmIChhdXRvIGZpbGxHcmFkaWVu
dCA9IHRoaXMtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewog
ICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKICAg
ICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6
ZSgpKTsKQEAgLTY3MCwzMyArNjcwLDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQ
YXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
bGF5ZXJDb250ZXh0LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgICAgICAgICBDR0NvbnRl
eHRCZWdpblBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgo
bGF5ZXJDb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIENHQ29udGV4
dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsUnVsZSgpID09
IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChsYXll
ckNvbnRleHQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIENHQ29udGV4dENs
aXAobGF5ZXJDb250ZXh0KTsKIAotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBh
aW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KGxheWVy
Q29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwg
cmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250
ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250
ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShj
b250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAg
ICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRleHQpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7CiAKLSAgICAgICAgICAg
IG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBmaWxsR3Jh
ZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4oKSkK
ICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogI2lmIEhBVkUoQ0dfQ09OVEVYVF9EUkFXX1BB
VEhfRElSRUNUKQogICAgIENHQ29udGV4dERyYXdQYXRoRGlyZWN0KGNvbnRleHQsIGZpbGxSdWxl
KCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQgPyBrQ0dQYXRoRU9GaWxsIDoga0NHUGF0aEZpbGwsIHBh
dGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIpOwpAQCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5z
dHJva2VHcmFkaWVudCkgeworICAgIGlmIChhdXRvIHN0cm9rZUdyYWRpZW50ID0gdGhpcy0+c3Ry
b2tlR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAg
IEZsb2F0UmVjdCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgICAgICAgICBm
bG9hdCBsaW5lV2lkdGggPSBzdHJva2VUaGlja25lc3MoKTsKQEAgLTc0Miw4ICs3NDIsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
ICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5wbGF0Zm9ybVBhdGgo
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChsYXll
ckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwotICAg
ICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGll
bnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
bGF5ZXJDb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAg
ICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIGZs
b2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAg
ICAgICBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgpOwpA
QCAtNzU0LDEzICs3NTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBw
YXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0
aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0
KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VH
cmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJu
KCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAjaWYgVVNFKENHX0NPTlRFWFRf
U1RST0tFX0xJTkVfU0VHTUVOVFNfV0hFTl9TVFJPS0lOR19QQVRIKQpAQCAtNzg1LDcgKzc4NSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0g
ICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gZmlsbEdyYWRpZW50
ID0gdGhpcy0+ZmlsbEdyYWRpZW50KCkpIHsKICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAg
ICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsK
QEAgLTc5OCwxOCArNzk4LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFJlY3QobGF5ZXJD
b250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsK
IAotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5m
aWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFk
aWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShsYXllckNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAg
ICAgZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250
ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcmVjdCk7
Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0ZS5maWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+
cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGZp
bGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5w
YWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigpKQogICAgICAgICBh
cHBseUZpbGxQYXR0ZXJuKCk7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSBjYW5Vc2VTaGFk
b3dCbHVyKCk7CkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFk
b3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0
KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRv
dyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3co
KSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJh
d1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIApAQCAt
ODM5LDcgKzgzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICAvLyBUdXJuIG9mZiBD
RyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1D
b250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4
dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BT
aGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFk
b3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0K
IApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSb3VuZGVk
UmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QKICAgICAgICAgLy8g
VHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dC
bHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNo
YWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBj
b250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCByZWN0KTsKICAgICB9CiAKQEAgLTg3
NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBs
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0CiAgICAgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkmIHJhZGlpID0gcmVjdC5yYWRpaSgpOwogICAgIGJvb2wgZXF1YWxXaWR0
aHMgPSAocmFkaWkudG9wTGVmdCgpLndpZHRoKCkgPT0gcmFkaWkudG9wUmlnaHQoKS53aWR0aCgp
ICYmIHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSA9PSByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgo
KSAmJiByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSA9PSByYWRpaS5ib3R0b21SaWdodCgpLndp
ZHRoKCkpOwogICAgIGJvb2wgZXF1YWxIZWlnaHRzID0gKHJhZGlpLnRvcExlZnQoKS5oZWlnaHQo
KSA9PSByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgJiYgcmFkaWkuYm90dG9tTGVmdCgpLmhl
aWdodCgpID09IHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgJiYgcmFkaWkudG9wUmlnaHQoKS5o
ZWlnaHQoKSA9PSByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKLSAgICBib29sIGhhc0N1
c3RvbUZpbGwgPSBtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuOwor
ICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IGZpbGxHcmFkaWVudCgpIHx8IGZpbGxQYXR0ZXJuKCk7
CiAgICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVxdWFsV2lkdGhzICYmIGVxdWFsSGVpZ2h0cyAm
JiByYWRpaS50b3BMZWZ0KCkud2lkdGgoKSAqIDIgPT0gci53aWR0aCgpICYmIHJhZGlpLnRvcExl
ZnQoKS5oZWlnaHQoKSAqIDIgPT0gci5oZWlnaHQoKSkKICAgICAgICAgQ0dDb250ZXh0RmlsbEVs
bGlwc2VJblJlY3QoY29udGV4dCwgcik7CiAgICAgZWxzZSB7CkBAIC05MTUsNyArOTE1LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBGbG8KICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4K
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBD
R1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9z
dGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdJbnNl
dFNoYWRvdygqdGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAgICB9CiAKQEAgLTk4OSw2
ICs5ODksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
KGZsb2F0IG9wYWNpdHkpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBvcGFjaXR5KTsKICAgICBDR0Nv
bnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGNvbnRleHQsIDApOworICAgIAorICAgIG1fc3Rh
dGUuZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZp
Y2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCkBAIC0xMDAyLDE3ICsx
MDA0LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkK
ICAgICByZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fy
b3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dGbG9hdCYgeE9m
ZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKK3N0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29y
a2Fyb3VuZElmTmVlZGVkKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBD
R0Zsb2F0JiB5T2Zmc2V0KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JN
KFdJTikKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKHhPZmZz
ZXQpOwogICAgIFVOVVNFRF9QQVJBTSh5T2Zmc2V0KTsKICNlbHNlCi0gICAgaWYgKGNvbnRleHQu
cmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMo
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENv
cnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBX
b3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUg
b2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKQEAgLTEwMzAsMTAgKzEwMjksOCBAQCBzdGF0aWMg
dm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCitzdGF0aWMgdm9pZCBzZXRDR1No
YWRvdyhDR0NvbnRleHRSZWYgY29udGV4dCwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBi
b29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewotICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCiAgICAgaWYgKG9mZnNldC5p
c1plcm8oKSAmJiAhYmx1cikgewogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3Io
Y29udGV4dCwgQ0dTaXplWmVybywgMCwgMCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwNDUsNyAr
MTA0Miw3IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgQ0dGbG9hdCB5T2Zmc2V0ID0g
b2Zmc2V0LmhlaWdodCgpOwogICAgIENHRmxvYXQgYmx1clJhZGl1cyA9IGJsdXI7CiAKLSAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7CisgICAgaWYg
KCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB1
c2VyVG9CYXNlQ1RNID0gZ2V0VXNlclRvQmFzZUNUTShjb250ZXh0KTsKIAogICAgICAgICBDR0Zs
b2F0IEEgPSB1c2VyVG9CYXNlQ1RNLmEgKiB1c2VyVG9CYXNlQ1RNLmEgKyB1c2VyVG9CYXNlQ1RN
LmIgKiB1c2VyVG9CYXNlQ1RNLmI7CkBAIC0xMDY2LDcgKzEwNjMsOCBAQCBzdGF0aWMgdm9pZCBz
ZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRTaXplJgogICAgIC8vIEV4dHJlbWUgImJsdXIiIHZhbHVlcyBjYW4gbWFrZSB0ZXh0IGRy
YXdpbmcgY3Jhc2ggb3IgdGFrZSBjcmF6eSBsb25nIHRpbWVzLCBzbyBjbGFtcAogICAgIGJsdXJS
YWRpdXMgPSBzdGQ6Om1pbihibHVyUmFkaXVzLCBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoMTAw
MC4wKSk7CiAKLSAgICBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChncmFwaGlj
c0NvbnRleHQsIHhPZmZzZXQsIHlPZmZzZXQpOworICAgIGlmIChyZW5kZXJpbmdNb2RlICE9IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBhcHBseVNoYWRvd09mZnNldFdvcmth
cm91bmRJZk5lZWRlZChjb250ZXh0LCB4T2Zmc2V0LCB5T2Zmc2V0KTsKIAogICAgIC8vIENoZWNr
IGZvciBhbiBpbnZhbGlkIGNvbG9yLCBhcyB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvbG9yIHdhcyBu
b3Qgc2V0IGZvciB0aGUgc2hhZG93CiAgICAgLy8gYW5kIHdlIHNob3VsZCB0aGVyZWZvcmUganVz
dCB1c2UgdGhlIGRlZmF1bHQgc2hhZG93IGNvbG9yLgpAQCAtMTA3NiwzOSArMTA3NCw2MSBAQCBz
dGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29s
b3IoY29udGV4dCwgQ0dTaXplTWFrZSh4T2Zmc2V0LCB5T2Zmc2V0KSwgYmx1clJhZGl1cywgY2Fj
aGVkQ0dDb2xvcihjb2xvcikuZ2V0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dENHOjpk
aWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogeworICAg
IGlmICghc3RhdGUuY2hhbmdlcygpKQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0
U2V0TGluZVdpZHRoKGNvbnRleHQsIHN0ZDo6bWF4KHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgMC5m
KSk7CisgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0YXRlLmNoYW5nZXMoKSkgeworICAgICAgICBz
d2l0Y2ggKGNoYW5nZSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkZpbGxCcnVzaDoKKyAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRl
LmZpbGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzOgorICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIHN0ZDo6bWF4KHN0YXRlLnN0cm9rZVRo
aWNrbmVzcywgMC5mKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoOgorICAgICAgICAgICAgQ0dDb250
ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5z
dHJva2VCcnVzaC5jb2xvcigpKS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KQotICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNo
ZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKS5nZXQoKSk7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZToKKyAgICAgICAgICAgIHNldENH
QmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBzdGF0ZS5j
b21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChm
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAg
ICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3RhdGUuZmlsbENvbG9yKTsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93OgorICAgICAgICAg
ICAgc2V0Q0dTaGFkb3coY29udGV4dCwgcmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93
Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93LmNv
bG9yLCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgICAgICAgICBicmVhazsK
IAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFu
Z2UpKQotICAgICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBzdGF0ZS5hbHBoYSk7Cisg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGE6CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBzdGF0ZS5hbHBoYSk7CisgICAgICAgICAg
ICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVu
ZE1vZGVDaGFuZ2UgfSkpCi0gICAgICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOworICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk6CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBjZ0ludGVycG9s
YXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdpbmdN
b2RlOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGNn
VGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5nTW9kZSkpOworICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhj
b250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhczoKKyAgICAgICAgICAgIENHQ29udGV4
dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hv
dWxkU21vb3RoRm9udHMoY29udGV4dCwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOworICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzOgor
ICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMoY29udGV4dCwgc3RhdGUu
c2hvdWxkU21vb3RoRm9udHMpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlD
aGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0
LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkp
KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dD
aGFuZ2UpKQotICAgICAgICBzZXRDR1NoYWRvdygqdGhpcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBt
X3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Q29sb3IpOworICAgIHN0YXRlLmRpZEFw
cGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzZXRNaXRlckxpbWl0
KGZsb2F0IGxpbWl0KQpAQCAtMTEyNSw3ICsxMTQ1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRD
Rzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKIHsK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYg
KG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9
IHRoaXMtPnN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAg
ICAgICAgICAgICBjb25zdCBmbG9hdCBkb3VibGVMaW5lV2lkdGggPSBsaW5lV2lkdGggKiAyOwog
ICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRXaWR0aCA9IGNlaWxmKHJlY3Qud2lkdGgoKSArIGRv
dWJsZUxpbmVXaWR0aCk7CkBAIC0xMTQ5LDggKzExNjksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQog
ICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3QpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgobGF5ZXJDb250ZXh0KTsK
ICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENH
Q29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludChs
YXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4
dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogCiAgICAgICAgICAgICBjb25zdCBmbG9hdCBk
ZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAg
Y29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsK
QEAgLTExNjEsMTMgKzExODEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAgIENH
Q29udGV4dEFkZFJlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBs
YWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENs
aXAoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9z
dGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShjb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAg
ICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoc3Ry
b2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKIAogICAgIC8vIFVz
aW5nIENHQ29udGV4dEFkZFJlY3QgYW5kIENHQ29udGV4dFN0cm9rZVBhdGggdG8gc3Ryb2tlIHJl
Y3QgcmF0aGVyIHRoYW4KQEAgLTE0MjIsNyArMTQ0Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2Up
CiB7CiAgICAgLy8gQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBzb2xp
ZCBjb2xvcnMuCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBh
dHRlcm4pIHsKKyAgICBpZiAoZmlsbEdyYWRpZW50KCkgfHwgZmlsbFBhdHRlcm4oKSkgewogICAg
ICAgICBmaWxsRWxsaXBzZUFzUGF0aChlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE0MzQsNyArMTQ1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9r
ZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewogICAgIC8vIENHQ29udGV4dFN0
cm9rZUVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xvcnMuCi0gICAgaWYgKG1f
c3RhdGUuc3Ryb2tlR3JhZGllbnQgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuKSB7CisgICAgaWYg
KHN0cm9rZUdyYWRpZW50KCkgfHwgc3Ryb2tlUGF0dGVybigpKSB7CiAgICAgICAgIHN0cm9rZUVs
bGlwc2VBc1BhdGgoZWxsaXBzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
aAppbmRleCA2MDNiMGU5MzZlZmI1MjhjYWMzZDdhZGM4NjZlOTk1N2VlMzBlYmVjLi5hMWEyNmJm
ZDI4NGQ4NDQ2M2VjMjBmYjAxNGZhMzM2OWM4OGM5OTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzSW50ZXJuYWxMaW5rcygp
IGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuVXNlU2hhZG93Qmx1cigpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggZWZiYzFlNDk1NDQx
YmVkZTczNGU5NDhkZDI2ZDM3MTQ0MTY1NTNlMC4uZDBiZWM4ZDYzODQ3MDliNzhjZjFkZTgwYmIw
MmUxZTM3ZDJmOTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcApAQCAtOTYsNTIgKzk2LDI0IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29uc3RydWN0RHJhd0dsCiAKIHZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKIHsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmls
bFN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLmZpbGxDb2xvcjsKLSAgICBtX29yaWdpbmFsU3Rh
dGUuZmlsbFN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0YXRlLmZpbGxHcmFkaWVudDsKLSAgICBt
X29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0
U3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZp
bGxTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLmZpbGxQYXR0ZXJuOwotCi0gICAgbV9vcmln
aW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLnN0cm9rZUNvbG9yOwot
ICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5z
dHJva2VHcmFkaWVudDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRl
LnN0cm9rZVBhdHRlcm47CisgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCA9IGNvbnRleHRT
dGF0ZS5maWxsQnJ1c2g7CisgICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJydXNoID0gY29udGV4
dFN0YXRlLnN0cm9rZUJydXNoOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9IG1fb3duZXIu
Z2V0Q1RNKCk7IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKLSAgICBtX29yaWdpbmFs
U3RhdGUuc2hhZG93Lm9mZnNldCA9IGNvbnRleHRTdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgbV9v
cmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyID0gY29udGV4dFN0YXRlLnNoYWRvd0JsdXI7Ci0gICAg
bV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciA9IGNvbnRleHRTdGF0ZS5zaGFkb3dDb2xvcjsK
LSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPSBjb250ZXh0U3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IG1fb3Jp
Z2luYWxTdGF0ZTsKKyAgICBtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyA9IGNvbnRleHRTdGF0
ZS5kcm9wU2hhZG93OworICAgIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zID0gY29u
dGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogfQogCiB2b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIGNvbnRleHRTdGF0ZSkKIHsKLSAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5j
b2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvcik7Ci0gICAgZWxzZSBpZiAobV9vcmlnaW5h
bFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNl
dEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCwgbV9vcmln
aW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybik7Ci0gICAg
ICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pCi0gICAgICAgICAgICBt
X2ludGVybmFsQ29udGV4dC0+c2V0RmlsbFBhdHRlcm4oKm1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUucGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHls
ZS5jb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VD
b2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IpOwotICAgIGVsc2UgaWYgKG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCkKLSAgICAgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCptX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3Jh
ZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3Jt
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHls
ZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0
ZXJuKQotICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZVBhdHRlcm4oKm1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKLSAgICB9CisgICAgbV9pbnRlcm5h
bENvbnRleHQtPnNldEZpbGxCcnVzaChtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoKTsKKyAgICBt
X2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlQnJ1c2gobV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJy
dXNoKTsKIAogICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRDVE0obV9vcmlnaW5hbFN0YXRlLmN0
bSk7CiAKLSAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
bV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBtX2ludGVybmFs
Q29udGV4dC0+c2V0U2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0LCBtX29yaWdp
bmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IsIGNvbnRl
eHRTdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMobV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMpOwor
ICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXREcm9wU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5kcm9w
U2hhZG93KTsKIAogICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoY29u
dGV4dFN0YXRlLnRleHREcmF3aW5nTW9kZSk7CiB9CkBAIC0xNjUsOTUgKzEzNywzOSBAQCB2b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6cHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiBm
b250LCBGb250U21vb3RoaW5nTQogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmNvbmNsdWRlSW50
ZXJuYWxDb250ZXh0KCkKIHsKICAgICB1cGRhdGVDVE0obV9vcmlnaW5hbFN0YXRlLmN0bSk7Ci0g
ICAgdXBkYXRlRmlsbENvbG9yKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IsIG1fb3Jp
Z2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQuZ2V0KCksIG1fb3JpZ2luYWxTdGF0ZS5maWxs
U3R5bGUucGF0dGVybi5nZXQoKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IobV9vcmlnaW5hbFN0
YXRlLnN0cm9rZVN0eWxlLmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGll
bnQuZ2V0KCksIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuLmdldCgpKTsKLSAg
ICB1cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fb3JpZ2luYWxT
dGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciwgbV9vcmlnaW5h
bFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID8gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6
OlllcyA6IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpObyk7CisgICAgdXBkYXRlRmlsbEJydXNo
KG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2gpOworICAgIHVwZGF0ZVN0cm9rZUJydXNoKG1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VCcnVzaCk7CisgICAgdXBkYXRlU2hhZG93KG1fb3JpZ2luYWxTdGF0
ZS5kcm9wU2hhZG93LCBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA/IFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6Tm8pOwogfQog
Ci12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiBu
ZXdDb2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0ZXJuKiBuZXdQYXR0ZXJuKQordm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYg
bmV3QnJ1c2gpCiB7Ci0gICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBidXQgaXQgYWN0dWFs
bHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIg
c2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUgY29ycmVjdCBjaGVj
ayBmb3IuCi0gICAgLy8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3ZSBzZXQgaXQgYmFj
ayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJl
Y3RseSBmb3IgdG9vLgotICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRTdGF0ZS5maWxsU3R5
bGUuY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG5l
d1N0YXRlOwotICAgIG5ld1N0YXRlLmZpbGxDb2xvciA9IG5ld0NvbG9yOwotICAgIGlmIChuZXdH
cmFkaWVudCkKLSAgICAgICAgbmV3U3RhdGUuZmlsbEdyYWRpZW50ID0gbmV3R3JhZGllbnQ7Ci0g
ICAgaWYgKG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0YXRlLmZpbGxQYXR0ZXJuID0gbmV3UGF0
dGVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UgfSk7Ci0gICAgbV9jdXJyZW50U3RhdGUuZmlsbFN0
eWxlLmNvbG9yID0gbmV3Q29sb3I7CisgICAgbV9vd25lci5zZXRGaWxsQnJ1c2gobmV3QnJ1c2gp
OwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQ29sb3IoY29uc3Qg
Q29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQsIFBhdHRlcm4qIG5ld1BhdHRl
cm4pCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQnJ1c2goY29uc3QgU291
cmNlQnJ1c2gmIG5ld0JydXNoKQogewotICAgIC8vIFRoaXMgY2hlY2sgbG9va3Mgd3JvbmcgYnV0
IGl0IGFjdHVhbGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0ZWQgdXNlLgotICAgIC8vIENUIHdpbGwg
b25seSBldmVyIHNldCB0aGlzIHRvIGEgc29saWQgY29sb3IsIHdoaWNoIHRoaXMgaXMgdGhlIGNv
cnJlY3QgY2hlY2sgZm9yLgotICAgIC8vIEluIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCkgd2Ug
c2V0IGl0IGJhY2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2luYWxseSwgd2hpY2ggdGhpcyBjaGVjayB3
b3JrcyBjb3JyZWN0bHkgZm9yIHRvby4KLSAgICBpZiAobmV3Q29sb3IgPT0gbV9jdXJyZW50U3Rh
dGUuc3Ryb2tlU3R5bGUuY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIG5ld1N0YXRlLnN0cm9rZUNvbG9yID0gbmV3Q29sb3I7
Ci0gICAgaWYgKG5ld0dyYWRpZW50KQotICAgICAgICBuZXdTdGF0ZS5zdHJva2VHcmFkaWVudCA9
IG5ld0dyYWRpZW50OwotICAgIGlmIChuZXdQYXR0ZXJuKQotICAgICAgICBuZXdTdGF0ZS5zdHJv
a2VQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0
YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSB9KTsKLSAgICBt
X2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9IG5ld0NvbG9yOworICAgIG1fb3duZXIu
c2V0U3Ryb2tlQnJ1c2gobmV3QnJ1c2gpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
dXBkYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtKQogewotICAgIGlmIChjdG0gPT0g
bV9jdXJyZW50U3RhdGUuY3RtKQorICAgIGlmIChtX293bmVyLmdldENUTSgpID09IGN0bSkKICAg
ICAgICAgcmV0dXJuOwotCiAgICAgbV9vd25lci5zZXRDVE0oY3RtKTsKLSAgICBtX2N1cnJlbnRT
dGF0ZS5jdG0gPSBjdG07CiB9CiAKLXN0YXRpYyBib29sIHNoYWRvd0lzQ2xlYXJlZChjb25zdCBG
bG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1cikKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjp1cGRhdGVTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdywgU2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7Ci0gICAgcmV0
dXJuIHNoYWRvd09mZnNldCA9PSBGbG9hdFNpemUoKSAmJiAhc2hhZG93Qmx1cjsKLX0KLQotdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNoYWRv
d09mZnNldCwgZmxvYXQgc2hhZG93Qmx1ciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBTaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLXsKLSAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGlmIG5vYm9k
eSBoYXMgYW55IHNoYWRvd3MuCi0gICAgaWYgKHNoYWRvd0lzQ2xlYXJlZChzaGFkb3dPZmZzZXQs
IHNoYWRvd0JsdXIpICYmIHNoYWRvd0lzQ2xlYXJlZChtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zm
c2V0LCBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1cikpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIHN0YXRlQ2hhbmdlRmxhZ3M7Ci0KLSAgICBpZiAoc2hhZG93T2Zm
c2V0ICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQgfHwgc2hhZG93Qmx1ciAhPSBtX2N1
cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciB8fCBzaGFkb3dDb2xvciAhPSBtX2N1cnJlbnRTdGF0ZS5z
aGFkb3cuY29sb3IpIHsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93T2Zmc2V0ID0gc2hhZG93T2Zm
c2V0OwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dCbHVyID0gc2hhZG93Qmx1cjsKLSAgICAgICAg
bmV3U3RhdGUuc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjsKLSAgICAgICAgc3RhdGVDaGFuZ2VG
bGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7Ci0gICAgfQotICAg
IGlmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAhPSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6
VW5zcGVjaWZpZWQgJiYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOjpZZXMpICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1z
KSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwotICAgICAg
ICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXNDaGFuZ2UpOwotICAgIH0KLSAgICBpZiAoc3RhdGVDaGFuZ2VGbGFncy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0
YXRlLCBzdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZz
ZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIgPSBzaGFk
b3dCbHVyOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xvciA9IHNoYWRvd0NvbG9yOwot
ICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID0gKHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIG1fb3du
ZXIuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKKyAgICBtX293bmVyLnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93
KENHU3R5bGVSZWYgc3R5bGUpCiB7CiAgICAgaWYgKENHU3R5bGVHZXRUeXBlKHN0eWxlKSAhPSBr
Q0dTdHlsZVNoYWRvdykgewogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIGtpbmRzIG9m
IENHU3R5bGVzLgotICAgICAgICB1cGRhdGVTaGFkb3coezAsIDB9LCAwLCBDb2xvcigpLCBTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQpOworICAgICAgICB1cGRhdGVTaGFkb3co
eyB9LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yNjEsNyArMTc3LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogICAgIGF1dG8gcmFkID0gZGVnMnJhZChz
aGFkb3dTdHlsZS5hemltdXRoIC0gMTgwKTsKICAgICBhdXRvIHNoYWRvd09mZnNldCA9IEZsb2F0
U2l6ZShzdGQ6OmNvcyhyYWQpLCBzdGQ6OnNpbihyYWQpKSAqIHNoYWRvd1N0eWxlLmhlaWdodDsK
ICAgICBhdXRvIHNoYWRvd0NvbG9yID0gQ0dTdHlsZUdldENvbG9yKHN0eWxlKTsKLSAgICB1cGRh
dGVTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dTdHlsZS5yYWRpdXMsIENvbG9yOjpjcmVhdGVB
bmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3IpLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czo6WWVzKTsKKyAgICB1cGRhdGVTaGFkb3coeyBzaGFkb3dPZmZzZXQsIHN0YXRpY19jYXN0PGZs
b2F0PihzaGFkb3dTdHlsZS5yYWRpdXMpLCBDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNw
YWNlKHNoYWRvd0NvbG9yKSB9LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzKTsKIH0KIAog
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0
ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlLCBDR1JlY3QpCkBAIC0zMjgsOCArMjQ0LDggQEAgdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJl
ZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKIAogICAgIGF1dG8gZmlsbENvbG9yID0gQ0dHU3RhdGVHZXRG
aWxsQ29sb3IoZ3N0YXRlKTsKICAgICBhdXRvIHN0cm9rZUNvbG9yID0gQ0dHU3RhdGVHZXRTdHJv
a2VDb2xvcihnc3RhdGUpOwotICAgIHVwZGF0ZUZpbGxDb2xvcihDb2xvcjo6Y3JlYXRlQW5kUHJl
c2VydmVDb2xvclNwYWNlKGZpbGxDb2xvcikpOwotICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENvbG9y
OjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKKyAgICB1cGRhdGVG
aWxsQnJ1c2goQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShmaWxsQ29sb3IpKTsK
KyAgICB1cGRhdGVTdHJva2VCcnVzaChDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNl
KHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRl
KSk7CiAKICAgICBhdXRvIGZvbnRTaXplID0gQ0dHU3RhdGVHZXRGb250U2l6ZShnc3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dENhc2NhZGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcAppbmRleCA1MTFlMDliOTZjZWYwMzI1MDkw
ZTIzYWY5MTRhZTM1ZjJhYjhlZDJlLi44MGE4YzhhZTY1NDhkMGI2YTk2YWEzMmQ3YzA1NWRiNjg2
NDkxNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcApAQCAtMjQyLDEwICsy
NDIsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgIHNldENHRm9udFJlbmRlcmluZ01v
ZGUoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250ZXh0LCBwbGF0Zm9y
bURhdGEuc2l6ZSgpKTsKIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQg
c2hhZG93Qmx1cjsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBjb250ZXh0LmdldFNoYWRv
dyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBhdXRvIGRyb3BT
aGFkb3cgPSBjb250ZXh0LmRyb3BTaGFkb3coKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250
ZXh0Q1RNID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0
ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBAIC0yNTgsMTYgKzI1NSwxNiBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgaGFzU2lt
cGxlU2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6
OkZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9y
bURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkp
ICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgIGJvb2wgaGFzU2ltcGxl
U2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZp
bGwgJiYgZHJvcFNoYWRvdy5jb2xvci5pc1ZhbGlkKCkgJiYgIWRyb3BTaGFkb3cuYmx1clJhZGl1
cyAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlv
bk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBp
ZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91
cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5n
IHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwog
ICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LmZpbGxDb2xvcigpOwotICAgICAgICBD
b2xvciBzaGFkb3dGaWxsQ29sb3IgPSBzaGFkb3dDb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxp
ZWRCeShmaWxsQ29sb3IuYWxwaGFBc0Zsb2F0KCkpOworICAgICAgICBDb2xvciBzaGFkb3dGaWxs
Q29sb3IgPSBkcm9wU2hhZG93LmNvbG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxD
b2xvci5hbHBoYUFzRmxvYXQoKSk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRv
d0ZpbGxDb2xvcik7Ci0gICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgc2hh
ZG93T2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgZHJvcFNoYWRvdy5vZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hhZG93cyBhcmUg
aWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29vcmRp
bmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KLSAgICAgICAgZmxvYXQgc2hhZG93
VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4
dFkgPSBwb2ludC55KCkgKyBkcm9wU2hhZG93Lm9mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dD
b250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogICAgICAg
ICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKICAgICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2
YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRv
d1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRl
eHRNYXRyaXgpOwpAQCAtMjgwLDcgKzI3Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAg
ICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChwb2ludC54KCkgKyBzeW50
aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93
KQotICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKTsKKyAgICAgICAgY29udGV4dC5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cpOwog
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHNob3VsZFNtb290aEZvbnRzICE9
IG9yaWdpbmFsU2hvdWxkVXNlRm9udFNtb290aGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CmluZGV4IDJlMmY0ZjRmMmNiNTVkMzY1ZTVhZTM5OTMyNWQwNWYyYzE3MzYxZmQuLjJiMDNjZTRh
NjZlMmQ4YWEwZmFkODFhNjQ0YWViMWVkZmRlMWM4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmNwcApAQCAtOTAsMTAgKzkwLDcgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZs
YWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIGlmICghKGZs
YWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKSB7CiAgICAgICAg
ICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkg
c3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYy4KLSAgICAgICAgICAgIGlm
IChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdl
KCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZSgpLmNo
YW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
MjNkMGJiY2M3MWMyODFjNTJjMzVhOGMyNTJkYTk2YzBhYjEyYTk4Yy4uYjY2Yzg0OGEzM2JkZDky
MzYwZmVhODUzMzdmYWI1ZGIyZDJkMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtMTQ4LDI0ICsxNDgsMTkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgc3RhdGUpCiAgICAg
cmV0dXJuIHRzOwogfQogCi1TZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFn
cykKLSAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGUsIGZsYWdzKQotewotfQotCi1TZXRTdGF0ZTo6
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQot
ICAgIDogbV9zdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZSkKK1NldFN0YXRlOjpTZXRTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCisgICAgOiBtX3N0YXRlKHN0YXRlKQogewog
fQogCiB2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKKyAgICBjb250ZXh0LnVwZGF0ZVN0YXRl
KG1fc3RhdGUpOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0U3RhdGUmIHN0YXRlKQorc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRlJiBpdGVtKQogewotICAgIHRzIDw8IHN0
YXRlLnN0YXRlQ2hhbmdlKCk7CisgICAgdHMgPDwgaXRlbS5zdGF0ZSgpOwogICAgIHJldHVybiB0
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggOTdjYjVmYzhkMDRi
YTg2NjJiNzJjN2RkZWViYzQ0MTU1YzI4MjViNy4uOTY5NGQ2OGQxNWU5OGQ1NjdkMzhkM2FjOWIy
YzA5OWYzMGQwYTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNDcs
MTAgKzI0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJ
dGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBm
YWxzZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIFdF
QkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKLSAg
ICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlQ2hhbmdlOyB9Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Um
IHN0YXRlQ2hhbmdlKCkgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQorICAgIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4g
ZGVjb2RlKERlY29kZXImKTsKQEAgLTI1OCwyODggKzI1NywyNCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZSYpOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgbV9zdGF0ZUNoYW5nZTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewot
ICAgIGF1dG8gY2hhbmdlRmxhZ3MgPSBtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3M7Ci0gICAg
ZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKLQotICAgIGF1dG8mIHN0YXRlID0gbV9zdGF0ZUNoYW5n
ZS5tX3N0YXRlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlLnN0
cm9rZUdyYWRpZW50KTsKLSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuc3Ryb2tlR3JhZGllbnQ7
Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tl
UGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAg
fQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5maWxsR3JhZGllbnQp
OwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAgfQotCi0gICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVy
bkNoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlLmZpbGxQYXR0ZXJuKTsKLSAgICAgICAg
ZW5jb2RlciA8PCAqc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93T2Zmc2V0OwotICAgICAgICBlbmNvZGVyIDw8IHN0
YXRlLnNoYWRvd0JsdXI7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93Q29sb3I7Ci0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBp
ZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOwot
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0
RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnRleHREcmF3aW5n
TW9kZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZUNv
bG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxDb2xvcjsK
LQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVN0eWxlOwot
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
UnVsZUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFJ1bGU7Ci0KLSAgICBp
ZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9w
ZXJhdGlvbkNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuY29tcG9zaXRlT3BlcmF0
b3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuYmxlbmRNb2RlOwot
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwg
c3RhdGUuYWxwaGE7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3Rh
dGUuc2hvdWxkQW50aWFsaWFzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgZW5jb2RlciA8PCBtX3N0YXRlOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogc3RkOjpvcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3Rh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOwotICAgIGRlY29k
ZXIgPj4gY2hhbmdlRmxhZ3M7Ci0gICAgaWYgKCFjaGFuZ2VGbGFncykKKyAgICBzdGQ6Om9wdGlv
bmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBzdGF0ZTsKKyAgICBkZWNvZGVyID4+IHN0YXRlOwor
ICAgIGlmICghc3RhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAgICBzdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdl
KSkgewotICAgICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNv
ZGVyKTsKLSAgICAgICAgaWYgKCFzdHJva2VHcmFkaWVudCkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VHcmFkaWVu
dCA9IFdURk1vdmUoKnN0cm9rZUdyYWRpZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0
dGVybkNoYW5nZSkpIHsKLSAgICAgICAgYXV0byBzdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6ZGVj
b2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIXN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tl
UGF0dGVybiA9IFdURk1vdmUoKnN0cm9rZVBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmIChzdGF0
ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
R3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gZmlsbEdyYWRpZW50ID0gR3JhZGllbnQ6
OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFmaWxsR3JhZGllbnQpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmls
bEdyYWRpZW50ID0gV1RGTW92ZSgqZmlsbEdyYWRpZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoc3Rh
dGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpk
ZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBh
dHRlcm4gPSBXVEZNb3ZlKCpmaWxsUGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0No
YW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IHNoYWRvd09mZnNldDsK
LSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIGlmICghc2hhZG93T2Zm
c2V0KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLnNoYWRvd09mZnNldCA9ICpzaGFkb3dPZmZzZXQ7Ci0KLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gc2hhZG93Qmx1cjsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dC
bHVyOwotICAgICAgICBpZiAoIXNoYWRvd0JsdXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93Qmx1ciA9ICpzaGFk
b3dCbHVyOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHNoYWRvd0NvbG9yOwotICAg
ICAgICBkZWNvZGVyID4+IHNoYWRvd0NvbG9yOwotICAgICAgICBpZiAoIXNoYWRvd0NvbG9yKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnNoYWRvd0NvbG9yID0gKnNoYWRvd0NvbG9yOwotCi0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8U2hhZG93UmFkaXVzTW9kZT4gc2hhZG93UmFkaXVzTW9kZTsKLSAgICAgICAgZGVjb2RlciA+
PiBzaGFkb3dSYWRpdXNNb2RlOwotICAgICAgICBpZiAoIXNoYWRvd1JhZGl1c01vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuc2hhZG93UmFkaXVzTW9kZSA9IFdURk1vdmUoKnNoYWRvd1JhZGl1c01vZGUpOwotICAgIH0K
LQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHN0cm9rZVRoaWNrbmVzczsKLSAgICAgICAgZGVjb2RlciA+PiBzdHJva2VUaGlj
a25lc3M7Ci0gICAgICAgIGlmICghc3Ryb2tlVGhpY2tuZXNzKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVRoaWNr
bmVzcyA9ICpzdHJva2VUaGlja25lc3M7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9k
ZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxUZXh0RHJhd2luZ01vZGVGbGFncz4g
dGV4dERyYXdpbmdNb2RlOwotICAgICAgICBkZWNvZGVyID4+IHRleHREcmF3aW5nTW9kZTsKLSAg
ICAgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0gV1RG
TW92ZSgqdGV4dERyYXdpbmdNb2RlKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwotICAgICAg
ICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwotICAgICAgICBpZiAoIXN0cm9rZUNvbG9yKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnN0cm9rZUNvbG9yID0gKnN0cm9rZUNvbG9yOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKLSAg
ICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7Ci0gICAgICAgIGlmICghZmlsbENvbG9yKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLmZpbGxDb2xvciA9ICpmaWxsQ29sb3I7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxl
Q2hhbmdlKSkgewotICAgICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZTsKLSAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdHJva2VTdHlsZSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlU3R5bGUgPSBzdHJv
a2VTdHlsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8V2luZFJ1bGU+IGZpbGxSdWxlOwotICAgICAgICBkZWNvZGVyID4+IGZpbGxS
dWxlOwotICAgICAgICBpZiAoIWZpbGxSdWxlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxSdWxlID0gKmZpbGxSdWxl
OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKSB7Ci0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBvc2l0ZU9wZXJhdG9yOwotICAg
ICAgICBkZWNvZGVyID4+IGNvbXBvc2l0ZU9wZXJhdG9yOwotICAgICAgICBpZiAoIWNvbXBvc2l0
ZU9wZXJhdG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gKmNvbXBvc2l0ZU9wZXJhdG9y
OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7Ci0gICAgICAgIGRlY29kZXIgPj4gYmxlbmRNb2Rl
OwotICAgICAgICBpZiAoIWJsZW5kTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5ibGVuZE1vZGUgPSAqYmxlbmRNb2Rl
OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5OwotICAgICAgICBkZWNvZGVyID4+IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHk7Ci0gICAgICAgIGlmICghaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5ID0gKmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0gICAg
fQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBhbHBoYTsKLSAgICAgICAgZGVjb2RlciA+PiBhbHBoYTsKLSAgICAgICAgaWYgKCFhbHBoYSkK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5hbHBoYSA9ICphbHBoYTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFz
Q2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFudGlhbGlhczsK
LSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRBbnRpYWxpYXM7Ci0gICAgICAgIGlmICghc2hvdWxk
QW50aWFsaWFzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9ICpzaG91bGRBbnRpYWxpYXM7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRzOwotICAgICAgICBkZWNvZGVyID4+IHNo
b3VsZFNtb290aEZvbnRzOwotICAgICAgICBpZiAoIXNob3VsZFNtb290aEZvbnRzKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LnNob3VsZFNtb290aEZvbnRzID0gKnNob3VsZFNtb290aEZvbnRzOwotICAgIH0KLQotICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwotICAgICAgICBkZWNvZGVy
ID4+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICAgICAgaWYgKCFzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0g
KnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM7Ci0gICAgICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi0gICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAqc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHsgeyBzdGF0ZUNoYW5nZSB9IH07CisgICAgcmV0dXJuIFNldFN0YXRl
KCpzdGF0ZSk7CiB9CiAKIGNsYXNzIFNldExpbmVDYXAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGVlZTQ0NzFkMzU0ZTc1MTUzMTI1MTg5ZGZjYzk0MThh
Mzk0NTE0YTEuLmZlOTI4MTY3ZDE0ZWRlNWZlZjc4NjkzYWU3ZTE0MGNlNjRhY2FiNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTUzLDQ1ICs1MywzNCBA
QCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBBU1NFUlQobV9zdGF0ZVN0YWNrLnNpemUoKSA9
PSAxKTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0
b3JlLgogfQogCi1zdGF0aWMgYm9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQordm9pZCBSZWNvcmRlcjo6YXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGlubGluZVN0YXRlQ2hhbmdlRmxhZ3MgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JD
aGFuZ2UsCi0gICAgfTsKLQotICAgIGlmIChjaGFuZ2VGbGFncyAhPSAoY2hhbmdlRmxhZ3MgJiBp
bmxpbmVTdGF0ZUNoYW5nZUZsYWdzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNo
YW5nZSkgJiYgIWNoYW5nZXMubV9zdGF0ZS5zdHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChzdGF0ZS5jaGFuZ2VzKCkpOwor
ICAgIAorICAgIGlmIChzdGF0ZS5oYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpKSB7CisgICAgICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6RmlsbEJydXNoKSkKKyAgICAgICAgICAgIHJlY29yZFNldElubGluZUZpbGxDb2xvcigqZmls
bENvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpICYmICFjaGFuZ2Vz
Lm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gpKQorICAgICAgICAgICAgcmVjb3JkU2V0SW5s
aW5lU3Ryb2tlQ29sb3IoKnN0cm9rZUNvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwogCi0g
ICAgcmV0dXJuIHRydWU7Ci19CisgICAgICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSkKKyAgICAgICAg
ICAgIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MoKSk7CiAKLXZvaWQg
UmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
Y2hhbmdlRmxhZ3MpCi17Ci0gICAgaWYgKCFjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMo
Y2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFu
Z2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNl
KHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5n
ZXMubV9zdGF0ZS5maWxsUGF0dGVybikKLSAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBh
dHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAgICAgcmVjb3JkU2V0U3RhdGUoY2hhbmdlcy5tX3N0
YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdl
KSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoKmNoYW5nZXMubV9zdGF0ZS5z
dHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMo
KS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gpKSB7Cisg
ICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBmaWxsUGF0dGVybigpKQorICAgICAgICAgICAgcmVj
b3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAgIH0KIAotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNz
Q2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0
ZS5zdHJva2VUaGlja25lc3MpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gpKSB7CisgICAgICAgIGlmIChh
dXRvIHBhdHRlcm4gPSBzdHJva2VQYXR0ZXJuKCkpCisgICAgICAgICAgICByZWNvcmRSZXNvdXJj
ZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAg
ICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmNoYW5nZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5
R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgIHJlY29yZFNldFN0YXRlKHN0YXRlKTsKIH0KIAogdm9p
ZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQpAQCAtOTksMjUg
Kzg4LDI1IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5
KCkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjdXJyZW50bHkgaW52b2tlZCBpbiBhbiBhZC1ob2Mg
bWFubmVyIHdoZW4gcmVjb3JkaW5nIGRyYXdpbmcgaXRlbXMuIFdlIHNob3VsZCBjb25zaWRlciBl
aXRoZXIKICAgICAvLyBzcGxpdHRpbmcgR3JhcGhpY3NDb250ZXh0IHN0YXRlIGNoYW5nZXMgaW50
byBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcywgb3IgcmVmYWN0b3JpbmcgdGhlIGNvZGUg
c3VjaCB0aGF0CiAgICAgLy8gdGhpcyBtZXRob2QgaXMgYXV0b21hdGljYWxseSBpbnZva2VkIHdo
ZW4gcmVjb3JkaW5nIGEgZHJhd2luZyBpdGVtLgotICAgIGF1dG8mIHN0YXRlQ2hhbmdlcyA9IGN1
cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlOwotICAgIGF1dG8gY2hhbmdlc0Zyb21MYXN0U3RhdGUg
PSBzdGF0ZUNoYW5nZXMuY2hhbmdlc0Zyb21TdGF0ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2lu
Z1N0YXRlKTsKLSAgICBpZiAoIWNoYW5nZXNGcm9tTGFzdFN0YXRlKQorICAgIGF1dG8mIHN0YXRl
ID0gY3VycmVudFN0YXRlKCkuc3RhdGU7CisgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8
PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkpOwotICAgIGFw
cGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5nZXMsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKTsK
LSAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKLSAgICBjdXJyZW50U3RhdGUo
KS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1fc3RhdGU7CisgICAgTE9HX1dJVEhf
U1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRl
ICIgPDwgc3RhdGUpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZSk7CisgICAgc3Rh
dGUuZGlkQXBwbHlDaGFuZ2VzKCk7CisgICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0
ZSA9IHN0YXRlOwogfQogCiBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OnN0
YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9z
dGF0ZTsKKyAgICByZXR1cm4gY3VycmVudFN0YXRlKCkuc3RhdGU7CiB9CiAKLXZvaWQgUmVjb3Jk
ZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIFJlY29yZGVy
OjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgY3Vy
cmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UuYWNjdW11bGF0ZShzdGF0ZSwgZmxhZ3MpOworICAgIGN1
cnJlbnRTdGF0ZSgpLnN0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgY3VycmVudFN0YXRlKCkubGFz
dERyYXdpbmdTdGF0ZSk7CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OnNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpAQCAtMjIyLDEyICsyMTEsMTUg
QEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiB2b2lkIFJlY29yZGVyOjpzYXZlKCkKIHsKKyAg
ICBHcmFwaGljc0NvbnRleHQ6OnNhdmUoKTsKICAgICByZWNvcmRTYXZlKCk7Ci0gICAgbV9zdGF0
ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yU2F2ZSgpKTsKKyAgICBt
X3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0KCkpOwogfQogCiB2b2lkIFJlY29y
ZGVyOjpyZXN0b3JlKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKTsKKwogICAg
IGlmICghbV9zdGF0ZVN0YWNrLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNzUsMTYg
KzI2NywyNCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVjb3JkZXI6OmdldENUTShHcmFwaGljc0NvbnRl
eHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6YmVnaW5UcmFu
c3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6YmVn
aW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKwogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bUlmTmVjZXNzYXJ5KCk7CiAgICAgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5
KTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0KCkuY2xvbmVGb3JU
cmFuc3BhcmVuY3lMYXllcigpKTsKKyAgICAKKyAgICBtX3N0YXRlLmFscGhhID0gMTsKIH0KIAog
dm9pZCBSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogeworICAgIEdyYXBoaWNzQ29u
dGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKwogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bUlmTmVjZXNzYXJ5KCk7CiAgICAgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBt
X3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgbV9zdGF0ZS5hbHBoYSA9IGN1cnJlbnRT
dGF0ZSgpLnN0YXRlLmFscGhhOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDg0NWVjMDA3NzJlZDJjNTRhMWU2Y2IyNmIyMTUxZGFi
YWE2ZWMwNzUuLmEyYTIyNjhlNWVkNWViNWMwYTljZmUzY2ZlZWJhNzcwMWMyYWVmNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjksNyArNjksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xvcihTUkdCQTx1
aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xv
cihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRTdHJva2VU
aGlja25lc3MoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZUNh
cChMaW5lQ2FwKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0
IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkU2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKQEAgLTEzNSwzMCArMTM1LDI1IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKIAog
ICAgIHN0cnVjdCBDb250ZXh0U3RhdGUgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBz
dGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gbGFzdERy
YXdpbmdTdGF0ZTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKICAgICAgICAgRmxvYXRS
ZWN0IGNsaXBCb3VuZHM7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRl
Q2hhbmdlOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBsYXN0RHJhd2luZ1N0YXRlOwog
Ci0gICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAp
Ci0gICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCi0gICAgICAgICAgICAsIGNsaXBCb3VuZHMo
Y2xpcCkKLSAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0ZShzdGF0ZSkKKyAgICAgICAgQ29u
dGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBjdG0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcEJvdW5kcykKKyAgICAgICAgICAg
IDogc3RhdGUoc3RhdGUpCisgICAgICAgICAgICAsIGN0bShjdG0pCisgICAgICAgICAgICAsIGNs
aXBCb3VuZHMoY2xpcEJvdW5kcykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgQ29u
dGV4dFN0YXRlIGNsb25lRm9yU2F2ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENv
bnRleHRTdGF0ZSBzdGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOwotICAg
ICAgICAgICAgc3RhdGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0ZTsKLSAgICAgICAgfQotCiAgICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclRy
YW5zcGFyZW5jeUxheWVyKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzdGF0
ZSA9IGNsb25lRm9yU2F2ZSgpOwotICAgICAgICAgICAgc3RhdGUubGFzdERyYXdpbmdTdGF0ZS5h
bHBoYSA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAgICAgICBhdXRvIGNv
cHkgPSAqdGhpczsKKyAgICAgICAgICAgIGNvcHkuc3RhdGUuZGlkQmVnaW5UcmFuc3BhcmVuY3lM
YXllcigpOworICAgICAgICAgICAgaWYgKGNvcHkubGFzdERyYXdpbmdTdGF0ZSkKKyAgICAgICAg
ICAgICAgICBjb3B5Lmxhc3REcmF3aW5nU3RhdGUtPmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKKyAgICAgICAgICAgIHJldHVybiBjb3B5OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0
cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CkBAIC0xODksNyArMTg0LDcgQEAgcHJpdmF0ZToK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRVcGRhdGVTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRM
aW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKQEAgLTI3
MCw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCByb3Vu
ZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dDo6Um91bmRp
bmdNb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKLSAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsK
KyAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYpOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0oKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5kZXggMWZkYzZiYTU2
YmZkYjI2MzZlZmIzNDYyYWRhMmE5OTBkMzM4OTk0NS4uNzlkZDEwMjA0NjIyNmZjMGExMWVkZTNi
ZTNiOTUyZWNiODdkMzc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJlY29y
ZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAgICAgYXBwZW5kPFNldFN0cm9r
ZVRoaWNrbmVzcz4odGhpY2tuZXNzKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNl
dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCit2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAg
IGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUsIGNoYW5nZUZsYWdzKTsKKyAgICBhcHBlbmQ8U2V0U3Rh
dGU+KHN0YXRlKTsKIH0KIAogdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldExpbmVDYXAoTGlu
ZUNhcCBsaW5lQ2FwKQpAQCAtNDE3LDE2ICs0MTcsMTMgQEAgc3RhdGljIGlubGluZSBmbG9hdCBz
aGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVyUmFkaXVzKQogCiBGbG9hdFJlY3QgUmVjb3Jk
ZXJJbXBsOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAogewotICAgIEZsb2F0UmVjdCBib3VuZHMgPSByZWN0OworICAgIGF1dG8gYm91bmRzID0gcmVj
dDsKICAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgpOwogCi0gICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dSYWRpdXM7Ci0gICAgQ29sb3Igc2hhZG93Q29s
b3I7Ci0gICAgaWYgKGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93
Q29sb3IpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBzaGFkb3dFeHRlbnQgPSBib3VuZHM7Ci0gICAg
ICAgIHNoYWRvd0V4dGVudC5tb3ZlKHNoYWRvd09mZnNldCk7Ci0gICAgICAgIHNoYWRvd0V4dGVu
dC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KHNoYWRvd1JhZGl1cykpOworICAgIGlmICho
YXNTaGFkb3coKSkgeworICAgICAgICBhdXRvIHNoYWRvd0V4dGVudCA9IGJvdW5kczsKKyAgICAg
ICAgc2hhZG93RXh0ZW50Lm1vdmUoZHJvcFNoYWRvdygpLm9mZnNldCk7CisgICAgICAgIHNoYWRv
d0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KGRyb3BTaGFkb3coKS5ibHVyUmFk
aXVzKSk7CiAgICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCA2NDIyNjVmMDk4
MDIyY2YyYjA1ZjE4MGMxNzRmYTAzNDYyZjJkZDQwLi5hYzJkMzE3OTY3NThjNjJjYzYxNTBhMTU0
OWQ3YTA5NDA2ZWVmYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkU2V0SW5s
aW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldElu
bGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNl
dFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRTZXRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXAp
IGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxv
YXQgZGFzaE9mZnNldCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9p
bikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXgg
OGZmMTlkMDAzNTRjZGJlZGUzYTViYTFhZjc1OGNmZjAyM2EyNWEyMi4uZjNjOGM5MGNkODhiYmUw
YzUxZTFkNGZhMTMzYzUxZTgzYjgwYjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmNwcApAQCAtOTcsMTAgKzk3LDEwIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBo
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAotICAgIGlmIChhdXRvIGlt
YWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlQ2hh
bmdlKCkubV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlk
ZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLnN0cm9r
ZUJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCi0g
ICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0
ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAo
YXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5z
dGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRp
ZmllcjsKIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggOTEx
NDZkZmM2ZmQ4NGRmOGUyOTU0ZjAzNzdkMDA2NmE3NzIzM2NjOS4uMTQxNjlhMDc1NThkNjE2YjA5
MjBjYjA1N2RjOGViMWMyYTU4OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihQYWludGluZ09wZXJhdGlv
bnMmIGNvbW1hbmRMaXN0KQogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyB7IH0sIHsgfSwgRmxv
YXRSZWN0OjppbmZpbml0ZVJlY3QoKSB9KTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSkgewogICAgICAgICBzdHJ1Y3Qg
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlv
bkRhdGE8ZmxvYXQ+IHsKICAgICAgICAgICAgIHZpcnR1YWwgflN0cm9rZVRoaWNrbmVzc0NoYW5n
ZSgpID0gZGVmYXVsdDsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBHCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVRoaWNrbmVzc0NoYW5nZT4o
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5n
ZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkp
IHsKICAgICAgICAgc3RydWN0IFN0cm9rZVN0eWxlQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVy
YXRpb24sIE9wZXJhdGlvbkRhdGE8U3Ryb2tlU3R5bGU+IHsKICAgICAgICAgICAgIHZpcnR1YWwg
flN0cm9rZVN0eWxlQ2hhbmdlKCkgPSBkZWZhdWx0OwogCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tl
U3R5bGVDaGFuZ2U+KHN0YXRlLnN0cm9rZVN0eWxlKSk7CiAgICAgfQogCi0gICAgaWYgKGZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkgeworICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6Q29tcG9zaXRlTW9kZSkpIHsKICAgICAgICAgc3RydWN0IENvbXBvc2l0ZU9wZXJhdGlvbkNo
YW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGU+IHsKICAgICAgICAgICAgIHZpcnR1YWwgfkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEcKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlPihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlv
biwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoZmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSB7CisgICAg
aWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpTaG91bGRBbnRpYWxpYXMpKSB7CiAgICAgICAgIHN0cnVjdCBTaG91bGRBbnRpYWxpYXNDaGFu
Z2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxib29sPiB7CiAgICAg
ICAgICAgICB2aXJ0dWFsIH5TaG91bGRBbnRpYWxpYXNDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAg
LTE1NSw2ICsxNTUsOCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwogCiAgICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFs
aWFzKSk7CiAgICAgfQorCisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6c2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCkBAIC0y
OTIsNyArMjk0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKICAgICB9OwogCiAgICAgYXV0
byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxS
ZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJl
Y3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMx
Niw3ICszMTgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLAogICAgIH07CiAKICAgICBhdXRv
JiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJl
Y3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcikpOworICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJs
ZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZS5v
cGVyYXRpb24pKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTM0Niw3ICszNDgsNyBAQCB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkUmVjdAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7
Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCwg
Y29sb3IsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dT
dGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+
KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5k
TW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IpCkBAIC01MzMsNyArNTM1LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgKICAgICAg
ICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWly
b19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSksCiAgICAg
ICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9m
ZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlLAotICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25l
c3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsIGZvbnRTbW9vdGhpbmcp
KTsKKyAgICAgICAgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNl
dCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwgZm9udFNtb290aGluZykpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikKQEAgLTU5OSw3ICs2MDEsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZQogICAgIH07CiAK
ICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0
ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQnJ1c2guY29s
b3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0K
IAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikKQEAgLTYyMiw3ICs2MjQsNyBAQCB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50MSwgY29uc3QgRmxvYXRQb2ludAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0
ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBv
aW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRl
LnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CisgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwg
c3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5z
aG91bGRBbnRpYWxpYXMpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGlja25lc3MsIGNv
bnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVybGlu
ZXMsIFN0cm9rZVN0eWxlKQpAQCAtNjQ1LDcgKzY0Nyw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQg
dGhpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
LSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tu
ZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VDb2xv
cikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0
aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9r
ZUJydXNoLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC02ODQsNyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAog
ICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwg
c3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOworICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPERyYXdFbGxpcHNlPihyZWN0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwg
c3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9r
ZVRoaWNrbmVzcykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCmluZGV4IDgzYzZkMjdkNmVhMzZjNzliZWJkNzgyNWY5OWI3YzQzOTA4
ZWU1NGIuLmI5NTI4NjMxMzQzMzAwMmZhZTcyYmRlNDc4MGQzMjU2OGRjNTgxY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKFdlYkNvcmU6OkxpbmVD
YXApIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgV2ViQ29yZTo6RGFzaEFy
cmF5JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBjMTllNzQxNTU3YzMwOGM5NDFlNGVmNzE1
ZTNkYjQ2NTk0ZDE4NWI2Li4yY2Q3ODY1ZWNhODI5ZWI0NTc4MGU5ZmIwZTcyNDdhMzcxMmJjYzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENH
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENH
V2luLmNwcApAQCAtMTc2LDI1ICsxNzYsMjIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwKICAg
ICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwog
ICAgIEZvbnRDYXNjYWRlOjpzZXRDR0NvbnRleHRGb250UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0
LCBmb250LnBsYXRmb3JtRGF0YSgpLmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC5wbGF0Zm9y
bURhdGEoKS51c2VHREkoKSk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZs
b2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAg
ICBhdXRvIGRyb3BTaGFkb3cgPSBncmFwaGljc0NvbnRleHQuZHJvcFNoYWRvdygpOwogCi0gICAg
Ym9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkg
PT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hh
ZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8
IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBl
ZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJh
d2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgZHJvcFNoYWRvdy5jb2xvci5p
c1ZhbGlkKCkgJiYgIWRyb3BTaGFkb3cuYmx1clJhZGl1cyAmJiAoIWdyYXBoaWNzQ29udGV4dC5z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lk
ZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93
KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9m
IHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlh
c2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC5maWxsQ29sb3IoKTsKLSAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yID0gc2hhZG93Q29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVk
QnkoZmlsbENvbG9yLmFscGhhQXNGbG9hdCgpKTsKKyAgICAgICAgQ29sb3Igc2hhZG93RmlsbENv
bG9yID0gZHJvcFNoYWRvdy5jb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShmaWxsQ29s
b3IuYWxwaGFBc0Zsb2F0KCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KHNoYWRvd0ZpbGxDb2xvcik7Ci0gICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9p
bnQueCgpICsgZHJvcFNoYWRvdy5vZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hhZG93
cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkg
Y29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KLSAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhp
Y3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworICAgICAgICBm
bG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIGRyb3BTaGFkb3cub2Zmc2V0LmhlaWdodCgp
ICogKGdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsK
ICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgc2hhZG93VGV4dFgs
IHNoYWRvd1RleHRZKTsKICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhj
Z0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocyk7CiAgICAgICAgIGlmIChmb250
LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBv
c2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250
LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgp
KTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50
LngoKSArIGRyb3BTaGFkb3cub2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKSwgcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocyk7CiAgICAgICAgIH0KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IpOwpAQCAtMjA4LDcgKzIwNSw3IEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZv
bnQmIGZvbnQsCiAgICAgfQogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7
CiAKICAgICBGb250Q2FzY2FkZTo6c2V0Rm9udFNtb290aGluZ1N0eWxlKGNnQ29udGV4dCwgb2xk
Rm9udFNtb290aGluZ1N0eWxlKTsKICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNnQ29udGV4
dCwgc2F2ZWRNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5jcHAKaW5kZXggN2VkNTM3YzkyNzkzNzcwZjQ0ODhhZTI5ZGY0MDcyN2Q3ZWIxYTNh
OS4uNjE3OGFlYjFjODc2Mzc3MjE5NWY5ZTQ0NzYxMGU0OTBlNzY0ZjViOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02OSw3ICs2OSw3
IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRp
bmdCb3goKSBjb25zdAogc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvIGdyYWRpZW50ID0gY29udGV4dC5zdHJv
a2VHcmFkaWVudCgpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQs
IGNvbnRleHQuc3RhdGUoKS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAg
Y29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50LCBjb250ZXh0LnN0cm9rZUdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgZWxzZSBpZiAoUGF0dGVybiogcGF0dGVybiA9IGNvbnRl
eHQuc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0
ZXJuKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNTQzODE4
MmRkZTg3NjNlYmFkMzhmMTkyZGY3OTVhYTA2MGI2NTFiYi4uOWUzNzg2ZTBmZGNkYjg5ZmIwNjYy
OGM4ZmNjNmRjODdiNzdjM2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MTI4LDEwICsxMjgsMTAgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0
ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUmJiBpdGVtKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9OwogCi0gICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5t
X3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFn
ZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5m
aWxsUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3Rh
dGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBoYW5k
bGVJdGVtKFdURk1vdmUoaXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwCmluZGV4IDg1NzdjYmJkZTZkMzkwMWQzNDcwNzYxZWQzMGY3OWQ5OGU4MmI5
OGQuLjliYWY5YTM1Yzk3MGY5Yjc1MTAzMDU2Y2I1YmQ3ODE2YWVjYWQ3NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTExNyw5ICsxMTcsOSBA
QCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Ryb2tlVGhp
Y2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpTZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKSk7CiB9CiAKLXZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzIGZsYWdzKQordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlz
dDo6U2V0U3RhdGUgeyBzdGF0ZSwgZmxhZ3MgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0
YXRlIH0pKTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZFNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmgKaW5kZXggOWIzM2EwNjdmZDE2YmNjZjE0MDQyYzE5NzRkZDY5MTk0MjI2
MjQ2OC4uYmVkMzYzZTA2MjQ1MzUyN2Y5YTA2MjA4OGNlNjc3YzJiOTkyMjVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoV2ViQ29yZTo6U1JHQkE8
dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoV2Vi
Q29yZTo6U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhp
Y2tuZXNzKGZsb2F0KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNl
dExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5l
RGFzaChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsK
ICAgICB2b2lkIHJlY29yZFNldExpbmVKb2luKFdlYkNvcmU6OkxpbmVKb2luKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTY2YTUz
OWM3MTJjNGM3NGVlNjZkNDYxNjVkZjI0YmMxN2Y5ZThjLi43MDcwMGEwZWI2YzI2NDVkNTMwOTVm
MThmZTY5MjM0ZDhjM2FhZWZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTggIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBo
aWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxp
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjItMDMtMTcgIEpvbmF0aGFuIEJl
ZGFyZCAgPEpvbldCZWRhcmRAZ21haWwuY29tPgogCiAgICAgICAgIGNvbmZpZ3VyZS14Y29kZS1m
b3ItZW1iZWRkZWQtZGV2ZWxvcG1lbnQgZmFpbHMgd2l0aCBYY29kZSAxMy4zCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVz
dHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3ND
b250ZXh0VGVzdHNDRy5jcHAKaW5kZXggMjQ3MzU4MGYxOTBlMGZkNjc0YzM2N2RhNDdjOWYxOTJi
YTI0ODVlNC4uMjE1YzE3YzY2NTdhZWRhNmE2ZTJjZDBhZTBjOWM5MjZmM2JkODJiMCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4
dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9H
cmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtNTIsNyArNTIsNyBAQCBURVNUKEdyYXBoaWNz
Q29udGV4dFRlc3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBvc2l0ZU9wZXJhdG9y
KQogICAgIEdyYXBoaWNzQ29udGV4dENHIGN0eChjZ0NvbnRleHQuZ2V0KCkpOwogCiAgICAgRVhQ
RUNUX0VRKGN0eC5jb21wb3NpdGVPcGVyYXRpb24oKSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJj
ZU92ZXIpOwotICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlT3BlcmF0aW9uKCksIEJsZW5kTW9k
ZTo6Tm9ybWFsKTsKKyAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZSgpLCBCbGVuZE1vZGU6Ok5v
cm1hbCk7CiAKICAgICBhdXRvIGdyZWVuUGl4ZWxDRyA9IGdyZWVuSW1hZ2UoKTsKICAgICBhdXRv
IGdyZWVuUGl4ZWxOYXRpdmUgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGdyZWVuUGl4ZWxDRy5nZXQo
KSk7CkBAIC03MSw3ICs3MSw3IEBAIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdHMsIERyYXdOYXRp
dmVJbWFnZURvZXNOb3RMZWFrQ29tcG9zaXRlT3BlcmF0b3IpCiAgICAgRVhQRUNUX0VRKHByaW1h
cnlEYXRhWzJdLCAwKTsKIAogICAgIEVYUEVDVF9FUShjdHguY29tcG9zaXRlT3BlcmF0aW9uKCks
IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5k
TW9kZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNUX0VRKGN0eC5i
bGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNDFhM2RhZmY3Zjk2M2I5NWFkNjViODBiMDUzNGRjZDZlMDFlNmMx
YS4uYTE3YjEyNmJjY2M2Y2Q2YjgzNjQyNWRjNDhkMGExYWQ4OGJkZDJkMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIyLTAzLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVw
IHRyYWNrIG9mIGNoYW5nZXMgdGlsbCB0aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5j
bHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMvZXh0ZW50
LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRpc3BsYXlsaXN0
cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMy0xNyAgTWF0dGVvIEZsb3JlcyAgPG1hdHRlb19m
bG9yZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI5MTEyOS1yMjkxMTI4KTog
W1dLMSBFV1NdIDMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9u
cy9hbmltYXRpb24tbW9kZWwvYW5pbWF0aW9uLXR5cGVzLyogdGVzdHMgYXJlIGEgY29uc3RhbnQg
dGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50
LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMv
ZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKaW5kZXggNTExYjdjMGM1NGQzMzIx
NmI3YzZlYWYwNDNhNzVjMTY3NjZkMDQyNy4uYjI5ZmUyZjUzOWFkOTY2ZjUwMmE1M2I3Mzc5MWVm
ZTE0YTBlOWNiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1p
bmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtNCwxMSArNCwxMiBAQAog
ICAoeSAwLjAwKSkKIChzYXZlKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikKLSAg
KHNoYWRvdy1ibHVyIDEyLjAwKQotICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjAp
Ci0gIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKLSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMg
MCkpCisgIChjaGFuZ2UtZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAgKGRyb3Atc2hhZG93CisgICAg
KHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAxMi4w
MCkKKyAgICAoc2hhZG93LWNvbG9yICMwMDAwMDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1y
YWRpdXMgMCkpKQogKGZpbGwtY29tcG9zaXRlZC1yZWN0CiAgIChyZWN0IGF0ICg1MCw1MCkgc2l6
ZSAxMDB4MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rp
c3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDM4NmUzOTQxMTg1ZjA5YTNjNjhlYzZjMmFlODhkZjExYzcwYjBhNjkuLjFkY2Fi
YmU3Y2UwNWJjYmU5NGUyMzM2NGViZTI5ZWE3NmZmMGY1OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1z
LWV4cGVjdGVkLnR4dApAQCAtNiwxMSArNiwxMiBAQAogICAoY3RtIHttPSgoMC44NywwLjUwKSgt
MC41MCwwLjg3KSkgdD0oODEuNzAsLTE4LjMwKX0pKQogKHNhdmUpCiAoc2V0LXN0YXRlCi0gIChj
aGFuZ2UtZmxhZ3MgNTEyKQotICAoc2hhZG93LWJsdXIgMTIuMDApCi0gIChzaGFkb3ctb2Zmc2V0
IHdpZHRoPTEwIGhlaWdodD0yMCkKLSAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQotICAoc2hhZG93
cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFncyBbZHJvcC1zaGFkb3ddKQor
ICAoZHJvcC1zaGFkb3cKKyAgICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCisg
ICAgKHNoYWRvdy1ibHVyIDEyLjAwKQorICAgIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKKyAgICAo
c2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1jb21wb3NpdGVkLXJlY3QKICAg
KHJlY3QgYXQgKDAsMCkgc2l6ZSAxMDB4MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQu
dHh0CmluZGV4IGJjMTdiNTExNDk5ZjgyNTZjOTkyOTBkYWU4NjE0ZDQ4OTRjYWY5Y2MuLjRkYTA2
YjNjMzg3NjJlZDcyNTY4NTRjNGUzZjRlMDc4M2E2NWZiNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dApAQCAt
OCw5ICs4LDEwIEBACiAgIChjb21wb3NpdGUtb3BlcmF0aW9uIHNvdXJjZS1vdmVyKQogICAoYmxl
bmQtbW9kZSBub3JtYWwpIGV4dGVudCBhdCAoMCwwKSBzaXplIDEwNHgxMDQpCiAoc2V0LXN0YXRl
Ci0gIChjaGFuZ2UtZmxhZ3MgMzI5NjApCi0gIChmaWxsLWNvbG9yICMwMDAwRkYpCi0gIChzdHJv
a2Utc3R5bGUgMCkKKyAgKGNoYW5nZS1mbGFncyBbZmlsbC1icnVzaCwgc3Ryb2tlLXN0eWxlLCBz
aG91bGQtYW50aWFsaWFzXSkKKyAgKGZpbGwtYnJ1c2gKKyAgICAoY29sb3IgIzAwMDBGRikpCisg
IChzdHJva2Utc3R5bGUgTk8tU1RST0tFKQogICAoc2hvdWxkLWFudGlhbGlhcyAwKSkKIChkcmF3
LXJlY3QKICAgKHJlY3QgYXQgKDAsMCkgc2l6ZSAxMDR4MikKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vz
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNjOWYyMWIzZGUzYzE4OTFlNWZhZTEyYmY1YjY4MGMw
OGQ5NWJkYWQuLmI3YmYxZWRlZDkzYWYyMWQxZmQ0ZGVjNDhjN2YxNTZkOWM4ZGFmYTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMSwyMSArMSwxMSBAQAog
IyBHb29kIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGxvb2sgYXQgdGhlIGJvdHMgb24gcmVzdWx0cy53
ZWJraXQub3JnIGZpcnN0CiAKICMgSW5jb3JyZWN0IHNpemUKLXdlYmtpdC5vcmcvYi8yMzY5MDYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1z
aXplLWJyZWFrcy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIz
NjkwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9saW5lLWJy
ZWFrL2xpbmUtYnJlYWstYW55d2hlcmUtYW5kLXdoaXRlLXNwYWNlLTAwMy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMzY5MDYgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd2hpdGUtc3BhY2UvYnJlYWstc3BhY2VzLTAwNi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMzY5MDYgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd2hpdGUtc3BhY2UvYnJlYWst
c3BhY2VzLXdpdGgtb3ZlcmZsb3ctd3JhcC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCiAKICMgVGhlcmUgaXMgdGV4dCBpbi9uZWFyIHRoZSBib3gKLXdlYmtpdC5vcmcvYi8yMzY5
MDcgZmFzdC9zaGFkb3ctZG9tL250aC1ub2RlLW9uLXNoYWRvdy1jaGlsZC1pbnZhbGlkYXRpb24u
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3NoYWRv
dy1kb20vbnRoLW5vZGUtb24tc2hhZG93LWNoaWxkLW5vLWppdC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGZhc3Qvc2hhZG93LWRvbS9udGgtbm9kZS1vbi1z
aGFkb3ctY2hpbGQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkw
NyBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3Qtc3R5bGUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2NvcGluZy9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdC1zdHls
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IG1hdGhtbC9w
cmVzZW50YXRpb24vbXJvb3QtcHJlZi13aWR0aC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb250YWluL2NvbnRhaW4tc2l6ZS1tdWx0aWNvbC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtY29udGFpbi9jb250YWluLXNpemUtbXVsdGljb2wtMDAyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLW11bHRpY29sLTAwMy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2Nzcy1mbGV4Ym94LXRlc3QxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIAogIyBNaXNwbGFjZWQgdGV4dApAQCAtMzcsNjAgKzI3LDcgQEAg
d2Via2l0Lm9yZy9iLzIzNjkxMiBodHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxp
Z2h0LXRleHQtZGVjb3JhdGlvbnMuaHQKIAogIyBXcm9uZyB0ZXh0IGNvbG9yCiB3ZWJraXQub3Jn
L2IvMjM2OTEzIGZhc3QvY3NzL3ZhcmlhYmxlcy90ZXN0LXN1aXRlLzAwNS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFz
dC9tdWx0aWNvbC9keW5hbWljL2luc2VydC1zcGFubmVyLWFmdGVyLWNvbnRlbnQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9mYXN0
L211bHRpY29sL2R5bmFtaWMvaW5zZXJ0LXNwYW5uZXItYmVmb3JlLWNvbnRlbnQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9mYXN0
L211bHRpY29sL2R5bmFtaWMvaW5zZXJ0LXNwYW5uZXItYWZ0ZXItc3Bhbm5lci1iZWZvcmUtY29u
dGVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTEzIGltcG9y
dGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtbHIvZmxvYXQtY29udGVudC1icmVhay5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2Js
aW5rL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtcmwvZmxvYXQtY29udGVudC1icmVhay5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zh
c3QvbXVsdGljb2wvdGFsbC1saW5lLWluLXNob3J0LWJsb2NrLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1sYXlvdXQtc3VwcHJlc3MtYmFzZWxpbmUtMDAxLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLWJsb2NrLTAw
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4tc2l6ZS1ibG9j
ay0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94X3Jvd3Nw
YW4tb3ZlcmZsb3ctYXV0b21hdGljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhi
b3gvZmxleGJveF9yb3dzcGFuLW92ZXJmbG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWZvbnRzL2ZpcnN0LWF2YWlsYWJsZS1mb250LTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KLSMgTm90IGEgZ3JlZW4gbGluZSBvbiB0aGUgbGVmdCBzaWRlIG9mIGEgeWVsbG93IHNxdWFy
ZQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMv
c3ZnLWRvY3VtZW50LXN0eWxlcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3Vt
ZW50LXN0eWxlcy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9k
b2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxl
cy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1z
dHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDkuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3Zn
LWRvY3VtZW50LXN0eWxlcy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50
LXN0eWxlcy0wMTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1
bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHls
ZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4
dGVybmFsLXN0eWxlcy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0
eWxlcy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5h
bC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDku
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMv
c3ZnLWV4dGVybmFsLXN0eWxlcy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMTEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVy
bmFsLXN0eWxlcy0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9p
bmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDAyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmct
aW5saW5lLXN0eWxlcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDA1
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9z
dmctaW5saW5lLXN0eWxlcy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMt
MDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxl
cy9zdmctaW5saW5lLXN0eWxlcy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAxMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHls
ZXMtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0
eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCi0j
IFRoZXJlIGlzIHJlZAotd2Via2l0Lm9yZy9iLzIzNjkxNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9ncmFkaWVudFRyYW5zZm9ybS9zdmctZ3JhZGll
bnRUcmFuc2Zvcm0tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
Z3JhZGllbnRUcmFuc2Zvcm0vc3ZnLWdyYWRpZW50VHJhbnNmb3JtLWNvbWJpbmF0aW9uLTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE1IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2dyYWRpZW50VHJhbnNmb3Jt
L3N2Zy1ncmFkaWVudFRyYW5zZm9ybS1jb21iaW5hdGlvbi0wMDMuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogCiAjIFRoZXJlIGFyZSBzbWFsbCByZWN0YW5nbGVzIG9yIGNoYXJhY3RlcnMgYmVs
b3cgbWFpbiBjaGFyYWN0ZXIKIHdlYmtpdC5vcmcvYi8yMzY5MTYgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9jaC11bml0LTAxMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCkBAIC0xMDEsMTUyICszOCw2IEBAIHdlYmtpdC5vcmcvYi8yMzY5MTYgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9pYy11bml0LTAxMC5oCiB3
ZWJraXQub3JnL2IvMjM2OTE2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy12YWx1ZXMvaWMtdW5pdC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFsdWVz
L2ljLXVuaXQtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBUcmFuc2Zvcm0gZmFp
bHVyZXMKLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNm
b3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2Vw
YXJhdGlvbnMtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDAz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qt
c2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9z
dmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3Jt
LWxpc3Qtc2VwYXJhdGlvbnMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJh
dGlvbnMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA4Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2Vw
YXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA5Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmct
dHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxp
c3Qtc2VwYXJhdGlvbnMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVu
Z3RoLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tbGVuZ3RoLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDA2Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxl
bmd0aC0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdp
bi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWNtLTAwMy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1sZW5ndGgtY20tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tbGVuZ3RoLWluLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtaW4tMDAyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxl
bmd0aC1pbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgt
aW4tMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1wdC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLXB0LTAw
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1wdC0wMDQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDAxLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3Ro
LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1v
cmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwNi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDguaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEw
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdp
bi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVu
Z3RoLTAxMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEzLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC0wMTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxNS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdp
bi1yZWxhdGl2ZS1sZW5ndGgtMDE2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTcuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
MDE5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjAuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLTAyMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDIyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC0wMjMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjYu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtMDI4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjkuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLTAzMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDMxLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LXJlbGF0aXZlLWxlbmd0aC0wMzIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzMy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0w
MzUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1s
ZW5ndGgtMDM3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzguaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVs
YXRpdmUtbGVuZ3RoLTAzOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQwLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC0wNDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0Mi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0
aC0wNDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
b3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0NS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2
ZS1sZW5ndGgtMDQ2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLWludmFsaWQtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAw
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVs
YXRpdmUtbGVuZ3RoLWludmFsaWQtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZh
bGlkLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDguaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0
aC1pbnZhbGlkLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMTEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLQotIyBNdWx0aWNvbCBmYWlsdXJlcwotd2Via2l0Lm9yZy9iLzIzNjkxOSBpZXRlc3Rj
ZW50ZXIvY3NzMy9tdWx0aWNvbHVtbi9jb2x1bW4tY29udGFpbmluZy1ibG9jay0wMDMuaHRtIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ibG9jay1uby1jbGlwLTAw
MS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWJsb2NrLW5v
LWNsaXAtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
Y2xpcC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1j
bGlwLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNv
bHVtbnMtaW52YWxpZC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1jb2x1bW5zLWludmFsaWQtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtY29sdW1ucy10b29sb25nLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvbnRhaW5pbmctMDAxLnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY29udGFpbmluZy0wMDIueGh0IFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1uZWdhdGl2ZS0wMDEu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1uZWdh
dGl2ZS0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1j
b3VudC1ub24taW50ZWdlci0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNv
bC9tdWx0aWNvbC1jb3VudC1ub24taW50ZWdlci0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1ub24taW50ZWdlci0wMDMueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1maWxsLWF1dG8tMDAyLnhodCBbIElt
YWdlT25seUZhaWx1cmUgUGFzcyBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1maWxsLWF1dG8tMDAz
LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZmlsbC1hdXRv
LWJsb2NrLWNoaWxkcmVuLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29s
L211bHRpY29sLWZpbGwtYmFsYW5jZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
dWx0aWNvbC9tdWx0aWNvbC1nYXAtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVs
dGljb2wvbXVsdGljb2wtZ2FwLTAwMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLWdhcC1sYXJnZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
dWx0aWNvbC9tdWx0aWNvbC1nYXAtbGFyZ2UtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbXVsdGljb2wvbXVsdGljb2wtZ2FwLW5lZ2F0aXZlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWhlaWdodC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1oZWlnaHQtYmxvY2stY2hpbGQtMDAxLnhodCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLTAwMS54aHQg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW1hcmdpbi0wMDIueGh0
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1tYXJnaW4tMDAzLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW1hcmdpbi1jaGls
ZC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1uZXN0
ZWQtY29sdW1uLXJ1bGUtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wv
bXVsdGljb2wtb3ZlcmZsb3dpbmctMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVs
dGljb2wvbXVsdGljb2wtcnVsZS0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1ydWxlLWNvbG9yLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLXJ1bGUtZnJhY3Rpb24tMDAxLnhodCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1mcmFjdGlvbi0wMDIueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLWxhcmdlLTAwMS54aHQgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtcGVyY2VudC0wMDEu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLXNhbWVs
ZW5ndGgtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
cnVsZS1zaG9ydGhhbmQtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wv
bXVsdGljb2wtc3Bhbi1hbGwtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGlj
b2wvbXVsdGljb2wtc3Bhbi1hbGwtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVs
dGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtMDAzLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtbWFyZ2luLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwYW4tYWxsLW1hcmdpbi1ib3R0b20tMDAxLnho
dCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1mbG9hdC0w
MDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC10YWJsZS1j
ZWxsLXZlcnRpY2FsLWFsaWduLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLXdpZHRoLXNtYWxsLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBvc2l0aW9uL211bHRpY29sL3Zsci1sdHItbHRyLWluLW11bHRpY29scy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wb3NpdGlvbi9tdWx0aWNvbC92cmwtbHRyLWx0ci1pbi1tdWx0aWNv
bHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIENTUyBTaGFwZXMgZmFpbHVyZXMKIHdl
YmtpdC5vcmcvYi8yMzY5MjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXNoYXBlcy9zaGFwZS1vdXRzaWRlL3NoYXBlLWltYWdlL3NoYXBlLWltYWdlLTAwMi5odG1sCiB3
ZWJraXQub3JnL2IvMjM2OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zaGFwZXMvc2hhcGUtb3V0c2lkZS9zaGFwZS1pbWFnZS9zaGFwZS1pbWFnZS0wMDMuaHRtbApA
QCAtMjgyLDI1ICs3Myw5IEBAIHdlYmtpdC5vcmcvYi8yMzY5MjIgc3lzdGVtLXByZXZpZXcvYmFk
Z2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogIyBOby9iYWQgY29sb3JlZCBib3hlcwogd2Vi
a2l0Lm9yZy9iLzIzNjkyMyBmYXN0L2Nzcy9wYWludC1vcmRlci1zaGFkb3cuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRlZC9ibGluay9zdmcvdGV4
dC9vYmItcGFpbnRzZXJ2ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkyMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21hdGhtbC9yZWxhdGlvbnMv
Y3NzLXN0eWxpbmcvY29sb3ItMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0
aW9uL3N0aWNreS9wb3NpdGlvbi1zdGlja3ktaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXBvc2l0aW9uL3N0aWNreS9wb3NpdGlvbi1zdGlja3ktd3JpdGluZy1tb2Rlcy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YXJpYWJsZXMvdmFycy1mb250LXNob3J0aGFuZC0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIE5vL2JhZCBncmFkaWVudC9wYXR0ZXJu
Ci13ZWJraXQub3JnL2IvMjM2OTI0IGltcG9ydGVkL21vemlsbGEvc3ZnL2xpbmVhckdyYWRpZW50
LWJhc2ljLTAzLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBp
bXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybWVkLTAxLnN2ZyBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL2dyYWRpZW50LWZs
aXBwZWQtc3RhcnQtZW5kLXBvaW50cy5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2Quc3ZnIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kQWxw
aGEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFk
aWVudHMvc3ByZWFkTWV0aG9kRGlhZ29uYWwuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kRGlhZ29uYWwyLnN2ZyBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3Nw
cmVhZE1ldGhvZERpYWdvbmFsMy5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2REaWFnb25hbDQuc3ZnIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0
aG9kRHVwbGljYXRlU3RvcC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2RSZXZlcnNlZC5zdmcgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zdG9wQWxwaGEuc3Zn
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy90cmFuc2Zvcm1z
L3RyYW5zZm9ybWVkLXRleHQtZmlsbC1ncmFkaWVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy90cmFuc2Zvcm1zL3RyYW5zZm9ybWVkLXRleHQtZmls
bC1wYXR0ZXJuLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBNZWRpYSBmYWlsdXJlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455192</attachid>
            <date>2022-03-20 02:27:18 -0700</date>
            <delta_ts>2022-03-20 19:28:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220320022716.patch</filename>
            <type>text/plain</type>
            <size>228673</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uM2RiMDAyNjQzZmVmNDI1ZWJjOGE5ZjIxM2I4ZmQ4
YWUzZGRmZTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MCBAQAorMjAyMi0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gV2Ugd2lsbCBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFdlIHdpbGwg
Y29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBncmFk
aWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAnU291
cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9mZnNl
dCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9yIGFu
ZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisKKyAg
ICAgICAgMy4gV2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBhbmQgdGhlIEJs
ZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3NpdGVNb2RlJy4K
KworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB3aWxsIGhhbmRsZSBzZXR0aW5n
IGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcKKyAgICAgICAgYW5kIGRlY29kaW5nIGFuZCBpdHMg
c3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdU
ZXh0VW5jaGVja2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Rmls
bENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNoYWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzaGFkb3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFk
b3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVk
U2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRl
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bWVyZ2VTdGF0ZUNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdl
c0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNoYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEFw
cGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFNtb290aEZvbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6
aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFk
aWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldFBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1
c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Y29sb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6Omlz
UHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmRyYXdFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENhaXJvOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
YWlybzo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OkdyYXBoaWNzQ29udGV4dENHKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0Q0dTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENH
OjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6c3Ry
b2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhz
UmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQnJ1c2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUNUTSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dJc0NsZWFyZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29u
dGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6
OmNsb25lRm9yU2F2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2NhbEJv
dW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KToKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KToKKyAgICAg
ICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKToKKyAgICAgICAg
KE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAg
ICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdvb2Ryb3cgIDxtYXR0
d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBzaG91bGQgYWx3YXlz
IGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2VhYWQwNmJlN2Y4Y2Vl
MDg2MGUzMjkxZS4uMGFjNDQzYThkZWU1NjA2NDkxN2YxYzc1Njg5MzFhYjUwMjc5NDZhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250
ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRT
dGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlBY3Rpdml0eUluTWFu
YWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4uZWJjYjUzMTdjZDdm
MzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTcx
LDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExvY2FsaXplQXhpc05h
bWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMzOWZmOGYyMjRlZjZh
ODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRlMDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1U
aW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQwZjg5Y2YxZjM0MmQ4
ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIyZWZkYzJjZWRkNTNm
YzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2NDQyNzg0NjFBMDAw
Mzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJG
NjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2NjdERjI2MEMyNjQ0
MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4Rjc1MDBEODJEMkQg
LyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyRkQzMEFDMjdFMzIx
N0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1
M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2
ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNF
QzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC0xMTQyOCw2
ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RB
bmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRkIyMzk2
MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2guY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnJ1c2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1
M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxNTIs
NiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVy
LmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oICov
LAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1l
cy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5jcHAg
Ki8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggKi8sCiAJ
CQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICov
LAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmgg
Ki8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBENEEzODEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhh
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNl
QnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0
MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYxMzUwOTI0QzlG
Q0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggMGU3ODA2M2UzYTQxY2JjNjkwZjBkMGNjYjc4ODExN2RlNjkz
OGEwMi4uNmFlNDU0ODM2MjM0ZmQ5MzE5MTk0NjhjN2Y0YjkyN2EyYjczNThlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTI0MzIsMTkgKzI0MzIsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVu
LCBkb3UKIAogICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAyICogbWFza1JlY3QuaGVp
Z2h0KCkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgICAgICAg
ICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0g
ICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRv
d0NvbG9yKTsKKyAgICAgICAgICAgIGF1dG8gZHJvcFNoYWRvdyA9IGMtPmRyb3BTaGFkb3coKTsK
IAogICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwotICAgICAgICAg
ICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7Ci0gICAgICAgICAgICBz
aGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEpOworICAgICAgICAgICAgc2hhZG93UmVj
dC5pbmZsYXRlKGRyb3BTaGFkb3cuYmx1clJhZGl1cyAqIDEuNCk7CisgICAgICAgICAgICBzaGFk
b3dSZWN0Lm1vdmUoZHJvcFNoYWRvdy5vZmZzZXQgKiAtMSk7CiAgICAgICAgICAgICBjLT5jbGlw
KHNoYWRvd1JlY3QpOwogCi0gICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0gb2Zmc2V0OworICAg
ICAgICAgICAgZHJvcFNoYWRvdy5vZmZzZXQgKz0gb2Zmc2V0OwogCi0gICAgICAgICAgICBjLT5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBTaGFkb3dS
YWRpdXNNb2RlOjpMZWdhY3kpOworICAgICAgICAgICAgYy0+c2V0U2hhZG93KGRyb3BTaGFkb3cu
b2Zmc2V0LCBkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuY29sb3IsIFNoYWRvd1Jh
ZGl1c01vZGU6OkxlZ2FjeSk7CiAKICAgICAgICAgICAgIGlmIChmaWxsKQogICAgICAgICAgICAg
ICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZjNmM4ZWZhNGNiMmEyLi4xYmQ2
NzU5ZTgwOWYzZTdlODg4NjVhMTc5MWY5OTc3NTVkYjA2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtNDMwLDEzICs0MzAsMTQgQEAgYm9vbCBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJldHVybiBtX3ByaW1h
cnlDb250ZXh0LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lkIEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2
b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0ZVN0YXRlKCkgaW5z
dGVhZCBvZiBkaWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAgIC8vIGFyZSBhbHNv
IGFwcGxpZWQgdG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3RhdGUsIHNvIHRoYXQg
Y29kZQogICAgIC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0aGF0IHJlYWRzIGZy
b20gdGhlIHN0YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3ByaW1hcnlDb250ZXh0
LnVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0
ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShz
dGF0ZSk7CisgICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBz
dGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0MmI3Mzc3NzI3YzEx
YTczYjZkODIxOGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQyZTM2N2RkMzdmMDIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2
b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYm
ICFVU0UoQ0FJUk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNh
dGVkUHJpdmF0ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMjVhM2QzZmU4
NzczMzFkZGEzOTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgyMmYxMTNkYmJiMDYx
NDFlMzBkZjhhMjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwxNSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiwgRm9udFNtb290
aGluZ01vZGUpOwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIAotICAgIHZv
aWQgdXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0
dGVybiogPSBudWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9y
JiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKKyAgICB2b2lkIHVw
ZGF0ZUZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQgdXBkYXRlU3Ryb2tl
QnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsK
ICAgICAgICAgVW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9Owot
ICAgIHZvaWQgdXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9h
dCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiwgU2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJ
TikKICAgICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTExMSwyNyArMTExLDEz
IEBAIHByaXZhdGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxUZXh0TWF0cml4Owog
CiAgICAgc3RydWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsKLSAgICAgICAgICAg
IENvbG9yIGNvbG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAg
ICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgICAg
ICAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0gICAgICAgIFN0eWxl
IGZpbGxTdHlsZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAgICAgICAgU291cmNl
QnJ1c2ggZmlsbEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaDsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hhZG93U3RhdGUgewot
ICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZsb2F0IGJsdXIgeyAw
IH07Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJvb2wgaWdub3JlVHJh
bnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRvd1N0YXRlIHNoYWRv
dzsKKyAgICAgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBib29sIGlnbm9yZVRy
YW5zZm9ybXMgeyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmlnaW5hbFN0YXRlOwot
ICAgIFN0YXRlIG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKaW5kZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJjOGEzZTg2My4uMDMx
MDMwMGFhNGU4OTQwZGZhYTc2M2UzNGUxYjBiYzkyYWEzZmZlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00Myw2
ICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hh
bmdlRmxhZ3MpCisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQorCiBHcmFwaGljc0Nv
bnRleHQ6On5HcmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0YWNrLmlzRW1wdHko
KSk7CkBAIC03MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQog
ICAgICAgICBtX3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnVw
ZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7Ci0gICAgbV9zdGF0
ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwg
ZmxhZ3MpOworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0RHJhd2luZ1N0YXRl
KTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGVsbGlwc2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAtOTMsODQgKzk4LDYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQg
PSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNN
b2RlIHJhZGl1c01vZGUpCi17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Ci0g
ICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0g
Y29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVzTW9kZTsKLSAgICBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdl
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKLXsKLSAgICBtX3N0
YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9
IDA7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFk
b3dSYWRpdXNNb2RlID0gU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAgICBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQot
Ym9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQm
IGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKLXsKLSAgICBvZmZzZXQgPSBtX3N0YXRlLnNoYWRv
d09mZnNldDsKLSAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAgIGNvbG9yID0gbV9z
dGF0ZS5zaGFkb3dDb2xvcjsKLQotICAgIHJldHVybiBoYXNTaGFkb3coKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51
bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYm
IHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBX
VEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0
ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwot
ICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGll
bnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwot
ICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYg
Z3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3Jh
ZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtID0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5maWxs
UGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSk7Ci0gICAgLy8gRklYTUU6IGFsc28gZmls
bCBwYXR0ZXJuPwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCkKIHsKICAgICArK21fdHJhbnNwYXJlbmN5TGF5ZXJDb3VudDsKQEAgLTQ5MSwx
MyArNDE4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBzZXRGaWxsQ29sb3Iob2xk
RmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJh
dGlvbjsKLSAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKLSAgICBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hh
bmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91bmRh
cmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBT
dHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKICAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGlu
IDAuNSB0byB0aGUgYXBwcm9wcmlhdGUgeC95IHNvIHRoYXQgdGhlIGZsb2F0IGFyaXRobWV0aWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRlZTc1MTA4YjNmYzZkM2ZlZi4uNTNhNmFh
M2Q4MGQ5ZjM2N2JlNjY4YmE2NGIyNjhjN2FjZTU3MjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY0LDkgKzY0LDgg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAotCi0gICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdy
YXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmID0g
eyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtODAsODMgKzc5LDg4IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRleHQgU3RhdGUK
IAotICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNrbmVzczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7IH0KLSAgICBmbG9hdCBz
dHJva2VUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsg
fQotCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRl
LnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VTdHlsZSBzdHJva2VT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBjb25zdCBD
b2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+
JiYpOwotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ry
b2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mID0geyB9
KTsKLSAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZUdyYWRpZW50LmdldCgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7IH0KKyAgICBHcmFkaWVudCog
ZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnQo
KTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbEJydXNoLnBhdHRlcm4oKTsgfQorICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0IFNv
dXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRlLnNldEZpbGxCcnVzaChicnVzaCk7IGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKSB7IG1fc3RhdGUuc2V0RmlsbENvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5z
ZXRGaWxsR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1
bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9CiAgICAg
V2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9Cisg
ICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxS
dWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgY29uc3QgQ29sb3Im
IGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgY29u
c3QgQ29sb3ImIHN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVz
aC5jb2xvcigpOyB9CisgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudCgpOyB9CisgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJu
KiBzdHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5wYXR0
ZXJuKCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVz
aCkgeyBtX3N0YXRlLnNldFN0cm9rZUJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0
YXRlLnNldFN0cm9rZUNvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldFN0cm9r
ZUdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYm
IHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRG
aWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7Ci0gICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpOyB9CisgICAgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0K
KyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5z
ZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4m
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7Ci0gICAgR3JhZGllbnQqIGZpbGxHcmFk
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOyB9CisgICAg
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0
eWxlOyB9CisgICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0
YXRlLnNldFN0cm9rZVN0eWxlKHN0eWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKwor
ICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmRyb3BTaGFkb3c7IH0KKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gZHJvcFNoYWRvdygpLm9mZnNldDsgfQorICAgIGZsb2F0IHNoYWRvd0JsdXIoKSBjb25zdCB7
IHJldHVybiBkcm9wU2hhZG93KCkuYmx1clJhZGl1czsgfQorICAgIGNvbnN0IENvbG9yJiBzaGFk
b3dDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5jb2xvcjsgfQorICAgIHZvaWQg
c2V0RHJvcFNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KSB7IG1fc3RhdGUuc2V0
RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1clJhZGl1cywg
Y29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNNb2RlIHNoYWRvd1JhZGl1c01vZGUgPSBT
aGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0KSB7IHNldERyb3BTaGFkb3coeyBvZmZzZXQsIGJsdXJS
YWRpdXMsIGNvbG9yLCBzaGFkb3dSYWRpdXNNb2RlIH0pOyB9CisgICAgdm9pZCBjbGVhclNoYWRv
dygpIHsgc2V0RHJvcFNoYWRvdyh7IH0pOyB9CisKKyAgICBib29sIGhhc1Zpc2libGVTaGFkb3co
KSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaXNWaXNpYmxlKCk7IH0KKyAgICBib29sIGhh
c0JsdXJyZWRTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaXNCbHVycmVkKCk7
IH0KKyAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5oYXNP
dXRzZXRzKCk7IH0KKworICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlTW9kZTsgfQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRp
b247IH0KKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gY29tcG9zaXRl
TW9kZSgpLmJsZW5kTW9kZTsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVN
b2RlIGNvbXBvc2l0ZU1vZGUpIHsgbV9zdGF0ZS5zZXRDb21wb3NpdGVNb2RlKGNvbXBvc2l0ZU1v
ZGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9
IEJsZW5kTW9kZTo6Tm9ybWFsKSB7IHNldENvbXBvc2l0ZU1vZGUoeyBvcGVyYXRpb24sIGJsZW5k
TW9kZSB9KTsgfQogCi0gICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMg
PSBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKTsgfQotICAgIGJv
b2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLmFscGhhOyB9CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRl
LnNldEFscGhhKGFscGhhKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKworICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
dGV4dERyYXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdp
bmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2Rl
KHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgCisgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIHZvaWQgc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShp
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3Rh
dGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQogICAg
IGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRp
YWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlh
cykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29s
IHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSBzaG91bGRT
bW9vdGhGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9CisgICAgdm9pZCBz
ZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0
U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRp
b24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhz
LgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBh
IGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBt
X3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMo
Ym9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsgfQotICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAgIHZvaWQgc2V0QWxw
aGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9Ci0gICAgZmxvYXQg
YWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0K
LSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5ibGVuZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBt
X3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5j
ZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNr
ID0gZHJhd0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBib29sIGRyYXdMdW1p
bmFuY2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsgfQot
Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkg
eyBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOyB9Ci0gICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS50ZXh0RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hhZG93
KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgU2hhZG93UmFkaXVz
TW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0U2hh
ZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAgIGJvb2wgaGFzVmlz
aWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWaXNpYmxl
KCk7IH0KLSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFk
b3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRo
KCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAgYm9vbCBoYXNCbHVy
cmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUu
c2hhZG93Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVt
aW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VN
YXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBl
YXJhbmNlKSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBw
ZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVh
cmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLQotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyk7CisgICAgdm9pZCB1cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlID0gc3Rk
OjpudWxsb3B0KTsKIAogICAgIC8vIENhbGxlZCAqYWZ0ZXIqIGFueSBjaGFuZ2UgdG8gR3JhcGhp
Y3NDb250ZXh0U3RhdGU7IGdlbmVyYWxseSB1c2VkIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzCiAgICAg
Ly8gdG8gdGhlIHBsYXRmb3JtIGNvbnRleHQncyBzdGF0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
VXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVT
dGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzYXZlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3Rv
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFN0YXRlLmNwcAppbmRleCA1MmNhZGQ2NDkxOTM1NDA4NjY0YzI3NmZjZTNk
NTk5ZTYxNGY5YWYzLi4xNTNhMWJmNmEzMWVmMmE3MzE2NWVlNDRhMDU3N2E1NzA3Yjk3ZjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0U3RhdGUuY3BwCkBAIC0yNiwzMDEgKzI2LDE0OSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFN0YXRlLmgiCiAKLSNpbmNsdWRlICJHcmFk
aWVudC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlBhdHRlcm4u
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotI2RlZmluZSBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShmbGFnLCBwcm9wZXJ0eSkg
XAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpm
bGFnKSAmJiAobV9zdGF0ZS5wcm9wZXJ0eSAhPSBzdGF0ZS5wcm9wZXJ0eSkpIFwKLSAgICAgICAg
Y2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnKTsKLQotR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICA6IHNob3VsZEFudGlhbGlh
cyh0cnVlKQotICAgICwgc2hvdWxkU21vb3RoRm9udHModHJ1ZSkKLSAgICAsIHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyh0cnVlKQotICAgICwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFs
c2UpCi0gICAgLCBkcmF3THVtaW5hbmNlTWFzayhmYWxzZSkKK0dyYXBoaWNzQ29udGV4dFN0YXRl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCisg
ICAgOiBjaGFuZ2VGbGFncyhjaGFuZ2VGbGFncykKIHsKIH0KIAotR3JhcGhpY3NDb250ZXh0U3Rh
dGU6On5HcmFwaGljc0NvbnRleHRTdGF0ZSgpID0gZGVmYXVsdDsKLUdyYXBoaWNzQ29udGV4dFN0
YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0g
ZGVmYXVsdDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFw
aGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYp
ID0gZGVmYXVsdDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
b3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0gZGVmYXVsdDsKLQotdm9pZCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiti
b29sIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcygpIGNvbnN0
CiB7Ci0gICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkgewotICAgICAgICBzdHJva2VDb2xvciA9IHN0
YXRlLnN0cm9rZUNvbG9yOwotICAgICAgICBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUdy
YWRpZW50OwotICAgICAgICBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAg
ICB9Ci0KLSAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxD
b2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zQW55KGZpbGxGbGFncykpIHsKLSAgICAgICAgZmlsbENvbG9yID0gc3RhdGUuZmlsbENv
bG9yOwotICAgICAgICBmaWxsR3JhZGllbnQgPSBzdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAgICAg
IGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgfQotCi0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAg
IHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgc2hhZG93Qmx1ciA9
IHN0YXRlLnNoYWRvd0JsdXI7Ci0gICAgICAgIHNoYWRvd0NvbG9yID0gc3RhdGUuc2hhZG93Q29s
b3I7Ci0gICAgICAgIHNoYWRvd1JhZGl1c01vZGUgPSBzdGF0ZS5zaGFkb3dSYWRpdXNNb2RlOwot
ICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgc3Ryb2tlVGhpY2tuZXNzID0gc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0ZXh0RHJhd2luZ01vZGUgPSBz
dGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgc3Ryb2tlU3R5bGUgPSBz
dGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBmaWxsUnVsZSA9IHN0YXRlLmZpbGxS
dWxlOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ2hhbmdlRmxhZ3MgcHJpbWl0aXZlQ2hhbmdlRmxh
Z3MgeyBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdl
OjpGaWxsQnJ1c2ggfTsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBhbHBoYSA9IHN0YXRlLmFscGhhOworICAgIGlm
IChjaGFuZ2VGbGFncyAhPSAoY2hhbmdlRmxhZ3MgJiBwcmltaXRpdmVDaGFuZ2VGbGFncykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpIHsKLSAgICAgICAgY29tcG9zaXRlT3BlcmF0b3Ig
PSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgYmxlbmRNb2RlID0gc3RhdGUuYmxl
bmRNb2RlOwotICAgIH0KKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpTdHJv
a2VCcnVzaCkgJiYgIXN0cm9rZUJydXNoLmlzUHJpbWl0aXZlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hv
dWxkQW50aWFsaWFzOworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OkZpbGxC
cnVzaCkgJiYgIWZpbGxCcnVzaC5pc1ByaW1pdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNt
b290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0ZS5zaG91
bGRTbW9vdGhGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
OwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
ID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAg
ICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQotICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBzdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworICAgIHJldHVybiB0cnVlOworfQogCit2b2lk
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYg
bGFzdERyYXdpbmdTdGF0ZSkKK3sKKyAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENoYW5nZSBj
aGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBp
ZiAoIXN0YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnByb3BlcnR5
ID09IHN0YXRlLipwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+
KnByb3BlcnR5ID0gc3RhdGUuKnByb3BlcnR5OworICAgICAgICBjaGFuZ2VGbGFncy5zZXQoY2hh
bmdlLCAhbGFzdERyYXdpbmdTdGF0ZSB8fCAoKmxhc3REcmF3aW5nU3RhdGUpLipwcm9wZXJ0eSAh
PSB0aGlzLT4qcHJvcGVydHkpOworICAgIH07CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZp
bGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxs
QnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKworICAgIG1lcmdlQ2hh
bmdlKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnN0cm9rZUJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlj
a25lc3MpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKworICAgIG1lcmdl
Q2hhbmdlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3cpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZEFudGlh
bGlhcywgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxp
YXMpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZvbnRzKTsKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIG1lcmdlQ2hh
bmdlKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpkcmF3THVtaW5hbmNlTWFzayk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJh
bmNlQ2hhbmdlKSkKLSAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBzdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5k
aWYKIH0KIAotR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKSBjb25zdAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5U
cmFuc3BhcmVuY3lMYXllcigpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShT
dHJva2VHcmFkaWVudENoYW5nZSwgc3Ryb2tlR3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKFN0cm9rZVBhdHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENI
RUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50
KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmls
bFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkKLSAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0
ICE9IHN0YXRlLnNoYWRvd09mZnNldAotICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVy
ICE9IHN0YXRlLnNoYWRvd0JsdXIKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3Ig
IT0gc3RhdGUuc2hhZG93Q29sb3IpKQotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9Q
RVJUWShTdHJva2VUaGlja25lc3NDaGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoVGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01v
ZGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBz
dHJva2VDb2xvcik7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hh
bmdlLCBmaWxsQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0
eWxlQ2hhbmdlLCBzdHJva2VTdHlsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
RmlsbFJ1bGVDaGFuZ2UsIGZpbGxSdWxlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJU
WShBbHBoYUNoYW5nZSwgYWxwaGEpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNB
bnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRl
LmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUu
YmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9kZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRk
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAg
ICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7
Ci0gICAgfQotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFz
Q2hhbmdlLCBzaG91bGRBbnRpYWxpYXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KFNob3VsZFNtb290aEZvbnRzQ2hhbmdlLCBzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFu
Z2UsIGRyYXdMdW1pbmFuY2VNYXNrKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgQ0hFQ0tfRk9SX0NIQU5H
RURfUFJPUEVSVFkoVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsK
KyNpZiBVU0UoQ0cpCisgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNl
dHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0byAxLgorICAgIGFscGhhID0gMTsKICNlbmRpZgotCi0g
ICAgcmV0dXJuIGNoYW5nZUZsYWdzOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlOjphY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCitzdGF0aWMgY29uc3QgY2hh
ciogc3RhdGVDaGFuZ2VOYW1lKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UgY2hhbmdlKQog
ewotICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBmbGFncyk7Ci0KLSAgICBhdXRvIHN0
cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnko
c3Ryb2tlRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdzLnJlbW92ZShzdHJva2VGbGFncyk7
Ci0KLSAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zQW55KGZpbGxGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGZpbGxGbGFn
cyk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHN0YXRlQ2hhbmdlTmFtZXNbXSA9IHsK
KyAgICAgICAgImZpbGwtYnJ1c2giLAorICAgICAgICAiZmlsbC1ydWxlIiwKKworICAgICAgICAi
c3Ryb2tlLWJydXNoIiwKKyAgICAgICAgInN0cm9rZS10aGlja25lc3MiLAorICAgICAgICAic3Ry
b2tlLXN0eWxlIiwKKworICAgICAgICAiY29tcG9zaXRlLW1vZGUiLAorICAgICAgICAiZHJvcC1z
aGFkb3ciLAorCisgICAgICAgICJhbHBoYSIsCisgICAgICAgICJpbWFnZS1pbnRlcnBvbGF0aW9u
LXF1YWxpdHkiLAorICAgICAgICAidGV4dC1kcmF3aW5nLW1vZGUiLAorCisgICAgICAgICJzaG91
bGQtYW50aWFsaWFzIiwKKyAgICAgICAgInNob3VsZC1zbW9vdGgtZm9udHMiLAorICAgICAgICAi
c2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRzIiwKKyAgICAgICAgInNoYWRvd3MtaWdub3Jl
LXRyYW5zZm9ybXMiLAorICAgICAgICAiZHJhdy1sdW1pbmFuY2UtbWFzayIKKyNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQorICAgICAgICAsICJ1c2UtZGFyay1hcHBlYXJhbmNlIgorI2Vu
ZGlmCisgICAgfTsKIAotICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0b3JGbGFncyA9IHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShjb21w
b3NpdGVPcGVyYXRvckZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoY29tcG9z
aXRlT3BlcmF0b3JGbGFncyk7CisgICAgdW5zaWduZWQgbWFzayA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjaGFuZ2UpOworICAgIEFTU0VSVCghKChtYXNrIC0gMSkgJiBtYXNrKSk7CiAKLSAgICBt
X2NoYW5nZUZsYWdzLmFkZChmbGFncyk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obG9nMihtYXNrKSk7CisgICAgcmV0dXJuIHN0YXRlQ2hhbmdlTmFtZXNbaW5k
ZXhdOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitUZXh0U3RyZWFtJiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50LCBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ryb2tlUGF0dGVy
bik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQo
Km1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKm1f
c3RhdGUuZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAg
ICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNoYWRvdyht
X3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0Nv
bG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFRleHREcmF3aW5n
TW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNo
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9yKTsK
KyAgICBhdXRvIGR1bXAgPSBbJl0oQ2hhbmdlIGNoYW5nZSwgYXV0byBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6KnByb3BlcnR5LCBjb25zdCBTdHJpbmcmIG5hbWUpIHsKKyAgICAgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkobmFt
ZSwgdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VTdHlsZShtX3N0YXRlLnN0cm9rZVN0eWxlKTsKKyAgICB0cy5kdW1w
UHJvcGVydHkoImNoYW5nZS1mbGFncyIsIGNoYW5nZUZsYWdzKTsKIAotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUobV9zdGF0ZS5maWxsUnVsZSk7CisgICAgZHVtcChD
aGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6
RmlsbEJydXNoKSk7CisgICAgZHVtcChDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAg
c3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6RmlsbFJ1bGUpKTsKIAotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAg
IGNvbnRleHQuc2V0QWxwaGEobV9zdGF0ZS5hbHBoYSk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9r
ZUJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJy
dXNoLCAgICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlQnJ1c2gp
KTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICBzdGF0ZUNoYW5n
ZU5hbWUoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MpKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tl
U3R5bGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5
bGUsICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpTdHJva2VTdHlsZSkp
OwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pKQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbiht
X3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBtX3N0YXRlLmJsZW5kTW9kZSk7CisgICAgZHVtcChD
aGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6
Q29tcG9zaXRlTW9kZSkpOworICAgIGR1bXAoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93LCAgICAgICAgICAgICAg
ICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkRyb3BTaGFkb3cpKTsKIAotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXND
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhtX3N0YXRlLnNob3Vs
ZEFudGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNl
dFNob3VsZFNtb290aEZvbnRzKG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3
THVtaW5hbmNlTWFza0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2sobV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNo
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShtX3N0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIGR1bXAoQ2hhbmdlOjpBbHBoYSwg
ICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkFscGhhKSk7CisgICAg
ZHVtcChDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgc3RhdGVDaGFuZ2VOYW1lKENo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgIGR1bXAoQ2hhbmdlOjpUZXh0
RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJh
d2luZ01vZGUsICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlRleHREcmF3aW5n
TW9kZSkpOwogCisgICAgZHVtcChDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgc3Rh
dGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSk7CisgICAgZHVtcChDaGFuZ2U6
OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNo
b3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxk
U21vb3RoRm9udHMpKTsKKyAgICBkdW1wKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzLCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
LCBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKTsK
KyAgICBkdW1wKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICBzdGF0ZUNoYW5nZU5h
bWUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpOworICAgIGR1bXAoQ2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3
THVtaW5hbmNlTWFzaywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkRyYXdMdW1p
bmFuY2VNYXNrKSk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFu
Y2VDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFVzZURhcmtBcHBlYXJhbmNlKG1fc3RhdGUu
dXNlRGFya0FwcGVhcmFuY2UpOworICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSwgICAg
ICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlKSk7CiAjZW5k
aWYKKyAgICByZXR1cm4gdHM7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICB0
cy5kdW1wUHJvcGVydHkoImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7Ci0K
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFk
aWVudCIsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2Up
KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImZpbGwtZ3JhZGllbnQiLCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBh
dHRlcm5DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1f
c3RhdGUuZmlsbFBhdHRlcm4uZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJzaGFkb3ctYmx1ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7Ci0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9y
KTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwg
bV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7Ci0g
ICAgfQotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ry
b2tlLXRoaWNrbmVzcyIsIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVD
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9z
dGF0ZS50ZXh0RHJhd2luZ01vZGUudG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxDb2xvckNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1f
c3RhdGUuZmlsbENvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic3Ryb2tlLXN0eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2Up
KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUu
YWxwaGEpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiY29tcG9zaXRlLW9wZXJhdG9yIiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRN
b2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0
ZS5ibGVuZE1vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic2hvdWxkLWFudGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRT
bW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290
aC1mb250cyIsIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVs
LXF1YW50aXplLWZvbnRzIiwgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJz
aGFkb3dzLWlnbm9yZS10cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRy
YXctbHVtaW5hbmNlLW1hc2siLCBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJ1c2UtZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZSk7Ci0jZW5kaWYKKyAgICB0cyA8PCBzdGF0ZUNoYW5nZU5hbWUoY2hhbmdlKTsKKyAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSkKIHsKLSAgICBzdGF0ZUNoYW5nZS5kdW1wKHRzKTsKLSAgICByZXR1cm4gdHM7Cisg
ICAgcmV0dXJuIHN0YXRlLmR1bXAodHMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuaAppbmRleCBmMzU1MTE5ZjY2OTk3ZDJjZmMwOWZmMWZkYmYwN2Y4YTU5NTk1OTY3
Li42ZDk2ZDQzMWYxOGYxMzNkMTUwZGZkZTdiMmU1YzAxZmE4Nzk0NTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
LmgKQEAgLTI1LDExNiArMjUsMjM2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiU291cmNlQnJ1c2guaCIK
ICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFkaWVu
dDsKLWNsYXNzIFBhdHRlcm47Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB+R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYmKTsKLQotICAgIGVudW0gQ2hhbmdlIDogdWludDMyX3QgewotICAgICAgICBTdHJv
a2VHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIFN0
cm9rZVBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKLSAgICAgICAg
RmlsbEdyYWRpZW50Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAyLAotICAgICAg
ICBGaWxsUGF0dGVybkNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCi0gICAg
ICAgIFN0cm9rZVRoaWNrbmVzc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKLSAg
ICAgICAgU3Ryb2tlQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAot
ICAgICAgICBTdHJva2VTdHlsZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYs
Ci0gICAgICAgIEZpbGxDb2xvckNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
NywKLSAgICAgICAgRmlsbFJ1bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCA4LAotICAgICAgICBTaGFkb3dDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDksCi0gICAgICAgIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9
IDEgPDwgMTAsCi0gICAgICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMTEsCi0gICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAg
ICAgICA9IDEgPDwgMTIsCi0gICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTMsCi0gICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMTQsCi0gICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMTUsCi0gICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdl
ICAgICAgICAgICAgICAgICA9IDEgPDwgMTYsCi0gICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSAgICAgICA9IDEgPDwgMTcsCi0gICAgICAgIERyYXdMdW1pbmFuY2VNYXNr
Q2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMTgsCi0gICAgICAgIEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UgICAgICAgICA9IDEgPDwgMTksCisgICAgZW51bSBjbGFzcyBDaGFu
Z2UgOiB1aW50MzJfdCB7CisgICAgICAgIEZpbGxCcnVzaCAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMCwKKyAgICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorCisg
ICAgICAgIFN0cm9rZUJydXNoICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgU3Ry
b2tlVGhpY2tuZXNzICAgICAgICAgICAgID0gMSA8PCAzLAorICAgICAgICBTdHJva2VTdHlsZSAg
ICAgICAgICAgICAgICAgPSAxIDw8IDQsCisKKyAgICAgICAgQ29tcG9zaXRlTW9kZSAgICAgICAg
ICAgICAgID0gMSA8PCA1LAorICAgICAgICBEcm9wU2hhZG93ICAgICAgICAgICAgICAgICAgPSAx
IDw8IDYsCisKKyAgICAgICAgQWxwaGEgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA3LAor
ICAgICAgICBUZXh0RHJhd2luZ01vZGUgICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgICAgIElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgICA9IDEgPDwgOSwKKworICAgICAgICBTaG91bGRBbnRp
YWxpYXMgICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgICAgICBTaG91bGRTbW9vdGhGb250cyAg
ICAgICAgICAgPSAxIDw8IDExLAorICAgICAgICBTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMg
PSAxIDw8IDEyLAorICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAgICAgPSAxIDw8IDEz
LAorICAgICAgICBEcmF3THVtaW5hbmNlTWFzayAgICAgICAgICAgPSAxIDw8IDE0LAogI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgIFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdl
ICAgICAgICAgICAgICAgICA9IDEgPDwgMjAsCisgICAgICAgIFVzZURhcmtBcHBlYXJhbmNlICAg
ICAgICAgICA9IDEgPDwgMTUsCiAjZW5kaWYKICAgICB9OwotICAgIHVzaW5nIFN0YXRlQ2hhbmdl
RmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKKyAgICB1c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlv
blNldDxDaGFuZ2U+OworCisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUo
Y29uc3QgQ2hhbmdlRmxhZ3MmID0geyB9KTsKKworICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBj
b25zdCB7IHJldHVybiBjaGFuZ2VGbGFnczsgfQorICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkg
eyBjaGFuZ2VGbGFncyA9IHsgfTsgfQorCisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291
cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbEJydXNoLCAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbEJydXNoLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCwgeyBjb2xvciB9KTsgfQorICAgIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBmaWxsQnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShn
cmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6RmlsbEJy
dXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikg
eyBmaWxsQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRk
KENoYW5nZTo6RmlsbEJydXNoKTsgfQogCi0gICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyk7CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0
eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxs
UnVsZSk7IH0KIAotICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQ7Ci0gICAgUmVm
UHRyPFBhdHRlcm4+IHN0cm9rZVBhdHRlcm47CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25z
dCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VCcnVzaCwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpT
dHJva2VCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgeyBjb2xvciB9
KTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IHN0cm9rZUJydXNoLnNl
dEdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdz
LmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihS
ZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IHN0cm9rZUJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShw
YXR0ZXJuKSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorCisgICAg
dm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNldFByb3Bl
cnR5KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9r
ZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNzKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUo
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHls
ZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUpOyB9CisK
KyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
Ojpjb21wb3NpdGVNb2RlLCBjb21wb3NpdGVNb2RlKTsgfQorICAgIHZvaWQgc2V0RHJvcFNoYWRv
dyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJv
cFNoYWRvdywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93LCBkcm9wU2hhZG93KTsg
fQorCisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OkFscGhhLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhLCBhbHBoYSk7IH0KKyAgICB2b2lk
IHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7IH0KKyAgICB2b2lkIHNldFRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERy
YXdpbmdNb2RlLCB0ZXh0RHJhd2luZ01vZGUpOyB9CisKKyAgICB2b2lkIHNldFNob3VsZEFudGlh
bGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFu
dGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNob3VsZEFu
dGlhbGlhcyk7IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21v
b3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9udHMpOyB9
CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9CisgICAgdm9pZCBzZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsg
fQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9v
bCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VEYXJrQXBw
ZWFyYW5jZSk7IH0KKyNlbmRpZgogICAgIAotICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRp
ZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKKyAgICBib29sIGhhc09ubHlQ
cmltaXRpdmVDaGFuZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0
YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBkaWRCZWdp
blRyYW5zcGFyZW5jeUxheWVyKCk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAg
IFdURjo6VGV4dFN0cmVhbSYgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdDsKIAotICAgIENv
bG9yIHN0cm9rZUNvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3IgZmlsbENvbG9yIHsg
Q29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBk
ZWNvZGUoRGVjb2RlciYpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm07Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtOworICAgIENoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwogCisgICAgU291cmNlQnJ1c2ggZmls
bEJydXNoIHsgQ29sb3I6OmJsYWNrIH07CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVs
ZTo6Tm9uWmVybyB9OworICAgIAorICAgIFNvdXJjZUJydXNoIHN0cm9rZUJydXNoIHsgQ29sb3I6
OmJsYWNrIH07CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzIHsgMCB9OwotICAgIGZsb2F0IHNo
YWRvd0JsdXIgeyAwIH07Ci0gICAgZmxvYXQgYWxwaGEgeyAxIH07Ci0KICAgICBTdHJva2VTdHls
ZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07Ci0gICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBX
aW5kUnVsZTo6Tm9uWmVybyB9OwotCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdp
bmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciB9OwotICAg
IEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1vZGU6Ok5vcm1hbCB9OworICAgIAorICAgIENv
bXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVy
LCBCbGVuZE1vZGU6Ok5vcm1hbCB9OworICAgIERyb3BTaGFkb3cgZHJvcFNoYWRvdzsKKyAgICAK
KyAgICBmbG9hdCBhbHBoYSB7IDEgfTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQgfTsKLSAg
ICBTaGFkb3dSYWRpdXNNb2RlIHNoYWRvd1JhZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpE
ZWZhdWx0IH07CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4
dERyYXdpbmdNb2RlOjpGaWxsIH07CiAKLSAgICBib29sIHNob3VsZEFudGlhbGlhcyA6IDE7Ci0g
ICAgYm9vbCBzaG91bGRTbW9vdGhGb250cyA6IDE7Ci0gICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMgOiAxOwotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgOiAxOwot
ICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2sgOiAxOworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFz
IHsgdHJ1ZSB9OworICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgeyB0cnVlIH07CisgICAgYm9v
bCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgeyB0cnVlIH07CisgICAgYm9vbCBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07CisgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzayB7
IGZhbHNlIH07CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURh
cmtBcHBlYXJhbmNlIDogMTsKKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2UgfTsK
ICNlbmRpZgotfTsKKyAgICAKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICB2b2lkIHNldFByb3BlcnR5KENoYW5nZSBjaGFuZ2UsIFQgR3JhcGhpY3NDb250ZXh0U3RhdGU6
Oipwcm9wZXJ0eSwgY29uc3QgVCYgdmFsdWUpCisgICAgeworI2lmICFVU0UoQ0FJUk8pCisgICAg
ICAgIGlmICh0aGlzLT4qcHJvcGVydHkgPT0gdmFsdWUpCisgICAgICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKyAgICAgICAgdGhpcy0+KnByb3BlcnR5ID0gdmFsdWU7CisgICAgICAgIGNoYW5nZUZs
YWdzLmFkZChjaGFuZ2UpOworICAgIH0KIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAg
ICA6IG1fc3RhdGUoc3RhdGUpCi0gICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwg
VCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBUJiYgdmFsdWUpCiAgICAgeworI2lm
ICFVU0UoQ0FJUk8pCisgICAgICAgIGlmICh0aGlzLT4qcHJvcGVydHkgPT0gdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgdGhpcy0+KnByb3BlcnR5ID0gV1RGTW92
ZSh2YWx1ZSk7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChjaGFuZ2UpOwogICAgIH0KK307CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VzRnJvbVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgY29uc3Q7Cit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgYXV0byBlbmNvZGUgPSBbJl0oQ2hhbmdlIGNoYW5nZSwgYXV0byBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5KSB7CisgICAgICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgZW5jb2RlciA8PCB0aGlzLT4qcHJvcGVy
dHk7CisgICAgfTsKIAotICAgIHZvaWQgYWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLSAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwotICAgIAotICAgIHZvaWQgZHVtcChXVEY6
OlRleHRTdHJlYW0mKSBjb25zdDsKKyAgICBlbmNvZGVyIDw8IGNoYW5nZUZsYWdzOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyBtX2NoYW5nZUZsYWdzOwotfTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpG
aWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZp
bGxCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisKKyAgICBlbmNvZGUoQ2hh
bmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnN0cm9rZUJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyk7Cisg
ICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisKKyAgICBlbmNvZGUoQ2hhbmdlOjpDb21w
b3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBv
c2l0ZU1vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisKKyAgICBlbmNvZGUo
Q2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmFscGhhKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5LCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkpOworICAgIGVuY29kZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlKTsKKworICAgIGVuY29kZShD
aGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2hvdWxkQW50aWFsaWFzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRTbW9vdGhG
b250cywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZv
bnRzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7Cisg
ICAgZW5jb2RlKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgZW5jb2RlKENo
YW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpkcmF3THVtaW5hbmNlTWFzayk7CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkK
KyAgICBlbmNvZGUoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlKTsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4g
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1
dG8gZGVjb2RlID0gWyZdKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgQ2hhbmdlIGNoYW5n
ZSwgYXV0byBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5KSB7CisgICAgICAgIGlmICgh
c3RhdGUuY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgIHVzaW5nIFByb3BlcnR5VHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+KCku
KnByb3BlcnR5KT46OnR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UHJvcGVydHlUeXBlPiB2
YWx1ZTsKKyAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzdGF0ZS4qcHJvcGVydHkgPSAqdmFs
dWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CiAKLVdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOworICAgIGRl
Y29kZXIgPj4gY2hhbmdlRmxhZ3M7CisgICAgaWYgKCFjaGFuZ2VGbGFncykKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRlKCpjaGFu
Z2VGbGFncyk7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsQnJ1c2gsICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpG
aWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1
bGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZUJydXNoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VTdHlsZSwg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5n
ZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNv
bXBvc2l0ZU1vZGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpkcm9wU2hhZG93KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxk
U21vb3RoRm9udHMsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290
aEZvbnRzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6dXNlRGFya0FwcGVhcmFuY2UpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2Vu
ZGlmCisKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UpOworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDMsMjggKzI2MywyNyBAQCBuYW1lc3BhY2UgV1RG
IHsKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLAotICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpG
aWxsR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkZpbGxQYXR0ZXJuQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UsCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUNvbG9yQ2hhbmdlLAotICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZUNo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Rmls
bENvbG9yQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpGaWxsUnVsZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6U2hhZG93Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwKLSAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGFDaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6QmxlbmRNb2RlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhc0NoYW5nZSwKLSAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHND
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHlDaGFuZ2UKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbEJydXNoLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsUnVsZSwKKworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaCwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSwKKworICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlLAorICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93LAorCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLAor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RHJhd0x1bWluYW5jZU1hc2sKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQot
ICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlQ2hhbmdlCisgICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UKICNlbmRpZgogICAgID47CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAppbmRleCAx
NWRmMWRmZGI2ZjNhMTZhZDVlYWY2NDcyNjFmY2ZjNGI3YTkzYWI0Li4xMmU0ZmZiZjA4NDczOTM5
MzhkMTI1MThiY2M4ZWUzNzU2NDczOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApAQCAtMTM2LDYgKzEzNiw0NCBAQCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQog
ICAgIHJldHVybiB0cyA8PCBibGVuZE1vZGVOYW1lKGJsZW5kTW9kZSk7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9k
ZSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRpb24iLCBjb21wb3Np
dGVNb2RlLm9wZXJhdGlvbik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgY29t
cG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBkcm9wU2hhZG93Lm9mZnNl
dCk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctYmx1ciIsIGRyb3BTaGFkb3cuYmx1clJh
ZGl1cyk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctY29sb3IiLCBkcm9wU2hhZG93LmNv
bG9yKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMiLCBk
cm9wU2hhZG93LnJhZGl1c01vZGUgPT0gU2hhZG93UmFkaXVzTW9kZTo6TGVnYWN5KTsKKyAgICBy
ZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5KQoreworICAgIHN3aXRjaCAo
aW50ZXJwb2xhdGlvblF1YWxpdHkpIHsKKyAgICBjYXNlIEludGVycG9sYXRpb25RdWFsaXR5OjpE
ZWZhdWx0OgorICAgICAgICB0cyA8PCAiREVGQVVMVCI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGU6CisgICAgICAgIHRzIDw8
ICJETy1OT1QtSU5URVJQT0xBVEUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVycG9s
YXRpb25RdWFsaXR5OjpMb3c6CisgICAgICAgIHRzIDw8ICJMT1ciOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEludGVycG9sYXRpb25RdWFsaXR5OjpNZWRpdW06CisgICAgICAgIHRzIDw8ICJN
RURJVU0iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVycG9sYXRpb25RdWFsaXR5OjpI
aWdoOgorICAgICAgICB0cyA8PCAiSEVJR0giOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHRzOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBX
aW5kUnVsZSBydWxlKQogewogICAgIHN3aXRjaCAocnVsZSkgewpAQCAtMTgyLDQgKzIyMCw0MiBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMaW5lSm9pbiBqb2luU3R5
bGUpCiAgICAgcmV0dXJuIHRzOwogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0cm9rZVN0
eWxlKSB7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6Tm9TdHJva2U6CisgICAgICAgIHRzIDw8ICJO
Ty1TVFJPS0UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpTb2xpZFN0
cm9rZToKKyAgICAgICAgdHMgPDwgIlNPTElELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU3Ryb2tlU3R5bGU6OkRvdHRlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRPVFRFRC1T
VFJPS0UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEYXNoZWRTdHJv
a2U6CisgICAgICAgIHRzIDw8ICJEQVNIRUQtU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdHJva2VTdHlsZTo6RG91YmxlU3Ryb2tlOgorICAgICAgICB0cyA8PCAiRE9VQkxFLVNU
Uk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5bGU6OldhdnlTdHJva2U6
CisgICAgICAgIHRzIDw8ICJXQVZZLVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IFRleHREcmF3aW5nTW9kZSB0ZXh0RHJhd2luZ01vZGUpCit7CisgICAgc3dpdGNoICh0ZXh0RHJh
d2luZ01vZGUpIHsKKyAgICBjYXNlIFRleHREcmF3aW5nTW9kZTo6RmlsbDoKKyAgICAgICAgdHMg
PDwgIkZJTEwiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHREcmF3aW5nTW9kZTo6U3Ry
b2tlOgorICAgICAgICB0cyA8PCAiU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IGRlYzQzNDcwMmNm
NzZhODlmYTg2NTMwYzMzNzZkOGJhYzVkOWNhOWUuLjM3Mjk3ODMxYTJiZjM0NjhjYWVjOGY1MjAw
ZjA0NzgwNzY2NmNiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIldpbmRS
dWxlLmgiCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
QEAgLTc0LDYgKzc2LDQyIEBAIGVudW0gY2xhc3MgQmxlbmRNb2RlIDogdWludDhfdCB7CiAgICAg
UGx1c0xpZ2h0ZXIKIH07CiAKK3N0cnVjdCBDb21wb3NpdGVNb2RlIHsKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBvcGVyYXRpb247CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZTsKKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb21wb3NpdGVNb2RlJiBvdGhlcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb24gPT0gb3RoZXIub3BlcmF0aW9uICYmIGJsZW5kTW9kZSA9PSBvdGhlci5i
bGVuZE1vZGU7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU1vZGU+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBDb21wb3NpdGVNb2RlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG9wZXJhdGlvbjsKKyAgICBlbmNvZGVy
IDw8IGJsZW5kTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9u
YWw8Q29tcG9zaXRlTW9kZT4gQ29tcG9zaXRlTW9kZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gb3BlcmF0aW9uOworICAg
IGRlY29kZXIgPj4gb3BlcmF0aW9uOworICAgIGlmICghb3BlcmF0aW9uKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9k
ZTsKKyAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKKyAgICBpZiAoIWJsZW5kTW9kZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKm9wZXJhdGlvbiwgKmJs
ZW5kTW9kZSB9IH07Cit9CisKIHN0cnVjdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAg
ZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7CiAgICAgICAgIFRleHRDaGVja2luZ0RpY3RhdGlv
blBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsCkBAIC0xMTEsNiArMTQ5LDY3IEBAIHN0ZDo6b3B0aW9u
YWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpkZWNv
ZGUoRGVjb2RlciYKICAgICByZXR1cm4geyB7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVhcmFu
Y2UgfSB9OwogfQogCisvLyBMZWdhY3kgc2hhZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNh
bnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRvdy4KKy8vIEl0IGhhcyBkaWZmZXJlbnQgdHJlYXRt
ZW50IG9mIHJhZGlpID4gOHB4LgorZW51bSBjbGFzcyBTaGFkb3dSYWRpdXNNb2RlIDogYm9vbCB7
CisgICAgRGVmYXVsdCwKKyAgICBMZWdhY3kKK307CisKK3N0cnVjdCBEcm9wU2hhZG93IHsKKyAg
ICBGbG9hdFNpemUgb2Zmc2V0OworICAgIGZsb2F0IGJsdXJSYWRpdXMgeyAwIH07CisgICAgQ29s
b3IgY29sb3I7CisgICAgU2hhZG93UmFkaXVzTW9kZSByYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVz
TW9kZTo6RGVmYXVsdCB9OworCisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBj
b2xvci5pc1Zpc2libGUoKTsgfQorICAgIGJvb2wgaXNCbHVycmVkKCkgY29uc3QgeyByZXR1cm4g
aXNWaXNpYmxlKCkgJiYgYmx1clJhZGl1czsgfQorICAgIGJvb2wgaGFzT3V0c2V0cygpIGNvbnN0
IHsgcmV0dXJuIGlzQmx1cnJlZCgpIHx8IChpc1Zpc2libGUoKSAmJiAhb2Zmc2V0LmlzWmVybygp
KTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PERyb3BTaGFkb3c+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERyb3BTaGFkb3cmIGEsIGNvbnN0IERyb3BTaGFkb3cmIGIpCit7CisgICAgcmV0
dXJuIGEub2Zmc2V0ID09IGIub2Zmc2V0ICYmIGEuYmx1clJhZGl1cyA9PSBiLmJsdXJSYWRpdXMg
JiYgYS5jb2xvciA9PSBiLmNvbG9yICYmIGEucmFkaXVzTW9kZSA9PSBiLnJhZGl1c01vZGU7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyb3BTaGFkb3c6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb2Zmc2V0OworICAgIGVuY29k
ZXIgPDwgYmx1clJhZGl1czsKKyAgICBlbmNvZGVyIDw8IGNvbG9yOworICAgIGVuY29kZXIgPDwg
cmFkaXVzTW9kZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8
RHJvcFNoYWRvdz4gRHJvcFNoYWRvdzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG9mZnNldDsKKyAgICBkZWNvZGVyID4+IG9mZnNldDsK
KyAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IGJsdXJSYWRpdXM7CisgICAgZGVjb2RlciA+PiBibHVyUmFkaXVz
OworICAgIGlmICghYmx1clJhZGl1cykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4gY29sb3I7Cisg
ICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6
b3B0aW9uYWw8U2hhZG93UmFkaXVzTW9kZT4gcmFkaXVzTW9kZTsKKyAgICBkZWNvZGVyID4+IHJh
ZGl1c01vZGU7CisgICAgaWYgKCFyYWRpdXNNb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHsgeyAqb2Zmc2V0LCAqYmx1clJhZGl1cywgKmNvbG9yLCAqcmFk
aXVzTW9kZSB9IH07Cit9CisKIGVudW0gY2xhc3MgR3JhZGllbnRTcHJlYWRNZXRob2QgOiB1aW50
OF90IHsKICAgICBQYWQsCiAgICAgUmVmbGVjdCwKQEAgLTE1OCwxMyArMjU3LDYgQEAgZW51bSBj
bGFzcyBUZXh0RHJhd2luZ01vZGUgOiB1aW50OF90IHsKIH07CiB1c2luZyBUZXh0RHJhd2luZ01v
ZGVGbGFncyA9IE9wdGlvblNldDxUZXh0RHJhd2luZ01vZGU+OwogCi0vLyBMZWdhY3kgc2hhZG93
IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRvdy4K
LS8vIEl0IGhhcyBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIHJhZGlpID4gOHB4LgotZW51bSBjbGFz
cyBTaGFkb3dSYWRpdXNNb2RlIDogYm9vbCB7Ci0gICAgRGVmYXVsdCwKLSAgICBMZWdhY3kKLX07
Ci0KIGVudW0gVGV4dEJhc2VsaW5lIHsKICAgICBBbHBoYWJldGljVGV4dEJhc2VsaW5lLAogICAg
IFRvcFRleHRCYXNlbGluZSwKQEAgLTE4OSw5ICsyODEsMTQgQEAgYm9vbCBwYXJzZUNvbXBvc2l0
ZUFuZEJsZW5kT3BlcmF0b3IoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0
b3ImLAogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgV2ViQ29yZTo6QmxlbmRNb2RlKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpDb21wb3NpdGVP
cGVyYXRvcik7Ci1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgV2luZFJ1bGUpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbXBvc2l0ZU1vZGUpOworV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IERyb3BTaGFkb3cmKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGluZUNhcCk7
CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgTGluZUpvaW4pOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFN0cm9rZVN0eWxlKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0RHJhd2luZ01vZGUp
OworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFdpbmRSdWxlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggYjYyMzY3ODgwZTNlNTM1NGI2MTcxMTM0N2M5YTExYjQyMjQ2ODg1ZS4uNmMzMzMzOTYy
NzIxNTI3NzY4NjQ3MGEwMmIxNWY1NjJlZjFiYTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtNTUsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVj
b2RlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09
IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6SW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVj
b2RlczsgfQogICAgIGJvb2wgZGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25S
ZWFzb25zOjpEZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQ7IH0KIAotICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncykgZmluYWwgeyB9CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFw
aGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsIHsgfQogCiAjaWYgVVNFKENHKQogICAgIHZvaWQgc2V0
SXNBY2NlbGVyYXRlZENvbnRleHQoYm9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IGJiMTM4YjUyOTdhNTIxZmJm
N2Q2OTNjZDExNDEwNDQwMGZjYWJjNGUuLjkwMjRmNWQxYWJmY2UzODA4MTgzYTNiMjMxZmJjZTBm
ZmIyZmY0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQwog
ICAgIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIH0KIAotU2hhZG93Qmx1cjo6U2hhZG93Qmx1
cihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBtX2NvbG9yKHN0YXRl
LnNoYWRvd0NvbG9yKQotICAgICwgbV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0JsdXIsIHN0YXRl
LnNoYWRvd0JsdXIpCi0gICAgLCBtX29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCi0gICAgLCBt
X3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQor
U2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93LCBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQorICAgIDogbV9jb2xvcihkcm9wU2hhZG93LmNvbG9y
KQorICAgICwgbV9ibHVyUmFkaXVzKGRyb3BTaGFkb3cuYmx1clJhZGl1cywgZHJvcFNoYWRvdy5i
bHVyUmFkaXVzKQorICAgICwgbV9vZmZzZXQoZHJvcFNoYWRvdy5vZmZzZXQpCisgICAgLCBtX3No
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewogI2lmIFVT
RShDRykKICAgICAvLyBDb3JlIEdyYXBoaWNzIGluY29ycmVjdGx5IHJlbmRlcnMgc2hhZG93cyB3
aXRoIHJhZGl1cyA+IDhweCAoPHJkYXI6Ly9wcm9ibGVtLzgxMDM0NDI+KSwKICAgICAvLyBidXQg
d2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGlzIGJ1Z2d5IGJlaGF2aW9yIGZvciBjYW52YXMgYW5kIC13
ZWJraXQtYm94LXNoYWRvdy4KLSAgICBpZiAoc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFk
b3dSYWRpdXNNb2RlOjpMZWdhY3kpIHsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1
c1RvTGVnYWN5UmFkaXVzKHN0YXRlLnNoYWRvd0JsdXIpOworICAgIGlmIChkcm9wU2hhZG93LnJh
ZGl1c01vZGUgPT0gU2hhZG93UmFkaXVzTW9kZTo6TGVnYWN5KSB7CisgICAgICAgIGZsb2F0IHNo
YWRvd0JsdXIgPSByYWRpdXNUb0xlZ2FjeVJhZGl1cyhkcm9wU2hhZG93LmJsdXJSYWRpdXMpOwog
ICAgICAgICBtX2JsdXJSYWRpdXMgPSBGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1cik7
CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKaW5kZXggMTRmZDgzZWRlMWExYmFjZjE3N2YzMzFlY2FkMWE0MzAyOTNmNjAzYS4u
OGVmZDYzNzdhYWViZTk4M2VlM2FmNTg2MTMwOTEwYmU2NjE3NzEzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKLXN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZTsKK3N0cnVjdCBEcm9wU2hh
ZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIFNoYWRvd0JsdXIgewpAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dCbHVyKCk7CiAgICAgU2hhZG93Qmx1cihjb25z
dCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9y
JiwgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKLSAgICBTaGFkb3dCbHVy
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgU2hhZG93Qmx1cihjb25zdCBEcm9w
U2hhZG93JiwgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIAogICAgIHZv
aWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBj
b25zdCBDb2xvciYsIGJvb2wgaWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyZWY5NDI0MGQ2YWI5NWRmM2U1MDM3ZGFkY2Y2YTRlMDczNTI0MzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAKQEAg
LTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlQnJ1c2guaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTb3VyY2VCcnVzaDo6U291cmNlQnJ1c2goY29uc3QgQ29sb3Im
IGNvbG9yLCBzdGQ6Om9wdGlvbmFsPEJydXNoPiYmIGJydXNoKQorICAgIDogbV9jb2xvcihjb2xv
cikKKyAgICAsIG1fYnJ1c2goV1RGTW92ZShicnVzaCkpCit7Cit9CisKK2NvbnN0IEFmZmluZVRy
YW5zZm9ybSYgU291cmNlQnJ1c2g6OmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdAorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBZmZpbmVUcmFuc2Zvcm0+IGlkZW50aXR5OworICAg
IGlmICghbV9icnVzaCkKKyAgICAgICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworCisgICAgaWYg
KGF1dG8qIGdyYWRpZW50ID0gc3RkOjpnZXRfaWY8QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4oJm1f
YnJ1c2gtPmJydXNoKSkKKyAgICAgICAgcmV0dXJuIGdyYWRpZW50LT5zcGFjZVRyYW5zZm9ybTsK
KworICAgIHJldHVybiBpZGVudGl0eS5nZXQoKTsKK30KKworR3JhZGllbnQqIFNvdXJjZUJydXNo
OjpncmFkaWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoYXV0byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVzaDo6TG9n
aWNhbEdyYWRpZW50PigmbV9icnVzaC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3JhZGllbnQt
PmdyYWRpZW50LnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitQYXR0ZXJuKiBTb3Vy
Y2VCcnVzaDo6cGF0dGVybigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogcGF0dGVybiA9IHN0ZDo6Z2V0X2lmPFJlZjxQ
YXR0ZXJuPj4oJm1fYnJ1c2gtPmJydXNoKSkKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4tPnB0cigp
OworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFNvdXJjZUJydXNoOjpzZXRHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VU
cmFuc2Zvcm0pCit7CisgICAgbV9icnVzaCA9IHsgQnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCB7IFdU
Rk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSB9IH07Cit9CisKK3ZvaWQgU291cmNlQnJ1
c2g6OnNldFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKK3sKKyAgICBtX2JydXNoID0g
eyBXVEZNb3ZlKHBhdHRlcm4pIH07Cit9CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKQoreworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY29sb3IiLCBicnVzaC5jb2xvcigpKTsKKworICAgIGlmIChhdXRvIGdyYWRpZW50
ID0gYnJ1c2guZ3JhZGllbnQoKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJncmFkaWVudCIs
IGdyYWRpZW50KTsKKworICAgIGlmIChhdXRvIHBhdHRlcm4gPSBicnVzaC5wYXR0ZXJuKCkpCisg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0dGVybiIsIHBhdHRlcm4pOworCisgICAgcmV0dXJu
IHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWI5ZmFlNTQ5NDM0OWRi
NTVhZTUzM2M1YjNhMGY5ZmE5NTUyMjZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaApAQCAtMCwwICsxLDE4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnJ1c2ggewor
cHVibGljOgorICAgIHN0cnVjdCBCcnVzaCB7CisgICAgICAgIHN0cnVjdCBMb2dpY2FsR3JhZGll
bnQgeworICAgICAgICAgICAgUmVmPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBzcGFjZVRyYW5zZm9ybTsKKworICAgICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TG9naWNhbEdy
YWRpZW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB9OworCisgICAgICAgIHN0ZDo6dmFy
aWFudDxMb2dpY2FsR3JhZGllbnQsIFJlZjxQYXR0ZXJuPj4gYnJ1c2g7CisKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxCcnVz
aD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgU291cmNlQnJ1c2goKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlQnJ1c2goY29uc3QgQ29sb3ImLCBzdGQ6Om9w
dGlvbmFsPEJydXNoPiYmID0gc3RkOjpudWxsb3B0KTsKKworICAgIGNvbnN0IENvbG9yJiBjb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IENv
bG9yIGNvbG9yKSB7IG1fY29sb3IgPSBjb2xvcjsgfQorCisgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxCcnVzaD4mIGJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9icnVzaDsgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgR3JhZGllbnQqIGdyYWRpZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
UGF0dGVybiogcGF0dGVybigpIGNvbnN0OworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0p
OworICAgIHZvaWQgc2V0UGF0dGVybihSZWY8UGF0dGVybj4mJik7CisKKyAgICBib29sIGlzUHJp
bWl0aXZlKCkgY29uc3QgeyByZXR1cm4gIW1fYnJ1c2ggJiYgbV9jb2xvci50cnlHZXRBc1NSR0JB
Qnl0ZXMoKTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNvdXJjZUJydXNoPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIENv
bG9yIG1fY29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJydXNoPiBt
X2JydXNoOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaDo6
QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCYgYSwgY29uc3QgU291cmNlQnJ1c2g6OkJydXNoOjpMb2dp
Y2FsR3JhZGllbnQmIGIpCit7CisgICAgcmV0dXJuIGEuZ3JhZGllbnQucHRyKCkgPT0gYi5ncmFk
aWVudC5wdHIoKSAmJiBhLnNwYWNlVHJhbnNmb3JtID09IGIuc3BhY2VUcmFuc2Zvcm07Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQnJ1c2g6OkJydXNoJiBhLCBjb25z
dCBTb3VyY2VCcnVzaDo6QnJ1c2gmIGIpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYS5i
cnVzaCwKKyAgICAgICAgWyZdIChjb25zdCBTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudCYgYUdyYWRpZW50KSB7CisgICAgICAgICAgICBpZiAoYXV0byogYkdyYWRpZW50ID0gc3Rk
OjpnZXRfaWY8U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZiLmJydXNoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYUdyYWRpZW50ID09ICpiR3JhZGllbnQ7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVmPFBh
dHRlcm4+JiBhUGF0dGVybikgeworICAgICAgICAgICAgaWYgKGF1dG8qIGJQYXR0ZXJuID0gc3Rk
OjpnZXRfaWY8UmVmPFBhdHRlcm4+PigmYi5icnVzaCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGFQYXR0ZXJuLnB0cigpID09IGJQYXR0ZXJuLT5wdHIoKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU291cmNlQnJ1c2gmIGEsIGNvbnN0IFNvdXJjZUJydXNoJiBiKQoreworICAgIHJldHVybiBh
LmNvbG9yKCkgPT0gYi5jb2xvcigpICYmIGEuYnJ1c2goKSA9PSBiLmJydXNoKCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNh
bEdyYWRpZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IGdyYWRpZW50LmdldCgpOworICAgIGVuY29kZXIgPDwgc3BhY2VUcmFuc2Zvcm07Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoOjpC
cnVzaDo6TG9naWNhbEdyYWRpZW50PiBTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVu
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRp
ZW50OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFncmFkaWVudCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4g
c3BhY2VUcmFuc2Zvcm07CisgICAgZGVjb2RlciA+PiBzcGFjZVRyYW5zZm9ybTsKKyAgICBpZiAo
IXNwYWNlVHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpncmFkaWVudCksICpzcGFjZVRyYW5zZm9ybSB9IH07Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjpCcnVzaDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgV1RGOjpzd2l0Y2hPbihicnVzaCwKKyAg
ICAgICAgWyZdIChjb25zdCBMb2dpY2FsR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAg
ICBlbmNvZGVyIDw8IHRydWUgPDwgZ3JhZGllbnQ7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAo
Y29uc3QgUmVmPFBhdHRlcm4+JiBwYXR0ZXJuKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGZh
bHNlIDw8IHBhdHRlcm4uZ2V0KCk7CisgICAgICAgIH0KKyAgICApOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VCcnVzaDo6QnJ1c2g+IFNvdXJj
ZUJydXNoOjpCcnVzaDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBoYXNHcmFkaWVudDsKKyAgICBkZWNvZGVyID4+IGhhc0dyYWRpZW50OworICAg
IGlmICghaGFzR3JhZGllbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAoKmhhc0dyYWRpZW50KSB7CisgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBMb2dpY2FsR3JhZGll
bnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFncmFkaWVudCkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqZ3JhZGll
bnQpIH0gfTsKKyAgICB9CisKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVj
b2Rlcik7CisgICAgaWYgKCFwYXR0ZXJuKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcGF0dGVybikgfSB9OworfQorCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2NvbG9yOworICAgIGVuY29kZXIgPDwgbV9icnVzaDsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g+
IFNvdXJjZUJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlv
bmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9yOworICAgIGlmICghY29sb3Ip
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
b3B0aW9uYWw8QnJ1c2g+PiBicnVzaDsKKyAgICBkZWNvZGVyID4+IGJydXNoOworICAgIGlmICgh
YnJ1c2gpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gU291cmNl
QnJ1c2goKmNvbG9yLCBXVEZNb3ZlKCpicnVzaCkpOworfQorCitXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgU291cmNlQnJ1c2gmKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggMTU1MjM1NmEyM2E1ZmRm
YjEwYWZlY2EyY2M5MmE3Mjc5NDU4MTAyZS4uMmRhNDkxZmQ4N2Y2Y2ZiYjMzZTQ3ZDk4MTIzMzdi
ZjIxNThmNmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCkBAIC01NTksNDIgKzU1OSw0MiBAQCBG
aWxsU291cmNlOjpGaWxsU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkK
ICAgICA6IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKQogICAgICwgZmlsbFJ1bGUoc3RhdGUuZmls
bFJ1bGUpCiB7Ci0gICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKSB7Ci0gICAgICAgIHBhdHRlcm4u
b2JqZWN0ID0gYWRvcHRSZWYoc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUu
ZmlsbEJydXNoLnBhdHRlcm4oKSkgeworICAgICAgICBwYXR0ZXJuLm9iamVjdCA9IGFkb3B0UmVm
KGZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsK
IAotICAgICAgICBhdXRvJiBwYXR0ZXJuSW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUlt
YWdlKCk7CisgICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IGZpbGxQYXR0ZXJuLT50aWxlSW1h
Z2UoKTsKICAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybkltYWdlLnNpemUoKTsKLSAgICAg
ICAgcGF0dGVybi50cmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7Ci0gICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCk7Ci0gICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCk7Ci0gICAgfSBlbHNlIGlmIChzdGF0ZS5maWxsR3JhZGllbnQpIHsKLSAgICAgICAg
Z3JhZGllbnQuYmFzZSA9IHN0YXRlLmZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0
ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgIHBhdHRlcm4udHJhbnNmb3Jt
ID0gZmlsbFBhdHRlcm4tPnBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOworICAgICAgICBwYXR0ZXJu
LnJlcGVhdFggPSBmaWxsUGF0dGVybi0+cmVwZWF0WCgpOworICAgICAgICBwYXR0ZXJuLnJlcGVh
dFkgPSBmaWxsUGF0dGVybi0+cmVwZWF0WSgpOworICAgIH0gZWxzZSBpZiAoYXV0byBmaWxsR3Jh
ZGllbnQgPSBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnQoKSkgeworICAgICAgICBncmFkaWVudC5i
YXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxCcnVzaC5ncmFk
aWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgICAgICBpZiAoc3RhdGUuYWxwaGEgIT0gMSkKLSAg
ICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdGF0ZS5maWxsR3JhZGllbnQtPmNy
ZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBmaWxsR3JhZGllbnQtPmNy
ZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkpOwogICAgIH0gZWxzZQotICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsK
KyAgICAgICAgY29sb3IgPSBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsKIH0KIAogU3Ryb2tlU291
cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAg
IDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiB7Ci0gICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRl
cm4pCi0gICAgICAgIHBhdHRlcm4gPSBhZG9wdFJlZihzdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVh
dGVQbGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKLSAgICBlbHNlIGlmIChzdGF0
ZS5zdHJva2VHcmFkaWVudCkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3RhdGUuc3Ryb2tl
R3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSk7CisgICAgaWYgKGF1dG8gc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZUJydXNoLnBh
dHRlcm4oKSkKKyAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0cm9rZVBhdHRlcm4tPmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgIGVsc2UgaWYgKGF1dG8g
c3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudCgpKSB7CisgICAgICAg
IGdyYWRpZW50LmJhc2UgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5z
dHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgICAgICBpZiAoc3RhdGUu
YWxwaGEgIT0gMSkKLSAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdGF0ZS5z
dHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuc3Ryb2tlR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVk
ID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLnN0cm9r
ZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7CisgICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQnJ1
c2guY29sb3IoKTsKIH0KIAogU2hhZG93U3RhdGU6OlNoYWRvd1N0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG9mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCi0g
ICAgLCBibHVyKHN0YXRlLnNoYWRvd0JsdXIpCi0gICAgLCBjb2xvcihzdGF0ZS5zaGFkb3dDb2xv
cikKKyAgICA6IG9mZnNldChzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCkKKyAgICAsIGJsdXIoc3Rh
dGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVzKQorICAgICwgY29sb3Ioc3RhdGUuZHJvcFNoYWRvdy5j
b2xvcikKICAgICAsIGlnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpCiAgICAgLCBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKLSAgICAsIGdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yKQorICAgICwgZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24pCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmlu
ZGV4IGE3YWYwY2ViNTI0OTA0MDQxZWUxMmQ1MWY4OWM2ZGYxNmNiMzYwMzcuLmZlNzM4YmRmNzdl
OGNlNzYyYWNjOWEwZjBmODRkZDgzNjFjNjljMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0
ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5cGhzKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBD
YWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAogICAg
ICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhl
dGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCi0gICAgICAgIHN0YXRlLnRleHRE
cmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0
YXRlLnNoYWRvd0NvbG9yLAorICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0
cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cu
Y29sb3IsCiAgICAgICAgIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcApp
bmRleCA5MDA5NmFjNjQ1MjI0ZGJmZGM2MGJmYTZjYWNhZDAzMDc2Y2IyOTdkLi44NTdjZWQxYTI3
MDM3NjFiMWQzNzgzYmRlZTMwODM3NDg3MzYxZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcApAQCAtMjQ3
LDcgKzI0Nyw3IEBAIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IEdyYWRpZW50OjpjcmVhdGVQYXR0
ZXJuKGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBBZmZpbmVUCiAKIHZvaWQgR3JhZGllbnQ6OmZp
bGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0g
ICAgYXV0byBwYXR0ZXJuID0gY3JlYXRlUGF0dGVybigxLjAsIGNvbnRleHQuc3RhdGUoKS5maWxs
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgYXV0byBwYXR0ZXJuID0gY3JlYXRlUGF0dGVy
bigxLjAsIGNvbnRleHQuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgaWYgKCFw
YXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApp
bmRleCBjMzIzMDQ0NTM1MWIwM2YyYWE4NzM2YWVlMmJjZTc4YmM0MzYxZjQ5Li5iYzM4OWFlODAx
MmQ1MjlhMGY5YWE5ZDdlZTRjZmNmZjRiYmM3NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6cmVz
dG9yZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKIHsKICAgICBBU1NFUlQoIXJlY3QuaXNF
bXB0eSgpKTsKLSAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRy
YXdSZWN0KCp0aGlzLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3Rh
dGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBDYWlybzo6ZHJhd1JlY3Qo
KnRoaXMsIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgZmlsbENvbG9yKCksIHN0cm9rZVN0eWxlKCks
IHN0cm9rZUNvbG9yKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTU0LDE1ICsxNTMsMTMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBj
b25zdCBGbG9hdFBvaW50JgogICAgIGlmIChzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fp
cm86OmRyYXdMaW5lKCp0aGlzLCBwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0
YXRlLnN0cm9rZUNvbG9yLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNob3VsZEFudGlh
bGlhcyk7CisgICAgQ2Fpcm86OmRyYXdMaW5lKCp0aGlzLCBwb2ludDEsIHBvaW50Miwgc3Ryb2tl
U3R5bGUoKSwgc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlVGhpY2tuZXNzKCksIHNob3VsZEFudGlhbGlh
cygpKTsKIH0KIAogLy8gVGhpcyBtZXRob2QgaXMgb25seSB1c2VkIHRvIGRyYXcgdGhlIGxpdHRs
ZSBjaXJjbGVzIHVzZWQgaW4gbGlzdHMuCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgYXV0byYgc3RhdGUgPSB0aGlz
LT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3RWxsaXBzZSgqdGhpcywgcmVjdCwgc3RhdGUuZmls
bENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9r
ZVRoaWNrbmVzcyk7CisgICAgQ2Fpcm86OmRyYXdFbGxpcHNlKCp0aGlzLCByZWN0LCBmaWxsQ29s
b3IoKSwgc3Ryb2tlU3R5bGUoKSwgc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlVGhpY2tuZXNzKCkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRo
KQpAQCAtMTk2LDggKzE5Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50
JiBncmFkaWVudCkKIHsKLSAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXV0
byBwYXR0ZXJuID0gZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKTsKKyAgICBhdXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0
ZXJuKDEuMCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgaWYgKCFwYXR0ZXJu
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIwOSw3ICsyMDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFk
aWVudCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMt
PnN0YXRlKCk7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IHN0YXRl
LmNvbXBvc2l0ZU9wZXJhdG9yOworICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0
b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKIAogICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKCp0aGlzLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKICAgICBD
YWlybzo6ZmlsbFJlY3QoKnRoaXMsIHJlY3QsIGNvbG9yLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKQEAgLTI2NSw3ICsyNjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3
TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGljawogewogICAg
IGlmICh3aWR0aHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgQ2Fpcm86OmRyYXdM
aW5lc0ZvclRleHQoKnRoaXMsIHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRv
dWJsZVVuZGVybGluZXMsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJvOjpkcmF3TGlu
ZXNGb3JUZXh0KCp0aGlzLCBwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3Vi
bGVVbmRlcmxpbmVzLCBzdHJva2VDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRD
YWlybzo6ZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERv
Y3VtZW50TWFya2VyTGluZVN0eWxlIHN0eWxlKQpAQCAtMjg0LDI4ICsyODAsMzAgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgQ2Fp
cm86OnRyYW5zbGF0ZSgqdGhpcywgeCwgeSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiB7Ci0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSkKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6
c2V0U3Ryb2tlVGhpY2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCi0gICAg
aWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKQorICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U3Ryb2tlU3R5bGUpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0
aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93KSkgewogICAgICAgICBp
ZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgICAgIC8vIE1lYW5p
bmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dAogICAgICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNl
IENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKLSAgICAgICAgICAgIGF1
dG8mIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgICAgIG1fc3Rh
dGUuc2hhZG93T2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5o
ZWlnaHQoKSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNo
YWRvdy5vZmZzZXQ7CisgICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zmc2V0ID0geyBz
aGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OwogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVy
YXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOwor
ICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6Q29tcG9zaXRlTW9kZSkpCisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29t
cG9zaXRlTW9kZS5ibGVuZE1vZGUpOwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpCiAg
ICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5zaG91
bGRBbnRpYWxpYXMpOworCisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSkKQEAgLTQzNCw3ICs0MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqCiAgICAg
YXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5cGhzKCp0aGlz
LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAog
ICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3lu
dGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCi0gICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQs
IHN0YXRlLnNoYWRvd0NvbG9yLAorICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRl
LnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFk
b3cuY29sb3IsCiAgICAgICAgIGZvbnRTbW9vdGhpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uaAppbmRleCA1NjQ2MWMxNTlhNTgzYzg5YzYxZThmMDJlNGUwYmVlN2IwNTkzMmVmLi43
MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFkNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGxhdGZv
cm1Db250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0Q2Fpcm8qIHBsYXRm
b3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzKTsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJik7
CiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCBzZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggMzI0NWM2MDA0MzE1NTJkNTEzYjc0ZWViYzA5ZjMxOGVlYzNkZDcyYS4uZjlmZWFiNGUyNmYy
OTgzMzgxZGNkZGE0ZDU0YzUwYjc1MzhlNzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTg1
LDEzICsxODUsMTQgQEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVuZE1vZGUoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUKIH0KIAogR3JhcGhpY3NDb250
ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBjZ0NvbnRleHQpCisgICAgOiBH
cmFwaGljc0NvbnRleHQoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MgfSkKIHsKICAgICBpZiAoIWNnQ29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZShjZ0NvbnRleHQpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBz
dGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRo
aWNrbmVzc0NoYW5nZSB9KTsKKyAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKICAgICBtX3N0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHko
Q0dDb250ZXh0R2V0SW50ZXJwb2xhdGlvblF1YWxpdHkocGxhdGZvcm1Db250ZXh0KCkpKTsKIH0K
IApAQCAtMzM4LDcgKzMzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6CiAjZW5kaWYKIAog
ICAgIGF1dG8gb2xkQ29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKLSAg
ICBhdXRvIG9sZEJsZW5kTW9kZSA9IGJsZW5kTW9kZU9wZXJhdGlvbigpOworICAgIGF1dG8gb2xk
QmxlbmRNb2RlID0gYmxlbmRNb2RlKCk7CiAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgb3B0
aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8v
IE1ha2UgdGhlIG9yaWdpbiBiZSBhdCBhZGp1c3RlZERlc3RSZWN0LmxvY2F0aW9uKCkKQEAgLTU1
NSwxMyArNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQ
YXR0ZXJuKCkKIHsKLSAgICBpZiAoIW1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICBpZiAoIXN0
cm9rZVBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNl
Q1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAg
ICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0g
c3Ryb2tlUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAg
ICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTc0LDEzICs1
NzUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIAog
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybigpCiB7Ci0gICAgaWYgKCFt
X3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmICghZmlsbFBhdHRlcm4oKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwog
ICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVz
ZXJUb0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1f
c3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsK
KyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IGZpbGxQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC01OTEsMTEgKzU5MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjZ0NvbnRl
eHQsIHBsYXRmb3JtUGF0dGVybi5nZXQoKSwgJnBhdHRlcm5BbHBoYSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9kZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIENHUGF0aERyYXdpbmdNb2RlJiBtb2RlKQorc3RhdGljIGlubGluZSBib29sIGNh
bGN1bGF0ZURyYXdpbmdNb2RlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQYXRo
RHJhd2luZ01vZGUmIG1vZGUpCiB7Ci0gICAgYm9vbCBzaG91bGRGaWxsID0gc3RhdGUuZmlsbFBh
dHRlcm4gfHwgc3RhdGUuZmlsbENvbG9yLmlzVmlzaWJsZSgpOwotICAgIGJvb2wgc2hvdWxkU3Ry
b2tlID0gc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCAoc3RhdGUuc3Ryb2tlU3R5bGUgIT0gTm9TdHJv
a2UgJiYgc3RhdGUuc3Ryb2tlQ29sb3IuaXNWaXNpYmxlKCkpOwotICAgIGJvb2wgdXNlRU9GaWxs
ID0gc3RhdGUuZmlsbFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQ7CisgICAgYm9vbCBzaG91bGRG
aWxsID0gY29udGV4dC5maWxsUGF0dGVybigpIHx8IGNvbnRleHQuZmlsbENvbG9yKCkuaXNWaXNp
YmxlKCk7CisgICAgYm9vbCBzaG91bGRTdHJva2UgPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSB8
fCAoY29udGV4dC5zdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlICYmIGNvbnRleHQuc3Ryb2tlQ29s
b3IoKS5pc1Zpc2libGUoKSk7CisgICAgYm9vbCB1c2VFT0ZpbGwgPSBjb250ZXh0LmZpbGxSdWxl
KCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAKICAgICBpZiAoc2hvdWxkRmlsbCkgewogICAgICAg
ICBpZiAoc2hvdWxkU3Ryb2tlKSB7CkBAIC02MjQsOSArNjI1LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRDRzo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCi0gICAgaWYgKHN0YXRlLmZp
bGxHcmFkaWVudCB8fCBzdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlmIChmaWxsR3JhZGll
bnQoKSB8fCBzdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55
IG9wdGltaXplZCB3YXkgdG8gZmlsbCAmIHN0cm9rZSBhIHBhdGggdXNpbmcgZ3JhZGllbnRzCiAg
ICAgICAgIC8vIEZJWE1FOiBCZSBzbWFydGVyIGFib3V0IHRoaXMuCiAgICAgICAgIGZpbGxQYXRo
KHBhdGgpOwpAQCAtNjM0LDEzICs2MzQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJh
d1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChzdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBw
bHlGaWxsUGF0dGVybigpOwotICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChz
dHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAgICAgQ0dQ
YXRoRHJhd2luZ01vZGUgZHJhd2luZ01vZGU7Ci0gICAgaWYgKGNhbGN1bGF0ZURyYXdpbmdNb2Rl
KHN0YXRlLCBkcmF3aW5nTW9kZSkpIHsKKyAgICBpZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUoKnRo
aXMsIGRyYXdpbmdNb2RlKSkgewogI2lmIEhBVkUoQ0dfQ09OVEVYVF9EUkFXX1BBVEhfRElSRUNU
KQogICAgICAgICBDR0NvbnRleHREcmF3UGF0aERpcmVjdChjb250ZXh0LCBkcmF3aW5nTW9kZSwg
cGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVsbHB0cik7CiAjZWxzZQpAQCAtNjU4LDcgKzY1OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1f
c3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gdGhpcy0+
ZmlsbEdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAg
ICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAg
RmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAt
NjcwLDMzICs2NzAsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgoY29uc3Qg
UGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRl
eHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0
aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRl
eHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RN
KGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAg
ICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6
OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGxheWVyQ29udGV4dCk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNv
bnRleHQpOwogCi0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJD
b250ZXh0KTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsK
ICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXll
ci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdpblBh
dGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgu
cGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1f
c3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgQ0dDb250ZXh0
Q29uY2F0Q1RNKGNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAg
ICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAg
ICAgICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKIAotICAgICAgICAgICAgbV9zdGF0ZS5m
aWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFp
bnQoKnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigpKQogICAgICAgICBh
cHBseUZpbGxQYXR0ZXJuKCk7CiAjaWYgSEFWRShDR19DT05URVhUX0RSQVdfUEFUSF9ESVJFQ1Qp
CiAgICAgQ0dDb250ZXh0RHJhd1BhdGhEaXJlY3QoY29udGV4dCwgZmlsbFJ1bGUoKSA9PSBXaW5k
UnVsZTo6RXZlbk9kZCA/IGtDR1BhdGhFT0ZpbGwgOiBrQ0dQYXRoRmlsbCwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSwgbnVsbHB0cik7CkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNv
bnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50KSB7CisgICAgaWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSB0aGlzLT5zdHJva2VHcmFkaWVu
dCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0
IHJlY3QgPSBwYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIGZsb2F0IGxpbmVX
aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwpAQCAtNzQyLDggKzc0Miw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENH
Q29udGV4dEFkZFBhdGgobGF5ZXJDb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAg
ICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7
CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQo
bGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRl
eHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VH
cmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKIAogICAgICAgICAgICAgZmxvYXQgZGVzdGlu
YXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAgICAgIGZsb2F0
IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7CkBAIC03NTQsMTMg
Kzc1NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgm
IHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZv
cm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBh
dGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwotICAgICAg
ICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRT
cGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWlu
dCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgc3Ryb2tl
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5w
YWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChtX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAg
ICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICNpZiBVU0UoQ0dfQ09OVEVYVF9TVFJPS0VfTElO
RV9TRUdNRU5UU19XSEVOX1NUUk9LSU5HX1BBVEgpCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9z
dGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBmaWxsR3JhZGllbnQgPSB0aGlzLT5m
aWxsR3JhZGllbnQoKSkgewogICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Y29udGV4dCk7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAgRmxvYXRT
aXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAtNzk4LDE4
ICs3OTgsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJl
Y3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAg
ICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWlu
dChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29u
dGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBmaWxsR3Jh
ZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5
ZXJJblJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0KTsKLSAgICAgICAg
ICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhp
cyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KCp0aGlz
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUu
ZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBh
dHRlcm4oKTsKIAogICAgIGJvb2wgZHJhd093blNoYWRvdyA9IGNhblVzZVNoYWRvd0JsdXIoKTsK
QEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAg
ICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXpl
WmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUp
OworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRv
dygqdGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCkBAIC04MzksNyArODM5
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3Mu
CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
Q0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1f
c3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVj
dFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCkBAIC04NjYs
NyArODY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdAogICAgICAgICAvLyBUdXJuIG9mZiBD
RyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1D
b250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4
dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BT
aGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFk
b3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIHJlY3QpOwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QKICAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWkgPSByZWN0LnJhZGlpKCk7CiAgICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRp
aS50b3BMZWZ0KCkud2lkdGgoKSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWku
dG9wUmlnaHQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlp
LmJvdHRvbUxlZnQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CiAg
ICAgYm9vbCBlcXVhbEhlaWdodHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlp
LmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0g
cmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09
IHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOwotICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9
IG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47CisgICAgYm9vbCBo
YXNDdXN0b21GaWxsID0gZmlsbEdyYWRpZW50KCkgfHwgZmlsbFBhdHRlcm4oKTsKICAgICBpZiAo
IWhhc0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRv
cExlZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdo
dCgpICogMiA9PSByLmhlaWdodCgpKQogICAgICAgICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVj
dChjb250ZXh0LCByKTsKICAgICBlbHNlIHsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsbwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBD
R0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8s
IDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAg
ICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KCp0
aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QpOwogICAgIH0KIApAQCAtOTg5LDYgKzk4OSw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3Bh
Y2l0eSkKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAg
IENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIG9wYWNpdHkpOwogICAgIENHQ29udGV4dEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCwgMCk7CisgICAgCisgICAgbV9zdGF0ZS5kaWRCZWdp
blRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKQEAgLTEwMDIsMTcgKzEwMDQsMTQgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIHJlc3Rv
cmUoKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVk
ZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBDR0Zs
b2F0JiB5T2Zmc2V0KQorc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZO
ZWVkZWQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQmIHhPZmZzZXQsIENHRmxvYXQmIHlP
ZmZzZXQpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oV0lOKQogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oeE9mZnNldCk7CiAgICAg
VU5VU0VEX1BBUkFNKHlPZmZzZXQpOwogI2Vsc2UKLSAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdN
b2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRv
d09mZnNldHMoY29udGV4dCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdvcmsgYXJvdW5k
IDxyZGFyOi8vcHJvYmxlbS81NTM5Mzg4PiBieSBlbnN1cmluZyB0aGF0IHRoZSBvZmZzZXRzIHdp
bGwgZ2V0IHRydW5jYXRlZApAQCAtMTAzMCwxMCArMTAyOSw4IEBAIHN0YXRpYyB2b2lkIGFwcGx5
U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0
IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyB2b2lkIHNldENHU2hhZG93KENHQ29u
dGV4dFJlZiBjb250ZXh0LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpCiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBncmFwaGlj
c0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0KICAgICBpZiAob2Zmc2V0LmlzWmVybygpICYm
ICFibHVyKSB7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBD
R1NpemVaZXJvLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0NSw3ICsxMDQyLDcgQEAg
c3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICBDR0Zsb2F0IHlPZmZzZXQgPSBvZmZzZXQuaGVp
Z2h0KCk7CiAgICAgQ0dGbG9hdCBibHVyUmFkaXVzID0gYmx1cjsKIAotICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpIHsKKyAgICBpZiAoIXNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKSB7CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VD
VE0gPSBnZXRVc2VyVG9CYXNlQ1RNKGNvbnRleHQpOwogCiAgICAgICAgIENHRmxvYXQgQSA9IHVz
ZXJUb0Jhc2VDVE0uYSAqIHVzZXJUb0Jhc2VDVE0uYSArIHVzZXJUb0Jhc2VDVE0uYiAqIHVzZXJU
b0Jhc2VDVE0uYjsKQEAgLTEwNjYsNyArMTA2Myw4IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUm
CiAgICAgLy8gRXh0cmVtZSAiYmx1ciIgdmFsdWVzIGNhbiBtYWtlIHRleHQgZHJhd2luZyBjcmFz
aCBvciB0YWtlIGNyYXp5IGxvbmcgdGltZXMsIHNvIGNsYW1wCiAgICAgYmx1clJhZGl1cyA9IHN0
ZDo6bWluKGJsdXJSYWRpdXMsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCgxMDAwLjApKTsKIAot
ICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGdyYXBoaWNzQ29udGV4dCwg
eE9mZnNldCwgeU9mZnNldCk7CisgICAgaWYgKHJlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKGNvbnRleHQsIHhPZmZzZXQsIHlPZmZzZXQpOwogCiAgICAgLy8gQ2hlY2sgZm9yIGFuIGlu
dmFsaWQgY29sb3IsIGFzIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29sb3Igd2FzIG5vdCBzZXQgZm9y
IHRoZSBzaGFkb3cKICAgICAvLyBhbmQgd2Ugc2hvdWxkIHRoZXJlZm9yZSBqdXN0IHVzZSB0aGUg
ZGVmYXVsdCBzaGFkb3cgY29sb3IuCkBAIC0xMDc2LDM5ICsxMDc0LDYxIEBAIHN0YXRpYyB2b2lk
IHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0
LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9y
KGNvbG9yKS5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRV
cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7CisgICAgaWYgKCFzdGF0
ZS5jaGFuZ2VzKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gY29udGV4dCA9IHBsYXRm
b3JtQ29udGV4dCgpOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lk
dGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICBm
b3IgKGF1dG8gY2hhbmdlIDogc3RhdGUuY2hhbmdlcygpKSB7CisgICAgICAgIHN3aXRjaCAoY2hh
bmdlKSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJy
dXNoOgorICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3RhdGUuZmlsbEJydXNo
LmNvbG9yKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6CisgICAgICAgICAgICBDR0NvbnRl
eHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAw
LmYpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2g6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJv
a2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNo
LmNvbG9yKCkpLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAg
IENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Io
c3RhdGUuc3Ryb2tlQ29sb3IpLmdldCgpKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgorICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUo
Y29udGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1v
ZGUuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBzZXRD
R0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxsQ29sb3IpOworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3c6CisgICAgICAgICAgICBzZXRDR1No
YWRvdyhjb250ZXh0LCByZW5kZXJpbmdNb2RlKCksIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBz
dGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsIHN0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYg
KGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAg
ICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToKKyAgICAgICAgICAgIENHQ29u
dGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5n
ZSB9KSkKLSAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlT3Bl
cmF0b3IsIHN0YXRlLmJsZW5kTW9kZSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eToKKyAgICAgICAgICAgIENHQ29u
dGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxp
dHkoc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250
ZXh0LCBjZ1RleHREcmF3aW5nTW9kZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpKTsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6CisgICAg
ICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2lu
Z01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAg
IGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFz
Q2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0
YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxk
QW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgICAgICBi
cmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhG
b250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7CisgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHM6CisgICAgICAgICAg
ICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9v
dGhGb250cyk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0g
ICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJw
b2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpCi0g
ICAgICAgIHNldENHU2hhZG93KCp0aGlzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hh
ZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2Vz
KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnNldE1pdGVyTGltaXQoZmxvYXQgbGlt
aXQpCkBAIC0xMTI1LDcgKzExNDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogewogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5z
dHJva2VHcmFkaWVudCkgeworICAgIGlmIChhdXRvIHN0cm9rZUdyYWRpZW50ID0gdGhpcy0+c3Ry
b2tlR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGRvdWJsZUxpbmVXaWR0aCA9IGxpbmVXaWR0aCAqIDI7CiAgICAgICAgICAg
ICBmbG9hdCBhZGp1c3RlZFdpZHRoID0gY2VpbGYocmVjdC53aWR0aCgpICsgZG91YmxlTGluZVdp
ZHRoKTsKQEAgLTExNDksOCArMTE2OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9r
ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAg
ICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29u
Y2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4
dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBzdHJva2VH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBh
aW50KGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9u
WCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAgICBjb25zdCBmbG9h
dCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgpOwpAQCAtMTE2MSwx
MyArMTE4MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRk
UmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0
aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0
KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBzdHJva2VH
cmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJu
KCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAgICAgLy8gVXNpbmcgQ0dDb250
ZXh0QWRkUmVjdCBhbmQgQ0dDb250ZXh0U3Ryb2tlUGF0aCB0byBzdHJva2UgcmVjdCByYXRoZXIg
dGhhbgpAQCAtMTQyMiw3ICsxNDQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q0c6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAv
LyBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4K
LSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVybikgewor
ICAgIGlmIChmaWxsR3JhZGllbnQoKSB8fCBmaWxsUGF0dGVybigpKSB7CiAgICAgICAgIGZpbGxF
bGxpcHNlQXNQYXRoKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQzNCw3
ICsxNDU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JiBlbGxpcHNlKQogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlRWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB7CiAgICAgLy8gQ0dDb250ZXh0U3Ryb2tlRWxsaXBz
ZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KLSAgICBpZiAobV9zdGF0ZS5zdHJv
a2VHcmFkaWVudCB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4pIHsKKyAgICBpZiAoc3Ryb2tlR3Jh
ZGllbnQoKSB8fCBzdHJva2VQYXR0ZXJuKCkpIHsKICAgICAgICAgc3Ryb2tlRWxsaXBzZUFzUGF0
aChlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCmluZGV4IDYw
M2IwZTkzNmVmYjUyOGNhYzNkN2FkYzg2NmU5OTU3ZWUzMGViZWMuLmExYTI2YmZkMjg0ZDg0NDYz
ZWMyMGZiMDE0ZmEzMzY5Yzg4Yzk5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaApAQCAtMTI3LDcgKzEyNyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5Vc2VTaGFkb3dCbHVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBlZmJjMWU0OTU0NDFiZWRlNzM0ZTk0
OGRkMjZkMzcxNDQxNjU1M2UwLi5kMGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5
NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBA
IC05Niw1MiArOTYsMjQgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIo
R3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29s
b3IgPSBjb250ZXh0U3RhdGUuZmlsbENvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5maWxs
R3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBh
dHRlcm4gPSBjb250ZXh0U3RhdGUuZmlsbFBhdHRlcm47Ci0KLSAgICBtX29yaWdpbmFsU3RhdGUu
c3Ryb2tlU3R5bGUuY29sb3IgPSBjb250ZXh0U3RhdGUuc3Ryb2tlQ29sb3I7Ci0gICAgbV9vcmln
aW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRp
ZW50OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9v
cmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuc3Ryb2tlUGF0
dGVybjsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxC
cnVzaDsKKyAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2ggPSBjb250ZXh0U3RhdGUuc3Ry
b2tlQnJ1c2g7CiAKICAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5nZXRDVE0oKTsg
Ly8gRklYTUU6IERlYWwgd2l0aCBiYXNlIENUTS4KIAotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFk
b3cub2Zmc2V0ID0gY29udGV4dFN0YXRlLnNoYWRvd09mZnNldDsKLSAgICBtX29yaWdpbmFsU3Rh
dGUuc2hhZG93LmJsdXIgPSBjb250ZXh0U3RhdGUuc2hhZG93Qmx1cjsKLSAgICBtX29yaWdpbmFs
U3RhdGUuc2hhZG93LmNvbG9yID0gY29udGV4dFN0YXRlLnNoYWRvd0NvbG9yOwotICAgIG1fb3Jp
Z2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtczsKLQotICAgIG1fY3VycmVudFN0YXRlID0gbV9vcmlnaW5hbFN0YXRl
OworICAgIG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFk
b3c7CisgICAgbV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMgPSBjb250ZXh0U3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpw
b3B1bGF0ZUludGVybmFsQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4
dFN0YXRlKQogewotICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLmlzVmFs
aWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxDb2xvcihtX29yaWdpbmFs
U3RhdGUuZmlsbFN0eWxlLmNvbG9yKTsKLSAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuZmls
bFN0eWxlLmdyYWRpZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbEdyYWRp
ZW50KCptX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUu
ZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVsc2UgewotICAgICAgICBB
U1NFUlQobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1f
b3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybikKLSAgICAgICAgICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXRGaWxsUGF0dGVybigqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJu
KTsKLSAgICB9Ci0KLSAgICBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcik7Ci0gICAgZWxzZSBpZiAobV9vcmlnaW5hbFN0
YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0
U3Ryb2tlR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCwgbV9v
cmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVs
c2UgewotICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4p
OwotICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pCi0gICAg
ICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybigqbV9vcmlnaW5hbFN0
YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pOwotICAgIH0KKyAgICBtX2ludGVybmFsQ29udGV4dC0+
c2V0RmlsbEJydXNoKG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2gpOworICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXRTdHJva2VCcnVzaChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOwogCiAg
ICAgbV9pbnRlcm5hbENvbnRleHQtPnNldENUTShtX29yaWdpbmFsU3RhdGUuY3RtKTsKIAotICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFs
U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMpOwotICAgIG1faW50ZXJuYWxDb250ZXh0LT5z
ZXRTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fb3JpZ2luYWxTdGF0ZS5z
aGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciwgY29udGV4dFN0YXRlLnNo
YWRvd1JhZGl1c01vZGUpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbV9pbnRl
cm5hbENvbnRleHQtPnNldERyb3BTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwog
CiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUu
dGV4dERyYXdpbmdNb2RlKTsKIH0KQEAgLTE2NSw5NSArMTM3LDM5IEBAIHZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRT
bW9vdGhpbmdNCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRl
eHQoKQogewogICAgIHVwZGF0ZUNUTShtX29yaWdpbmFsU3RhdGUuY3RtKTsKLSAgICB1cGRhdGVG
aWxsQ29sb3IobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRl
LmZpbGxTdHlsZS5ncmFkaWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0
ZXJuLmdldCgpKTsKLSAgICB1cGRhdGVTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tl
U3R5bGUuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudC5nZXQoKSwg
bV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVNo
YWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNoYWRv
dy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuc2hh
ZG93Lmlnbm9yZVRyYW5zZm9ybXMgPyBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM6Ok5vKTsKKyAgICB1cGRhdGVGaWxsQnJ1c2gobV9vcmlnaW5h
bFN0YXRlLmZpbGxCcnVzaCk7CisgICAgdXBkYXRlU3Ryb2tlQnJ1c2gobV9vcmlnaW5hbFN0YXRl
LnN0cm9rZUJydXNoKTsKKyAgICB1cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFk
b3csIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zID8gU2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM6OlllcyA6IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpObyk7CiB9CiAKLXZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBH
cmFkaWVudCogbmV3R3JhZGllbnQsIFBhdHRlcm4qIG5ld1BhdHRlcm4pCit2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6dXBkYXRlRmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBuZXdCcnVzaCkK
IHsKLSAgICAvLyBUaGlzIGNoZWNrIGxvb2tzIHdyb25nIGJ1dCBpdCBhY3R1YWxseSBpc24ndCwg
Zm9yIG91ciBsaW1pdGVkIHVzZS4KLSAgICAvLyBDVCB3aWxsIG9ubHkgZXZlciBzZXQgdGhpcyB0
byBhIHNvbGlkIGNvbG9yLCB3aGljaCB0aGlzIGlzIHRoZSBjb3JyZWN0IGNoZWNrIGZvci4KLSAg
ICAvLyBJbiBjb25jbHVkZUludGVybmFsQ29udGV4dCgpIHdlIHNldCBpdCBiYWNrIHRvIHdoYXQg
aXQgd2FzIG9yaWdpbmFsbHksIHdoaWNoIHRoaXMgY2hlY2sgd29ya3MgY29ycmVjdGx5IGZvciB0
b28uCi0gICAgaWYgKG5ld0NvbG9yID09IG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0g
ICAgbmV3U3RhdGUuZmlsbENvbG9yID0gbmV3Q29sb3I7Ci0gICAgaWYgKG5ld0dyYWRpZW50KQot
ICAgICAgICBuZXdTdGF0ZS5maWxsR3JhZGllbnQgPSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3
UGF0dGVybikKLSAgICAgICAgbmV3U3RhdGUuZmlsbFBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAg
IG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxDb2xvckNoYW5nZSB9KTsKLSAgICBtX2N1cnJlbnRTdGF0ZS5maWxsU3R5bGUuY29sb3Ig
PSBuZXdDb2xvcjsKKyAgICBtX293bmVyLnNldEZpbGxCcnVzaChuZXdCcnVzaCk7CiB9CiAKLXZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcihjb25zdCBDb2xvciYgbmV3
Q29sb3IsIEdyYWRpZW50KiBuZXdHcmFkaWVudCwgUGF0dGVybiogbmV3UGF0dGVybikKK3ZvaWQg
RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYg
bmV3QnJ1c2gpCiB7Ci0gICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBidXQgaXQgYWN0dWFs
bHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIg
c2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUgY29ycmVjdCBjaGVj
ayBmb3IuCi0gICAgLy8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3ZSBzZXQgaXQgYmFj
ayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJl
Y3RseSBmb3IgdG9vLgotICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRTdGF0ZS5zdHJva2VT
dHlsZS5jb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
bmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUuc3Ryb2tlQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAo
bmV3R3JhZGllbnQpCi0gICAgICAgIG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbmV3R3JhZGll
bnQ7Ci0gICAgaWYgKG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0YXRlLnN0cm9rZVBhdHRlcm4g
PSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0
YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gbmV3Q29sb3I7CisgICAgbV9vd25lci5zZXRTdHJva2VC
cnVzaChuZXdCcnVzaCk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0pCiB7Ci0gICAgaWYgKGN0bSA9PSBtX2N1cnJlbnRT
dGF0ZS5jdG0pCisgICAgaWYgKG1fb3duZXIuZ2V0Q1RNKCkgPT0gY3RtKQogICAgICAgICByZXR1
cm47Ci0KICAgICBtX293bmVyLnNldENUTShjdG0pOwotICAgIG1fY3VycmVudFN0YXRlLmN0bSA9
IGN0bTsKIH0KIAotc3RhdGljIGJvb2wgc2hhZG93SXNDbGVhcmVkKGNvbnN0IEZsb2F0U2l6ZSYg
c2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93LCBTaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcyBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKLSAgICByZXR1cm4gc2hhZG93
T2Zmc2V0ID09IEZsb2F0U2l6ZSgpICYmICFzaGFkb3dCbHVyOwotfQotCi12b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBm
bG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotewotICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gY29uc2lkZXIgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgaWYgbm9ib2R5IGhhcyBhbnkg
c2hhZG93cy4KLSAgICBpZiAoc2hhZG93SXNDbGVhcmVkKHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
cikgJiYgc2hhZG93SXNDbGVhcmVkKG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fY3Vy
cmVudFN0YXRlLnNoYWRvdy5ibHVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3Mgc3RhdGVDaGFuZ2VGbGFnczsKLQotICAgIGlmIChzaGFkb3dPZmZzZXQgIT0gbV9j
dXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCB8fCBzaGFkb3dCbHVyICE9IG1fY3VycmVudFN0YXRl
LnNoYWRvdy5ibHVyIHx8IHNoYWRvd0NvbG9yICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xv
cikgewotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dPZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAg
ICAgIG5ld1N0YXRlLnNoYWRvd0JsdXIgPSBzaGFkb3dCbHVyOwotICAgICAgICBuZXdTdGF0ZS5z
aGFkb3dDb2xvciA9IHNoYWRvd0NvbG9yOwotICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLSAgICB9Ci0gICAgaWYgKHNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zICE9IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmll
ZCAmJiAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6
OlllcykgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMpIHsKLSAgICAg
ICAgbmV3U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7Ci0gICAgICAgIHN0YXRlQ2hh
bmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSk7Ci0gICAgfQotICAgIGlmIChzdGF0ZUNoYW5nZUZsYWdzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRl
Q2hhbmdlRmxhZ3MpOwotCi0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCA9IHNoYWRv
d09mZnNldDsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciA9IHNoYWRvd0JsdXI7Ci0g
ICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmNvbG9yID0gc2hhZG93Q29sb3I7Ci0gICAgbV9jdXJy
ZW50U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CisgICAgbV9vd25lci5zZXREcm9w
U2hhZG93KGRyb3BTaGFkb3cpOworICAgIG1fb3duZXIuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olll
cyk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJl
ZiBzdHlsZSkKIHsKICAgICBpZiAoQ0dTdHlsZUdldFR5cGUoc3R5bGUpICE9IGtDR1N0eWxlU2hh
ZG93KSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG1vcmUga2luZHMgb2YgQ0dTdHlsZXMu
Ci0gICAgICAgIHVwZGF0ZVNoYWRvdyh7MCwgMH0sIDAsIENvbG9yKCksIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOjpVbnNwZWNpZmllZCk7CisgICAgICAgIHVwZGF0ZVNoYWRvdyh7IH0sIFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTI2MSw3ICsxNzcsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hh
ZG93KENHU3R5bGVSZWYgc3R5bGUpCiAgICAgYXV0byByYWQgPSBkZWcycmFkKHNoYWRvd1N0eWxl
LmF6aW11dGggLSAxODApOwogICAgIGF1dG8gc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHN0ZDo6
Y29zKHJhZCksIHN0ZDo6c2luKHJhZCkpICogc2hhZG93U3R5bGUuaGVpZ2h0OwogICAgIGF1dG8g
c2hhZG93Q29sb3IgPSBDR1N0eWxlR2V0Q29sb3Ioc3R5bGUpOwotICAgIHVwZGF0ZVNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1N0eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZl
Q29sb3JTcGFjZShzaGFkb3dDb2xvciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwor
ICAgIHVwZGF0ZVNoYWRvdyh7IHNoYWRvd09mZnNldCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRv
d1N0eWxlLnJhZGl1cyksIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93
Q29sb3IpIH0sIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dT
dGF0ZVJlZiBnc3RhdGUsIENHUmVjdCkKQEAgLTMyOCw4ICsyNDQsOCBAQCB2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0
ZVJlZiBnc3RhdAogCiAgICAgYXV0byBmaWxsQ29sb3IgPSBDR0dTdGF0ZUdldEZpbGxDb2xvcihn
c3RhdGUpOwogICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBDR0dTdGF0ZUdldFN0cm9rZUNvbG9yKGdz
dGF0ZSk7Ci0gICAgdXBkYXRlRmlsbENvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9y
U3BhY2UoZmlsbENvbG9yKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFu
ZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOworICAgIHVwZGF0ZUZpbGxCcnVzaChD
b2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKGZpbGxDb2xvcikpOworICAgIHVwZGF0
ZVN0cm9rZUJydXNoKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29s
b3IpKTsKICAgICB1cGRhdGVTaGFkb3coQ0dHU3RhdGVHZXRTdHlsZShnc3RhdGUpKTsKIAogICAg
IGF1dG8gZm9udFNpemUgPSBDR0dTdGF0ZUdldEZvbnRTaXplKGdzdGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDYXNjYWRlQ29yZVRleHQuY3BwCmluZGV4IDUxMWUwOWI5NmNlZjAzMjUwOTBlMjNhZjkxNGFl
MzVmMmFiOGVkMmUuLjgwYThjOGFlNjU0OGQwYjZhOTZhYTMyZDdjMDU1ZGI2ODY0OTE2MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRD
YXNjYWRlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCkBAIC0yNDIsMTAgKzI0Miw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGb250JiBmb250LCBjb25zdCBHCiAgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjb250ZXh0
KTsKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXpl
KCkpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVy
OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGF1dG8gZHJvcFNoYWRvdyA9IGNv
bnRleHQuZHJvcFNoYWRvdygpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0gPSBj
b250ZXh0LmdldENUTSgpOwogICAgIGZsb2F0IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKTsKQEAgLTI1OCwxNiArMjU1LDE2IEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cg
PSBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBz
aGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0Nv
bG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8
IGNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRl
eHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBj
b250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBkcm9w
U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAhZHJvcFNoYWRvdy5ibHVyUmFkaXVzICYmICFwbGF0
Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVk
KCkpICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgIGlmIChoYXNTaW1w
bGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGlu
c3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwg
YW50aWFsaWFzaW5nLgogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yIHNoYWRv
d0ZpbGxDb2xvciA9IHNoYWRvd0NvbG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxD
b2xvci5hbHBoYUFzRmxvYXQoKSk7CisgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvciA9IGRy
b3BTaGFkb3cuY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmlsbENvbG9yLmFscGhh
QXNGbG9hdCgpKTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9y
KTsKLSAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQu
d2lkdGgoKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBkcm9wU2hh
ZG93Lm9mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0
cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAg
eWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBv
aW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50
LnkoKSArIGRyb3BTaGFkb3cub2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMo
RmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50
aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9h
dFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBm
b250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7
CkBAIC0yODAsNyArMjc3LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRP
ZmZzZXQsIHBvaW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVt
R2x5cGhzLCB0ZXh0TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAg
IGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Ip
OworICAgICAgICBjb250ZXh0LnNldERyb3BTaGFkb3coZHJvcFNoYWRvdyk7CiAKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoc2hvdWxkU21vb3RoRm9udHMgIT0gb3JpZ2luYWxT
aG91bGRVc2VGb250U21vb3RoaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMmUy
ZjRmNGYyY2I1NWQzNjVlNWFlMzk5MzI1ZDA1ZjJjMTczNjFmZC4uMmIwM2NlNGE2NmUyZDhhYTBm
YWQ4MWE2NDRhZWIxZWRmZGUxYzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05
MCwxMCArOTAsNyBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0
RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1Rl
eHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8g
RklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFu
Z2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgotICAgICAgICAgICAgaWYgKHN0YXRlSXRl
bS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5n
ZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHNDaGFuZ2UpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlRmxhZ3Mg
PT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyM2QwYmJjYzcx
YzI4MWM1MmMzNWE4YzI1MmRhOTZjMGFiMTJhOThjLi5iNjZjODQ4YTMzYmRkOTIzNjBmZWE4NTMz
N2ZhYjVkYjJkMmQwMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBA
IC0xNDgsMjQgKzE0OCwxOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKICAgICByZXR1cm4gdHM7
CiB9CiAKLVNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgIDog
bV9zdGF0ZUNoYW5nZShzdGF0ZSwgZmxhZ3MpCi17Ci19Ci0KLVNldFN0YXRlOjpTZXRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCi0gICAgOiBtX3N0
YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlKQorU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSkKKyAgICA6IG1fc3RhdGUoc3RhdGUpCiB7CiB9CiAKIHZvaWQg
U2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBtX3N0YXRl
Q2hhbmdlLmFwcGx5KGNvbnRleHQpOworICAgIGNvbnRleHQudXBkYXRlU3RhdGUobV9zdGF0ZSk7
CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRTdGF0ZSYgc3RhdGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0U3RhdGUmIGl0ZW0pCiB7Ci0gICAgdHMgPDwgc3RhdGUuc3RhdGVD
aGFuZ2UoKTsKKyAgICB0cyA8PCBpdGVtLnN0YXRlKCk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA5N2NiNWZjOGQwNGJhODY2MmI3MmM3
ZGRlZWJjNDQxNTVjMjgyNWI3Li45Njk0ZDY4ZDE1ZTk4ZDU2N2QzOGQzYWM5YjJjMDk5ZjMwZDBh
NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI0NywxMCArMjQ3LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxz
ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAotICAgIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGVDaGFuZ2U7IH0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFu
Z2UoKSB7IHJldHVybiBtX3N0YXRlQ2hhbmdlOyB9CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVj
b2RlciYpOwpAQCAtMjU4LDI4OCArMjU3LDI0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVf
RVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0KLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlIG1fc3RhdGU7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBj
aGFuZ2VGbGFncyA9IG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFnczsKLSAgICBlbmNvZGVyIDw8
IGNoYW5nZUZsYWdzOwotCi0gICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7
Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlR3JhZGll
bnQpOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICB9Ci0K
LSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZVBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VQYXR0ZXJuKTsK
LSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVu
dENoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlLmZpbGxHcmFkaWVudCk7Ci0gICAgICAg
IGVuY29kZXIgPDwgKnN0YXRlLmZpbGxHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkg
ewotICAgICAgICBBU1NFUlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8
ICpzdGF0ZS5maWxsUGF0dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93
Qmx1cjsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5zaGFkb3dSYWRpdXNNb2RlOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VUaGlja25lc3M7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9k
ZUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0g
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VD
b2xvckNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlQ29sb3I7Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbENvbG9yOwotCi0gICAgaWYg
KGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hh
bmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2Rl
Q2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5ibGVuZE1vZGU7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5hbHBo
YTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRB
bnRpYWxpYXM7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAg
ICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtczsKKyAgICBlbmNvZGVyIDw8IG1fc3RhdGU7CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncz4gY2hhbmdlRmxhZ3M7Ci0gICAgZGVjb2RlciA+PiBjaGFu
Z2VGbGFnczsKLSAgICBpZiAoIWNoYW5nZUZsYWdzKQorICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhp
Y3NDb250ZXh0U3RhdGU+IHN0YXRlOworICAgIGRlY29kZXIgPj4gc3RhdGU7CisgICAgaWYgKCFz
dGF0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mg
PSAqY2hhbmdlRmxhZ3M7Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAg
ICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAg
ICAgICBpZiAoIXN0cm9rZUdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92
ZSgqc3Ryb2tlR3JhZGllbnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KSkgewotICAgICAgICBhdXRvIHN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rl
cik7Ci0gICAgICAgIGlmICghc3Ryb2tlUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0g
V1RGTW92ZSgqc3Ryb2tlUGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENo
YW5nZSkpIHsKLSAgICAgICAgYXV0byBmaWxsR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRl
Y29kZXIpOwotICAgICAgICBpZiAoIWZpbGxHcmFkaWVudCkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBXVEZNb3ZlKCpmaWxsR3JhZGllbnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNo
YW5nZSkpIHsKLSAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNv
ZGVyKTsKLSAgICAgICAgaWYgKCFmaWxsUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdU
Rk1vdmUoKmZpbGxQYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwotICAgICAgICBk
ZWNvZGVyID4+IHNoYWRvd09mZnNldDsKLSAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuc2hhZG93T2Zmc2V0ID0gKnNoYWRvd09mZnNldDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBzaGFkb3dCbHVyOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd0JsdXI7Ci0gICAg
ICAgIGlmICghc2hhZG93Qmx1cikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNoYWRvd0JsdXI7Ci0K
LSAgICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gc2hhZG93Q29sb3I7Ci0gICAgICAgIGRlY29k
ZXIgPj4gc2hhZG93Q29sb3I7Ci0gICAgICAgIGlmICghc2hhZG93Q29sb3IpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hh
ZG93Q29sb3IgPSAqc2hhZG93Q29sb3I7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dS
YWRpdXNNb2RlPiBzaGFkb3dSYWRpdXNNb2RlOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd1Jh
ZGl1c01vZGU7Ci0gICAgICAgIGlmICghc2hhZG93UmFkaXVzTW9kZSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dS
YWRpdXNNb2RlID0gV1RGTW92ZSgqc2hhZG93UmFkaXVzTW9kZSk7Ci0gICAgfQotCi0gICAgaWYg
KHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4g
c3Ryb2tlVGhpY2tuZXNzOwotICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKLSAg
ICAgICAgaWYgKCFzdHJva2VUaGlja25lc3MpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gKnN0
cm9rZVRoaWNrbmVzczsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkg
ewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2lu
Z01vZGU7Ci0gICAgICAgIGRlY29kZXIgPj4gdGV4dERyYXdpbmdNb2RlOwotICAgICAgICBpZiAo
IXRleHREcmF3aW5nTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBXVEZNb3ZlKCp0ZXh0
RHJhd2luZ01vZGUpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpIHsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gc3Ryb2tlQ29sb3I7Ci0gICAgICAgIGRlY29kZXIg
Pj4gc3Ryb2tlQ29sb3I7Ci0gICAgICAgIGlmICghc3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tl
Q29sb3IgPSAqc3Ryb2tlQ29sb3I7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkp
IHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gZmlsbENvbG9yOwotICAgICAgICBkZWNv
ZGVyID4+IGZpbGxDb2xvcjsKLSAgICAgICAgaWYgKCFmaWxsQ29sb3IpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENv
bG9yID0gKmZpbGxDb2xvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKSB7
Ci0gICAgICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0cm9rZVN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxXaW5kUnVsZT4gZmlsbFJ1bGU7Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbFJ1bGU7Ci0gICAg
ICAgIGlmICghZmlsbFJ1bGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFJ1bGUgPSAqZmlsbFJ1bGU7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGRlY29k
ZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGlmICghY29tcG9zaXRlT3BlcmF0b3Ip
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdl
Lm1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSAqY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxCbGVu
ZE1vZGU+IGJsZW5kTW9kZTsKLSAgICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7Ci0gICAgICAg
IGlmICghYmxlbmRNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmJsZW5kTW9kZSA9ICpibGVuZE1vZGU7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHk7Ci0gICAgICAgIGRlY29kZXIgPj4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAg
ICAgaWYgKCFpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgPSAqaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICB9Ci0KLSAgICBp
ZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6QWxwaGFDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhOwot
ICAgICAgICBkZWNvZGVyID4+IGFscGhhOwotICAgICAgICBpZiAoIWFscGhhKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFs
cGhhID0gKmFscGhhOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKSB7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBk
ZWNvZGVyID4+IHNob3VsZEFudGlhbGlhczsKLSAgICAgICAgaWYgKCFzaG91bGRBbnRpYWxpYXMp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdl
Lm1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gKnNob3VsZEFudGlhbGlhczsKLSAgICB9Ci0KLSAg
ICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gc2hvdWxkU21vb3RoRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU21vb3Ro
Rm9udHM7Ci0gICAgICAgIGlmICghc2hvdWxkU21vb3RoRm9udHMpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkU21v
b3RoRm9udHMgPSAqc2hvdWxkU21vb3RoRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzOwotICAgICAgICBpZiAoIXNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSAqc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtc0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsK
LSAgICAgICAgaWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4geyB7IHN0YXRlQ2hhbmdlIH0gfTsKKyAgICByZXR1cm4gU2V0U3RhdGUoKnN0YXRlKTsK
IH0KIAogY2xhc3MgU2V0TGluZUNhcCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKaW5kZXggZWVlNDQ3MWQzNTRlNzUxNTMxMjUxODlkZmNjOTQxOGEzOTQ1MTRhMS4u
ZmU5MjgxNjdkMTRlZGU1ZmVmNzg2OTNhZTdlMTQwY2U2NGFjYWI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTMsNDUgKzUzLDM0IEBAIFJlY29yZGVy
Ojp+UmVjb3JkZXIoKQogICAgIEFTU0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpID09IDEpOyAvLyBJ
ZiB0aGlzIGZpcmVzLCBpdCBpbmRpY2F0ZXMgbWlzbWF0Y2hlZCBzYXZlL3Jlc3RvcmUuCiB9CiAK
LXN0YXRpYyBib29sIGNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCit2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRpYyBj
b25zdGV4cHIgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgaW5saW5lU3Rh
dGVDaGFuZ2VGbGFncyB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlj
a25lc3NDaGFuZ2UsCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNo
YW5nZSwKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwKLSAg
ICB9OwotCi0gICAgaWYgKGNoYW5nZUZsYWdzICE9IChjaGFuZ2VGbGFncyAmIGlubGluZVN0YXRl
Q2hhbmdlRmxhZ3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSAmJiAh
Y2hhbmdlcy5tX3N0YXRlLnN0cm9rZUNvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKHN0YXRlLmNoYW5nZXMoKSk7CisgICAgCisgICAg
aWYgKHN0YXRlLmhhc09ubHlQcmltaXRpdmVDaGFuZ2VzKCkpIHsKKyAgICAgICAgaWYgKHN0YXRl
LmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1
c2gpKQorICAgICAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpmaWxsQ29sb3IoKS50
cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkgJiYgIWNoYW5nZXMubV9zdGF0ZS5m
aWxsQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTdHJva2VCcnVzaCkpCisgICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVTdHJva2VD
b2xvcigqc3Ryb2tlQ29sb3IoKS50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CiAKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KKyAgICAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQorICAgICAgICAgICAgcmVjb3Jk
U2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcygpKTsKIAotdm9pZCBSZWNvcmRlcjo6
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBj
aGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFn
cykKLXsKLSAgICBpZiAoIWNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjaGFuZ2VzLCBj
aGFuZ2VGbGFncykpIHsKLSAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0
ZS5zdHJva2VQYXR0ZXJuKQotICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+
dGlsZUltYWdlKCkpOwotICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRl
LmZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGls
ZUltYWdlKCkpOwotICAgICAgICByZWNvcmRTZXRTdGF0ZShjaGFuZ2VzLm1fc3RhdGUsIGNoYW5n
ZUZsYWdzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAg
ICByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcigqY2hhbmdlcy5tX3N0YXRlLnN0cm9rZUNvbG9y
LnRyeUdldEFzU1JHQkFCeXRlcygpKTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gcGF0dGVybiA9IGZpbGxQYXR0ZXJuKCkpCisgICAgICAgICAgICByZWNvcmRSZXNvdXJj
ZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQot
ICAgICAgICByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVRo
aWNrbmVzcyk7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVy
biA9IHN0cm9rZVBhdHRlcm4oKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRl
cm4tPnRpbGVJbWFnZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29yZFNl
dElubGluZUZpbGxDb2xvcigqY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JB
Qnl0ZXMoKSk7CisgICAgcmVjb3JkU2V0U3RhdGUoc3RhdGUpOwogfQogCiB2b2lkIFJlY29yZGVy
OjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCkBAIC05OSwyNSArODgsMjUgQEAg
dm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSBpbnZva2VkIGluIGFuIGFkLWhvYyBtYW5uZXIgd2hl
biByZWNvcmRpbmcgZHJhd2luZyBpdGVtcy4gV2Ugc2hvdWxkIGNvbnNpZGVyIGVpdGhlcgogICAg
IC8vIHNwbGl0dGluZyBHcmFwaGljc0NvbnRleHQgc3RhdGUgY2hhbmdlcyBpbnRvIGluZGl2aWR1
YWwgZGlzcGxheSBsaXN0IGl0ZW1zLCBvciByZWZhY3RvcmluZyB0aGUgY29kZSBzdWNoIHRoYXQK
ICAgICAvLyB0aGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGludm9rZWQgd2hlbiByZWNvcmRp
bmcgYSBkcmF3aW5nIGl0ZW0uCi0gICAgYXV0byYgc3RhdGVDaGFuZ2VzID0gY3VycmVudFN0YXRl
KCkuc3RhdGVDaGFuZ2U7Ci0gICAgYXV0byBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hh
bmdlcy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwot
ICAgIGlmICghY2hhbmdlc0Zyb21MYXN0U3RhdGUpCisgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50
U3RhdGUoKS5zdGF0ZTsKKyAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJh
d2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVD
aGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7Ci0gICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKHN0YXRlQ2hhbmdlcywgY2hhbmdlc0Zyb21MYXN0U3RhdGUpOwotICAgIHN0YXRl
Q2hhbmdlcy5tX2NoYW5nZUZsYWdzID0geyB9OwotICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3
aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRGlz
cGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcgc3RhdGUgIiA8PCBzdGF0
ZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKHN0YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBs
eUNoYW5nZXMoKTsKKyAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGU7
CiB9CiAKIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBSZWNvcmRlcjo6c3RhdGUoKSBjb25z
dAogewotICAgIHJldHVybiBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlOworICAg
IHJldHVybiBjdXJyZW50U3RhdGUoKS5zdGF0ZTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZGlkVXBk
YXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgUmVjb3JkZXI6OmRpZFVwZGF0
ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBjdXJyZW50U3RhdGUo
KS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CisgICAgY3VycmVudFN0YXRl
KCkuc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0
YXRlKTsKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCkBAIC0yMjIsMTIgKzIxMSwxNSBAQCB2b2lkIFJl
Y29yZGVyOjpkcmF3UGF0dGVybihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsCiAKIHZvaWQgUmVjb3JkZXI6OnNhdmUoKQogeworICAgIEdyYXBoaWNz
Q29udGV4dDo6c2F2ZSgpOwogICAgIHJlY29yZFNhdmUoKTsKLSAgICBtX3N0YXRlU3RhY2suYXBw
ZW5kKG1fc3RhdGVTdGFjay5sYXN0KCkuY2xvbmVGb3JTYXZlKCkpOworICAgIG1fc3RhdGVTdGFj
ay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnJlc3Rv
cmUoKQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpOworCiAgICAgaWYgKCFtX3N0
YXRlU3RhY2suc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI3NSwxNiArMjY3LDI0IEBA
IEFmZmluZVRyYW5zZm9ybSBSZWNvcmRlcjo6Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVk
ZURldmljZVNjYWxlKSBjb25zdAogCiB2b2lkIFJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxh
eWVyKGZsb2F0IG9wYWNpdHkpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFy
ZW5jeUxheWVyKG9wYWNpdHkpOworCiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKICAgICByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwogICAgIG1f
c3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclRyYW5zcGFyZW5j
eUxheWVyKCkpOworICAgIAorICAgIG1fc3RhdGUuYWxwaGEgPSAxOwogfQogCiB2b2lkIFJlY29y
ZGVyOjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjplbmRU
cmFuc3BhcmVuY3lMYXllcigpOworCiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKICAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc3RhdGVTdGFj
ay5yZW1vdmVMYXN0KCk7CisKKyAgICBtX3N0YXRlLmFscGhhID0gY3VycmVudFN0YXRlKCkuc3Rh
dGUuYWxwaGE7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggODQ1ZWMwMDc3MmVkMmM1NGExZTZjYjI2YjIxNTFkYWJhYTZlYzA3NS4u
YTJhMjI2OGU1ZWQ1ZWI1YzBhOWNmZTNjZmVlYmE3NzAxYzJhZWY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02OSw3ICs2OSw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVp
bnQ4X3Q+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhm
bG9hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXAp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5
JiwgZmxvYXQgZGFzaE9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5l
Sm9pbihMaW5lSm9pbikgPSAwOwpAQCAtMTM1LDMwICsxMzUsMjUgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAgICAgc3RydWN0
IENvbnRleHRTdGF0ZSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBsYXN0RHJhd2luZ1N0YXRl
OwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogICAgICAgICBGbG9hdFJlY3QgY2xpcEJv
dW5kczsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIGxhc3REcmF3aW5nU3RhdGU7CiAKLSAgICAgICAg
Q29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKLSAgICAgICAg
ICAgIDogY3RtKHRyYW5zZm9ybSkKLSAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwKQotICAg
ICAgICAgICAgLCBsYXN0RHJhd2luZ1N0YXRlKHN0YXRlKQorICAgICAgICBDb250ZXh0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGN0bSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwQm91bmRzKQorICAgICAgICAgICAgOiBzdGF0ZShz
dGF0ZSkKKyAgICAgICAgICAgICwgY3RtKGN0bSkKKyAgICAgICAgICAgICwgY2xpcEJvdW5kcyhj
bGlwQm91bmRzKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDb250ZXh0U3RhdGUg
Y2xvbmVGb3JTYXZlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQ29udGV4dFN0YXRl
IHN0YXRlKGxhc3REcmF3aW5nU3RhdGUsIGN0bSwgY2xpcEJvdW5kcyk7Ci0gICAgICAgICAgICBz
dGF0ZS5zdGF0ZUNoYW5nZSA9IHN0YXRlQ2hhbmdlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRl
OwotICAgICAgICB9Ci0KICAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJlbmN5
TGF5ZXIoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xvbmVG
b3JTYXZlKCk7Ci0gICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0gMTsK
LSAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgICAgIGF1dG8gY29weSA9ICp0aGlz
OworICAgICAgICAgICAgY29weS5zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgICAgICBpZiAoY29weS5sYXN0RHJhd2luZ1N0YXRlKQorICAgICAgICAgICAgICAgIGNv
cHkubGFzdERyYXdpbmdTdGF0ZS0+ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgICAg
ICAgICAgcmV0dXJuIGNvcHk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KTsKQEAgLTE4OSw3ICsxODQsNyBAQCBwcml2YXRlOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgZmlu
YWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3ND
b250ZXh0U3RhdGUmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZUNh
cChMaW5lQ2FwKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVEYXNoKGNv
bnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwpAQCAtMjcwLDcgKzI2NSw3
IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQ
aXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpIGZp
bmFsOwogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwotICAg
IHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCAxZmRjNmJhNTZiZmRiMjYzNmVm
YjM0NjJhZGEyYTk5MGQzMzg5OTQ1Li43OWRkMTAyMDQ2MjI2ZmMwYTExZWRlM2JlM2I5NTJlY2I4
N2QzNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tl
VGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNz
Pih0aGlja25lc3MpOwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgYXBwZW5kPFNl
dFN0YXRlPihzdGF0ZSwgY2hhbmdlRmxhZ3MpOworICAgIGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUp
OwogfQogCiB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxpbmVD
YXApCkBAIC00MTcsMTYgKzQxNywxMyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1BhaW50
aW5nRXh0ZW50KGZsb2F0IGJsdXJSYWRpdXMpCiAKIEZsb2F0UmVjdCBSZWNvcmRlckltcGw6OmV4
dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAg
RmxvYXRSZWN0IGJvdW5kcyA9IHJlY3Q7CisgICAgYXV0byBib3VuZHMgPSByZWN0OwogICAgIGF1
dG8mIHN0YXRlID0gY3VycmVudFN0YXRlKCk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0
OwotICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBp
ZiAoZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsK
LSAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudCA9IGJvdW5kczsKLSAgICAgICAgc2hhZG93
RXh0ZW50Lm1vdmUoc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUo
c2hhZG93UGFpbnRpbmdFeHRlbnQoc2hhZG93UmFkaXVzKSk7CisgICAgaWYgKGhhc1NoYWRvdygp
KSB7CisgICAgICAgIGF1dG8gc2hhZG93RXh0ZW50ID0gYm91bmRzOworICAgICAgICBzaGFkb3dF
eHRlbnQubW92ZShkcm9wU2hhZG93KCkub2Zmc2V0KTsKKyAgICAgICAgc2hhZG93RXh0ZW50Lmlu
ZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQoZHJvcFNoYWRvdygpLmJsdXJSYWRpdXMpKTsKICAg
ICAgICAgYm91bmRzLnVuaXRlKHNoYWRvd0V4dGVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDY0MjI2NWYwOTgwMjJjZjJiMDVm
MTgwYzE3NGZhMDM0NjJmMmRkNDAuLmFjMmQzMTc5Njc1OGM2MmNjNjE1MGExNTQ5ZDdhMDk0MDZl
ZWZhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29s
b3IoU1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tl
Q29sb3IoU1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhp
Y2tuZXNzKGZsb2F0KSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAg
ICAgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zm
c2V0KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmYxOWQwMDM1
NGNkYmVkZTNhNWJhMWFmNzU4Y2ZmMDIzYTI1YTIyLi5mM2M4YzkwY2Q4OGJiZTBjNTFlMWQ0ZmEx
MzNjNTFlODNiODBiMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCkBAIC05NywxMCArOTcsMTAgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlm
aWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0
YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9
IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2gucGF0
dGVybigpKSkKICAgICAgICAgcmV0dXJuICppbWFnZUlkZW50aWZpZXI7CiAKLSAgICBpZiAoYXV0
byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0
ZUNoYW5nZSgpLm1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0KCkpKQorICAgIGlmIChhdXRvIGltYWdl
SWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmls
bEJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCiAg
ICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA5MTE0NmRmYzZmZDg0
ZGY4ZTI5NTRmMDM3N2QwMDY2YTc3MjMzY2M5Li4xNDE2OWEwNzU1OGQ2MTZiMDkyMGNiMDU3ZGM4
ZWIxYzJhNTg4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtODIsOSArODIsOSBAQCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpDYWlyb09wZXJhdGlvblJlY29yZGVyKFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFu
ZExpc3QpCiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHsgfSwgeyB9LCBGbG9hdFJlY3Q6Omlu
ZmluaXRlUmVjdCgpIH0pOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVw
ZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
KSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VUaGlj
a25lc3NDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxmbG9h
dD4gewogICAgICAgICAgICAgdmlydHVhbCB+U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKCkgPSBkZWZh
dWx0OwogCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
aWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJv
a2VUaGlja25lc3MpKTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlKSkgewogICAgICAg
ICBzdHJ1Y3QgU3Ryb2tlU3R5bGVDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxTdHJva2VTdHlsZT4gewogICAgICAgICAgICAgdmlydHVhbCB+U3Ryb2tlU3R5
bGVDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgRwogICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTdHJva2VTdHlsZUNoYW5n
ZT4oc3RhdGUuc3Ryb2tlU3R5bGUpKTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRl
LmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3Np
dGVNb2RlKSkgewogICAgICAgICBzdHJ1Y3QgQ29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIGZpbmFs
IDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8Q29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZT4gewogICAgICAgICAgICAgdmlydHVhbCB+Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
KCkgPSBkZWZhdWx0OwogCkBAIC0xMzUsMTAgKzEzNSwxMCBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgRwogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Is
IHN0YXRlLmJsZW5kTW9kZSkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3Np
dGVPcGVyYXRpb25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBzdGF0ZS5j
b21wb3NpdGVNb2RlLmJsZW5kTW9kZSkpOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUu
Y2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFu
dGlhbGlhcykpIHsKICAgICAgICAgc3RydWN0IFNob3VsZEFudGlhbGlhc0NoYW5nZSBmaW5hbCA6
IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPGJvb2w+IHsKICAgICAgICAgICAgIHZp
cnR1YWwgflNob3VsZEFudGlhbGlhc0NoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTU1LDYgKzE1
NSw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHCiAKICAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8U2hvdWxkQW50aWFsaWFzQ2hhbmdlPihzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKICAg
ICB9CisKKyAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTI5Miw3ICsyOTQs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3Qs
IGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgZ3JhZGll
bnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKCkpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzE2LDcgKzMxOCw3
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwg
Y29sb3IsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShz
dGF0ZSksIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBD
YWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikp
OwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzQ2LDcgKzM0OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRS
ZWN0CiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3Rh
dGUuY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJl
Y3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgYmxlbmRNb2RlLCBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAg
LTUzMyw3ICs1MzUsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaAogICAgICAgICBDYWlybzo6
U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwKICAgICAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9m
b250X3Q+KGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKSwKICAgICAgICAgZm9udC5z
eW50aGV0aWNCb2xkT2Zmc2V0KCksIFdURk1vdmUoY2Fpcm9HbHlwaHMpLCB4T2Zmc2V0LCBzdGF0
ZS50ZXh0RHJhd2luZ01vZGUsCi0gICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUu
c2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwgZm9udFNtb290aGluZykpOworICAgICAg
ICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5k
cm9wU2hhZG93LmNvbG9yLCBmb250U21vb3RoaW5nKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQpAQCAtNTk5
LDcgKzYwMSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lCiAgICAgfTsKIAogICAgIGF1dG8m
IHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UmVj
dD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0
eWxlLCBzdGF0ZS5zdHJva2VDb2xvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdS
ZWN0PihyZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0
ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQpAQCAtNjIyLDcgKzYyNCw3IEBAIHZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25z
dCBGbG9hdFBvaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+
c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2lu
dDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJv
a2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNob3VsZEFudGlh
bGlhcykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRl
eHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFy
cmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ryb2tl
U3R5bGUpCkBAIC02NDUsNyArNjQ3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRo
cywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUNvbG9yKSk7CisgICAg
YXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmVzRm9yVGV4dD4ocG9pbnQsIHRoaWNrbmVzcywg
d2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgc3RhdGUuc3Ryb2tlQnJ1c2guY29s
b3IoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHls
ZSBzdHlsZSkKQEAgLTY4NCw3ICs2ODYsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9OwogCiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdFbGxp
cHNlPihyZWN0LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJv
a2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RHJhd0VsbGlwc2U+KHJlY3QsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhjb25z
dCBQYXRoJiBwYXRoLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29s
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmgKaW5kZXggODNjNmQyN2Q2ZWEzNmM3OWJlYmQ3ODI1Zjk5YjdjNDM5MDhlZTU0Yi4uYjk1
Mjg2MzEzNDMzMDAyZmFlNzJiZGU0NzgwZDMyNTY4ZGM1ODFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNDEsNyArNDEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZv
cm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9h
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q0dXaW4uY3BwCmluZGV4IGMxOWU3NDE1NTdjMzA4Yzk0MWU0ZWY3MTVlM2RiNDY1OTRk
MTg1YjYuLjJjZDc4NjVlY2E4MjllYjQ1NzgwZTlmYjBlNzI0N2EzNzEyYmNjMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCkBA
IC0xNzYsMjUgKzE3NiwyMiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250LAogICAgIENHQ29udGV4
dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7CiAgICAgRm9udENh
c2NhZGU6OnNldENHQ29udGV4dEZvbnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQucGxh
dGZvcm1EYXRhKCkuaXNTeXN0ZW1Gb250KCksIGZhbHNlLCBmb250LnBsYXRmb3JtRGF0YSgpLnVz
ZUdESSgpKTsKIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93
Qmx1cjsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBncmFwaGljc0NvbnRleHQuZ2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGF1dG8gZHJv
cFNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC5kcm9wU2hhZG93KCk7CiAKLSAgICBib29sIGhhc1Np
bXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJh
d2luZ01vZGU6OkZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYm
ICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3ND
b250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAg
IGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgp
ID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBkcm9wU2hhZG93LmNvbG9yLmlzVmFsaWQoKSAm
JiAhZHJvcFNoYWRvdy5ibHVyUmFkaXVzICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRy
YW5zbGF0aW9uT3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAg
ICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBv
biBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENv
bG9yID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xvcigpOwotICAgICAgICBDb2xvciBzaGFkb3dG
aWxsQ29sb3IgPSBzaGFkb3dDb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShmaWxsQ29s
b3IuYWxwaGFBc0Zsb2F0KCkpOworICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3IgPSBkcm9w
U2hhZG93LmNvbG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KGZpbGxDb2xvci5hbHBoYUFz
RmxvYXQoKSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93Rmls
bENvbG9yKTsKLSAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dP
ZmZzZXQud2lkdGgoKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBk
cm9wU2hhZG93Lm9mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25v
cmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRl
IGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRv
d1RleHRZID0gcG9pbnQueSgpICsgZHJvcFNoYWRvdy5vZmZzZXQuaGVpZ2h0KCkgKiAoZ3JhcGhp
Y3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwogICAgICAgICBD
R0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBzaGFkb3dUZXh0WCwgc2hhZG93VGV4
dFkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKGZvbnQuc3ludGhldGlj
Qm9sZE9mZnNldCgpKSB7Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dD
b250ZXh0LCBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGlj
Qm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOworICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgZHJv
cFNoYWRvdy5vZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBwb2lu
dC55KCkgKyBkcm9wU2hhZG93Lm9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRl
eHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVt
R2x5cGhzKTsKICAgICAgICAgfQogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KGZpbGxDb2xvcik7CkBAIC0yMDgsNyArMjA1LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwK
ICAgICB9CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKIAogICAgIEZv
bnRDYXNjYWRlOjpzZXRGb250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3Ro
aW5nU3R5bGUpOwogICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY2dDb250ZXh0LCBzYXZlZE1h
dHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNw
cAppbmRleCA3ZWQ1MzdjOTI3OTM3NzBmNDQ4OGFlMjlkZjQwNzI3ZDdlYjFhM2E5Li42MTc4YWVi
MWM4NzYzNzcyMTk1ZjllNDQ3NjEwZTQ5MGU3NjRmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRmxvYXRS
ZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNv
bnN0CiBzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgaWYgKGF1dG8gZ3JhZGllbnQgPSBjb250ZXh0LnN0cm9rZUdyYWRpZW50
KCkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5z
dGF0ZSgpLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxHcmFkaWVudCgqZ3JhZGllbnQsIGNvbnRleHQuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSgpKTsKICAgICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJva2VQ
YXR0ZXJuKCkpCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1NDM4MTgyZGRlODc2M2Vi
YWQzOGYxOTJkZjc5NWFhMDYwYjY1MWJiLi45ZTM3ODZlMGZkY2RiODlmYjA2NjI4YzhmY2M2ZGM4
N2I3N2MzZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjgsMTAgKzEy
OCwxMCBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlM
aXN0OjpTZXRTdGF0ZSYmIGl0ZW0pCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAKLSAg
ICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuc3Ry
b2tlUGF0dGVybi5nZXQoKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3Rh
dGUoKS5maWxsQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFm
aXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQYXR0ZXJu
LmdldCgpKSkKKyAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0cm9r
ZUJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0oV1RG
TW92ZShpdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5j
cHAKaW5kZXggODU3N2NiYmRlNmQzOTAxZDM0NzA3NjFlZDMwZjc5ZDk4ZTgyYjk4ZC4uOWJhZjlh
MzVjOTcwZjliNzUxMDMwNTZjYjViZDc4MTZhZWNhZDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxv
YXQgdGhpY2tuZXNzKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXI6OlNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxh
Z3MpCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0
ZSB7IHN0YXRlLCBmbGFncyB9KSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6U2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlIHsgc3RhdGUgfSkpOwog
fQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0TGluZUNh
cChMaW5lQ2FwIGxpbmVDYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuaAppbmRleCA5YjMzYTA2N2ZkMTZiY2NmMTQwNDJjMTk3NGRkNjkxOTQyMjYyNDY4Li5iZWQz
NjNlMDYyNDUzNTI3ZjlhMDYyMDg4Y2U2NzdjMmI5OTIyNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xvcihXZWJDb3JlOjpTUkdCQTx1aW50OF90Pikg
ZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihXZWJDb3JlOjpTUkdC
QTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxv
YXQpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncykgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUNhcChX
ZWJDb3JlOjpMaW5lQ2FwKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0
IFdlYkNvcmU6OkRhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkU2V0TGluZUpvaW4oV2ViQ29yZTo6TGluZUpvaW4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxNjZhNTM5YzcxMmM0Yzc0
ZWU2NmQ0NjE2NWRmMjRiYzE3ZjllOGMuLjcwNzAwYTBlYjZjMjY0NWQ1MzA5NWYxOGZlNjkyMzRk
OGMzYWFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0
U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wMy0xNyAgSm9uYXRoYW4gQmVkYXJkICA8Sm9u
V0JlZGFyZEBnbWFpbC5jb20+CiAKICAgICAgICAgY29uZmlndXJlLXhjb2RlLWZvci1lbWJlZGRl
ZC1kZXZlbG9wbWVudCBmYWlscyB3aXRoIFhjb2RlIDEzLjMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0
c0NHLmNwcAppbmRleCAyNDczNTgwZjE5MGUwZmQ2NzRjMzY3ZGE0N2M5ZjE5MmJhMjQ4NWU0Li4y
MTVjMTdjNjY1N2FlZGE2YTZlMmNkMGFlMGM5YzkyNmYzYmQ4MmIwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29u
dGV4dFRlc3RzQ0cuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVz
dHMsIERyYXdOYXRpdmVJbWFnZURvZXNOb3RMZWFrQ29tcG9zaXRlT3BlcmF0b3IpCiAgICAgR3Jh
cGhpY3NDb250ZXh0Q0cgY3R4KGNnQ29udGV4dC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfRVEoY3R4
LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zlcik7Ci0g
ICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlOjpOb3JtYWwp
OworICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAog
ICAgIGF1dG8gZ3JlZW5QaXhlbENHID0gZ3JlZW5JbWFnZSgpOwogICAgIGF1dG8gZ3JlZW5QaXhl
bE5hdGl2ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoZ3JlZW5QaXhlbENHLmdldCgpKTsKQEAgLTcx
LDcgKzcxLDcgQEAgVEVTVChHcmFwaGljc0NvbnRleHRUZXN0cywgRHJhd05hdGl2ZUltYWdlRG9l
c05vdExlYWtDb21wb3NpdGVPcGVyYXRvcikKICAgICBFWFBFQ1RfRVEocHJpbWFyeURhdGFbMl0s
IDApOwogCiAgICAgRVhQRUNUX0VRKGN0eC5jb21wb3NpdGVPcGVyYXRpb24oKSwgQ29tcG9zaXRl
T3BlcmF0b3I6OlNvdXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlT3BlcmF0
aW9uKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZSgp
LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWEzZGFmZjdmOTYzYjk1YWQ2NWI4MGIwNTM0ZGNkNmUwMWU2YzFhLi5hMTdiMTI2
YmNjYzZjZDZiODM2NDI1ZGM0OGQwYTFhZDg4YmRkMmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjItMDMtMTggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2Yg
Y2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFk
b3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMt
dHJhbnNmb3Jtcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZGlzcGxheWxpc3RzL2xheWVyLWRp
c3BheS1saXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDIyLTAzLTE3ICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zsb3Jlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjkxMTI5LXIyOTExMjgpOiBbV0sxIEVXU10g
MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2FuaW1hdGlv
bi1tb2RlbC9hbmltYXRpb24tdHlwZXMvKiB0ZXN0cyBhcmUgYSBjb25zdGFudCB0ZXh0IGZhaWx1
cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMt
c2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5j
bHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCA1MTFiN2MwYzU0ZDMzMjE2YjdjNmVhZjA0
M2E3NWMxNjc2NmQwNDI3Li5iMjlmZTJmNTM5YWQ5NjZmNTAyYTUzYjczNzkxZWZlMTRhMGU5Y2Iz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNo
YWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1p
bmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC00LDExICs0LDEyIEBACiAgICh5IDAuMDAp
KQogKHNhdmUpCiAoc2V0LXN0YXRlCi0gIChjaGFuZ2UtZmxhZ3MgNTEyKQotICAoc2hhZG93LWJs
dXIgMTIuMDApCi0gIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKLSAgKHNoYWRv
dy1jb2xvciAjMDAwMDAwKQotICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkKKyAgKGNo
YW5nZS1mbGFncyBbZHJvcC1zaGFkb3ddKQorICAoZHJvcC1zaGFkb3cKKyAgICAoc2hhZG93LW9m
ZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCisgICAgKHNoYWRvdy1ibHVyIDEyLjAwKQorICAgIChz
aGFkb3ctY29sb3IgIzAwMDAwMCkKKyAgICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkp
CiAoZmlsbC1jb21wb3NpdGVkLXJlY3QKICAgKHJlY3QgYXQgKDUwLDUwKSBzaXplIDEwMHgxMDAp
CiAgIChjb2xvciAjMDAwMEZGKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3Rz
L2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rp
c3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKaW5kZXgg
Mzg2ZTM5NDExODVmMDlhM2M2OGVjNmMyYWU4OGRmMTFjNzBiMGE2OS4uMWRjYWJiZTdjZTA1YmNi
ZTk0ZTIzMzY0ZWJlMjllYTc2ZmYwZjU5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxh
eWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQu
dHh0CkBAIC02LDExICs2LDEyIEBACiAgIChjdG0ge209KCgwLjg3LDAuNTApKC0wLjUwLDAuODcp
KSB0PSg4MS43MCwtMTguMzApfSkpCiAoc2F2ZSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFn
cyA1MTIpCi0gIChzaGFkb3ctYmx1ciAxMi4wMCkKLSAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAg
aGVpZ2h0PTIwKQotICAoc2hhZG93LWNvbG9yICMwMDAwMDApCi0gIChzaGFkb3dzLXVzZS1sZWdh
Y3ktcmFkaXVzIDApKQorICAoY2hhbmdlLWZsYWdzIFtkcm9wLXNoYWRvd10pCisgIChkcm9wLXNo
YWRvdworICAgIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKKyAgICAoc2hhZG93
LWJsdXIgMTIuMDApCisgICAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQorICAgIChzaGFkb3dzLXVz
ZS1sZWdhY3ktcmFkaXVzIDApKSkKIChmaWxsLWNvbXBvc2l0ZWQtcmVjdAogICAocmVjdCBhdCAo
MCwwKSBzaXplIDEwMHgxMDApCiAgIChjb2xvciAjMDAwMEZGKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKaW5kZXgg
YmMxN2I1MTE0OTlmODI1NmM5OTI5MGRhZTg2MTRkNDg5NGNhZjljYy4uNGRhMDZiM2MzODc2MmVk
NzI1Njg1NGM0ZTNmNGUwNzgzYTY1ZmI2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxh
eWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9k
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CkBAIC04LDkgKzgsMTAg
QEAKICAgKGNvbXBvc2l0ZS1vcGVyYXRpb24gc291cmNlLW92ZXIpCiAgIChibGVuZC1tb2RlIG5v
cm1hbCkgZXh0ZW50IGF0ICgwLDApIHNpemUgMTA0eDEwNCkKIChzZXQtc3RhdGUKLSAgKGNoYW5n
ZS1mbGFncyAzMjk2MCkKLSAgKGZpbGwtY29sb3IgIzAwMDBGRikKLSAgKHN0cm9rZS1zdHlsZSAw
KQorICAoY2hhbmdlLWZsYWdzIFtmaWxsLWJydXNoLCBzdHJva2Utc3R5bGUsIHNob3VsZC1hbnRp
YWxpYXNdKQorICAoZmlsbC1icnVzaAorICAgIChjb2xvciAjMDAwMEZGKSkKKyAgKHN0cm9rZS1z
dHlsZSBOTy1TVFJPS0UpCiAgIChzaG91bGQtYW50aWFsaWFzIDApKQogKGRyYXctcmVjdAogICAo
cmVjdCBhdCAoMCwwKSBzaXplIDEwNHgyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggM2M5ZjIxYjNkZTNjMTg5MWU1ZmFlMTJiZjViNjgwYzA4ZDk1YmRhZC4u
YjdiZjFlZGVkOTNhZjIxZDFmZDRkZWM0OGM3ZjE1NmQ5YzhkYWZhOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xLDIxICsxLDExIEBACiAjIEdvb2Qgc3Rh
cnRpbmcgcG9pbnQgaXMgdG8gbG9vayBhdCB0aGUgYm90cyBvbiByZXN1bHRzLndlYmtpdC5vcmcg
Zmlyc3QKIAogIyBJbmNvcnJlY3Qgc2l6ZQotd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29udGFpbi9jb250YWluLXNpemUtYnJlYWtz
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTA2IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGluZS1i
cmVhay1hbnl3aGVyZS1hbmQtd2hpdGUtc3BhY2UtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdGV4dC93aGl0ZS1zcGFjZS9icmVhay1zcGFjZXMtMDA2Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93aGl0ZS1zcGFjZS9icmVhay1zcGFjZXMtd2l0
aC1vdmVyZmxvdy13cmFwLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAogIyBU
aGVyZSBpcyB0ZXh0IGluL25lYXIgdGhlIGJveAotd2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3No
YWRvdy1kb20vbnRoLW5vZGUtb24tc2hhZG93LWNoaWxkLWludmFsaWRhdGlvbi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGZhc3Qvc2hhZG93LWRvbS9udGgt
bm9kZS1vbi1zaGFkb3ctY2hpbGQtbm8taml0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MDcgZmFzdC9zaGFkb3ctZG9tL250aC1ub2RlLW9uLXNoYWRvdy1jaGls
ZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGZhc3Qvc2hh
ZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdC1zdHlsZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1zY29waW5nL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LXN0eWxlLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgbWF0aG1sL3ByZXNlbnRhdGlv
bi9tcm9vdC1wcmVmLXdpZHRoLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4v
Y29udGFpbi1zaXplLW11bHRpY29sLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b250YWluL2NvbnRhaW4tc2l6ZS1tdWx0aWNvbC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29udGFpbi9jb250YWluLXNpemUtbXVsdGljb2wtMDAzLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvY3NzLWZsZXhib3gtdGVzdDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogCiAjIE1pc3BsYWNlZCB0ZXh0CkBAIC0zNyw2MCArMjcsNyBAQCB3ZWJraXQub3Jn
L2IvMjM2OTEyIGh0dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1k
ZWNvcmF0aW9ucy5odAogCiAjIFdyb25nIHRleHQgY29sb3IKIHdlYmtpdC5vcmcvYi8yMzY5MTMg
ZmFzdC9jc3MvdmFyaWFibGVzL3Rlc3Qtc3VpdGUvMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IFBhc3MgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9mYXN0L211bHRpY29s
L2R5bmFtaWMvaW5zZXJ0LXNwYW5uZXItYWZ0ZXItY29udGVudC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wv
ZHluYW1pYy9pbnNlcnQtc3Bhbm5lci1iZWZvcmUtY29udGVudC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wv
ZHluYW1pYy9pbnNlcnQtc3Bhbm5lci1hZnRlci1zcGFubmVyLWJlZm9yZS1jb250ZW50Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsv
ZmFzdC9tdWx0aWNvbC92ZXJ0aWNhbC1sci9mbG9hdC1jb250ZW50LWJyZWFrLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFzdC9t
dWx0aWNvbC92ZXJ0aWNhbC1ybC9mbG9hdC1jb250ZW50LWJyZWFrLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNv
bC90YWxsLWxpbmUtaW4tc2hvcnQtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y29udGFpbi9jb250YWluLWxheW91dC1zdXBwcmVzcy1iYXNlbGluZS0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY29udGFpbi9jb250YWluLXNpemUtYmxvY2stMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLWJsb2NrLTAwNC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhib3hfcm93c3Bhbi1vdmVyZmxv
dy1hdXRvbWF0aWMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94
X3Jvd3NwYW4tb3ZlcmZsb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMvZmly
c3QtYXZhaWxhYmxlLWZvbnQtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBOb3Qg
YSBncmVlbiBsaW5lIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYSB5ZWxsb3cgc3F1YXJlCi13ZWJraXQu
b3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1l
bnQtc3R5bGVzLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2Rv
Y3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVz
LTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0
eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwNi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmct
ZG9jdW1lbnQtc3R5bGVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwOS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQt
c3R5bGVzLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3Vt
ZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAx
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxl
cy9zdmctZG9jdW1lbnQtc3R5bGVzLTAxMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0
ZXJuYWwtc3R5bGVzLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5
bGVzLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFs
LXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwNi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9z
dmctZXh0ZXJuYWwtc3R5bGVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwOS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJu
YWwtc3R5bGVzLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4
dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVz
LTAxMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHls
ZXMvc3ZnLWlubGluZS1zdHlsZXMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5
bGVzLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1z
dHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUt
c3R5bGVzLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGlu
ZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDkuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxp
bmUtc3R5bGVzLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lu
bGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMTIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1p
bmxpbmUtc3R5bGVzLTAxMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLSMgVGhlcmUgaXMg
cmVkCi13ZWJraXQub3JnL2IvMjM2OTE1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL2dyYWRpZW50VHJhbnNmb3JtL3N2Zy1ncmFkaWVudFRyYW5zZm9y
bS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9ncmFkaWVudFRy
YW5zZm9ybS9zdmctZ3JhZGllbnRUcmFuc2Zvcm0tY29tYmluYXRpb24tMDAxLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZ3JhZGllbnRUcmFuc2Zvcm0vc3ZnLWdyYWRp
ZW50VHJhbnNmb3JtLWNvbWJpbmF0aW9uLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
ICMgVGhlcmUgYXJlIHNtYWxsIHJlY3RhbmdsZXMgb3IgY2hhcmFjdGVycyBiZWxvdyBtYWluIGNo
YXJhY3Rlcgogd2Via2l0Lm9yZy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdmFsdWVzL2NoLXVuaXQtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
QEAgLTEwMSwxNTIgKzM4LDYgQEAgd2Via2l0Lm9yZy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFsdWVzL2ljLXVuaXQtMDEwLmgKIHdlYmtpdC5vcmcv
Yi8yMzY5MTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9p
Yy11bml0LTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTE2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YWx1ZXMvaWMtdW5pdC0w
MTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIFRyYW5zZm9ybSBmYWlsdXJlcwotd2Vi
a2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1z
ZXBhcmF0aW9ucy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0w
MDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlz
dC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9u
L3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zv
cm0tbGlzdC1zZXBhcmF0aW9ucy0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBh
cmF0aW9ucy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDcu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1z
ZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDguaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2
Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0t
bGlzdC1zZXBhcmF0aW9ucy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0
aW9ucy0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDAyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLWxlbmd0aC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwNC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1s
ZW5ndGgtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwNy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1sZW5ndGgtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tbGVuZ3RoLWNtLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxl
bmd0aC1jbS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWNtLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgt
aW4tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1pbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAw
My5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1sZW5ndGgtaW4tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1pbi0wMDUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLWxlbmd0aC1wdC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwNC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1s
ZW5ndGgtcHQtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4t
cmVsYXRpdmUtbGVuZ3RoLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDAzLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmct
b3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAw
NS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxl
bmd0aC0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwOC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxh
dGl2ZS1sZW5ndGgtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTAuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tcmVsYXRpdmUtbGVuZ3RoLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3Ro
LTAxNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1v
cmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDE1Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC0wMTYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxNy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtMDE4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTkuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDIx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdp
bi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVu
Z3RoLTAyMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI0Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC0wMjUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdp
bi1yZWxhdGl2ZS1sZW5ndGgtMDI3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjguaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
MDMwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLTAzMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDMzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC0wMzQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzNS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzcu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtMDM5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wNDAuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLTA0MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQyLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LXJlbGF0aXZlLWxlbmd0aC0wNDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0NC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQ1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0w
NDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52
YWxpZC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtaW52YWxpZC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA3Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2
ZS1sZW5ndGgtaW52YWxpZC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQt
MDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAxMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCi0j
IE11bHRpY29sIGZhaWx1cmVzCi13ZWJraXQub3JnL2IvMjM2OTE5IGlldGVzdGNlbnRlci9jc3Mz
L211bHRpY29sdW1uL2NvbHVtbi1jb250YWluaW5nLWJsb2NrLTAwMy5odG0gWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWJsb2NrLW5vLWNsaXAtMDAxLnhodCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtYmxvY2stbm8tY2xpcC0wMDIu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jbGlwLTAwMS54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNsaXAtMDAyLnho
dCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY29sdW1ucy1pbnZh
bGlkLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNv
bHVtbnMtaW52YWxpZC0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1jb2x1bW5zLXRvb2xvbmctMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtY29udGFpbmluZy0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb250YWluaW5nLTAwMi54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvdW50LW5lZ2F0aXZlLTAwMS54aHQgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvdW50LW5lZ2F0aXZlLTAwMi54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvdW50LW5vbi1p
bnRlZ2VyLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29s
LWNvdW50LW5vbi1pbnRlZ2VyLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLWNvdW50LW5vbi1pbnRlZ2VyLTAwMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW11bHRpY29sL211bHRpY29sLWZpbGwtYXV0by0wMDIueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWZpbGwtYXV0by0wMDMueGh0IFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1maWxsLWF1dG8tYmxvY2stY2hp
bGRyZW4tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
ZmlsbC1iYWxhbmNlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211
bHRpY29sLWdhcC0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0
aWNvbC1nYXAtMDAzLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtZ2FwLWxhcmdlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211
bHRpY29sLWdhcC1sYXJnZS0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNv
bC9tdWx0aWNvbC1nYXAtbmVnYXRpdmUtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtaGVpZ2h0LTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLWhlaWdodC1ibG9jay1jaGlsZC0wMDEueGh0IFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1tYXJnaW4tMDAxLnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLTAwMi54aHQgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW1hcmdpbi0wMDMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLWNoaWxkLTAwMS54aHQg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW5lc3RlZC1jb2x1bW4t
cnVsZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1v
dmVyZmxvd2luZy0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0
aWNvbC1ydWxlLTAwMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRp
Y29sLXJ1bGUtY29sb3ItMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wv
bXVsdGljb2wtcnVsZS1mcmFjdGlvbi0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
dWx0aWNvbC9tdWx0aWNvbC1ydWxlLWZyYWN0aW9uLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtbGFyZ2UtMDAxLnhodCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1wZXJjZW50LTAwMS54aHQgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtc2FtZWxlbmd0aC0wMDEu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLXNob3J0
aGFuZC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1z
cGFuLWFsbC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNv
bC1zcGFuLWFsbC0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0
aWNvbC1zcGFuLWFsbC0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1zcGFuLWFsbC1tYXJnaW4tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtbWFyZ2luLWJvdHRvbS0wMDEueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWZsb2F0LTAwMS54aHQgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXRhYmxlLWNlbGwtdmVydGlj
YWwtYWxpZ24tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtd2lkdGgtc21hbGwtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcG9zaXRpb24v
bXVsdGljb2wvdmxyLWx0ci1sdHItaW4tbXVsdGljb2xzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXBvc2l0aW9uL211bHRpY29sL3ZybC1sdHItbHRyLWluLW11bHRpY29scy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KICMgQ1NTIFNoYXBlcyBmYWlsdXJlcwogd2Via2l0Lm9yZy9i
LzIzNjkyMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2hhcGVzL3No
YXBlLW91dHNpZGUvc2hhcGUtaW1hZ2Uvc2hhcGUtaW1hZ2UtMDAyLmh0bWwKIHdlYmtpdC5vcmcv
Yi8yMzY5MjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNoYXBlcy9z
aGFwZS1vdXRzaWRlL3NoYXBlLWltYWdlL3NoYXBlLWltYWdlLTAwMy5odG1sCkBAIC0yODIsMjUg
KzczLDkgQEAgd2Via2l0Lm9yZy9iLzIzNjkyMiBzeXN0ZW0tcHJldmlldy9iYWRnZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAjIE5vL2JhZCBjb2xvcmVkIGJveGVzCiB3ZWJraXQub3JnL2Iv
MjM2OTIzIGZhc3QvY3NzL3BhaW50LW9yZGVyLXNoYWRvdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL2JsaW5rL3N2Zy90ZXh0L29iYi1wYWlu
dHNlcnZlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTIzIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0aG1sL3JlbGF0aW9ucy9jc3Mtc3R5bGlu
Zy9jb2xvci0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjky
MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcG9zaXRpb24vc3RpY2t5
L3Bvc2l0aW9uLXN0aWNreS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIzNjkyMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcG9z
aXRpb24vc3RpY2t5L3Bvc2l0aW9uLXN0aWNreS13cml0aW5nLW1vZGVzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXZhcmlhYmxlcy92YXJzLWZvbnQtc2hvcnRoYW5kLTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgTm8vYmFkIGdyYWRpZW50L3BhdHRlcm4KLXdlYmtpdC5v
cmcvYi8yMzY5MjQgaW1wb3J0ZWQvbW96aWxsYS9zdmcvbGluZWFyR3JhZGllbnQtYmFzaWMtMDMu
c3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IGltcG9ydGVkL21v
emlsbGEvc3ZnL3BhdHRlcm4tdHJhbnNmb3JtZWQtMDEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvZ3JhZGllbnQtZmxpcHBlZC1zdGFy
dC1lbmQtcG9pbnRzLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjky
NCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2RBbHBoYS5zdmcgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJl
YWRNZXRob2REaWFnb25hbC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2REaWFnb25hbDIuc3ZnIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9k
RGlhZ29uYWwzLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBz
dmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZERpYWdvbmFsNC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2REdXBsaWNh
dGVTdG9wLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcv
Z3JhZGllbnRzL3NwcmVhZE1ldGhvZFJldmVyc2VkLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3N0b3BBbHBoYS5zdmcgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3Jt
ZWQtdGV4dC1maWxsLWdyYWRpZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMzY5MjQgc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLXBhdHRlcm4u
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIE1lZGlhIGZhaWx1cmVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455211</attachid>
            <date>2022-03-20 19:28:23 -0700</date>
            <delta_ts>2022-03-21 11:10:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220320192822.patch</filename>
            <type>text/plain</type>
            <size>221999</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uNmQ1MWQyZDA0MzkzNzhmYzc3NzNiMGFkOTIxY2Vk
N2VhNmFmZGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4OSBAQAorMjAyMi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQSBtZW1iZXIgb2YgdHlwZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3Mg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB0byBrZWVwIHRy
YWNrIG9mIHdoYXQgaGFzIGNoYW5nZXMgc2luY2UgaXQgd2FzIGxhc3QKKyAgICAgICAgYXBwbGll
ZC4gU28gd2UgY2FuIGVsaW1pbmF0ZSB0aGUgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlLgorCisgICAgICAgIFdlIHdpbGwgaGF2ZSB0byBoYXZlIGEgc2luZ2xlIG1lbWJlciBmb3Ig
ZXZlcnkgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZS4gCisKKyAgICAgICAgMS4gU28gd2Ug
d2lsbCBjb21iaW5lIHRoZSBjb2xvciwgdGhlIHBhdHRlcm4sIHRoZSBncmFkaWVudCBhbmQgdGhl
IGdyYWRpZW50CisgICAgICAgICAgIHNwYWNlIHRyYW5zZm9ybSBpbiBvbmUgY2xhc3MgY2FsbGVk
ICdTb3VyY2VCcnVzaCcuCisKKyAgICAgICAgMi4gV2Ugd2lsbCBjb21iaW5lIHRoZSBzaGFkb3cg
b2Zmc2V0LCB0aGUgc2hhZG93IGJsdXJSYWRpdXMsIHRoZSBzaGFkb3cKKyAgICAgICAgICAgY29s
b3IgYW5kIHRoZSByYWRpdXMgbW9kZSBpbiBvbmUgc3RydWN0IGNhbGxlZCAnRHJvcFNoYWRvdycK
KworICAgICAgICAzLiBBbmQgd2Ugd2lsbCBjb21iaW5lIHRoZSBDb21wb3NpdGVPcGVyYXRvciBh
bmQgdGhlIEJsZWRNb2RlIGluIG9uZSBzdHJ1Y3QgCisgICAgICAgICAgY2FsbGVkICdDb21wb3Np
dGVNb2RlJy4KKworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSB3aWxsIGhhbmRsZSBzZXR0
aW5nIGl0cyBtZW1iZXJzLCBpdHMgZW5jb2RpbmcgYW5kCisgICAgICAgIGRlY29kaW5nIGFuZCBp
dHMgc3RyZWFtaW5nIHRvIHRleHQuCisKKyAgICAgICAgQWRkaW5nIGEgdHJhbnNwYXJlbmN5IGxh
eWVyIGluIENHIHNldHMgdGhlIGdsb2JhbCBhbHBoYSB0byAxLiBXZSBuZWVkIHRvCisgICAgICAg
IHN5bmMgdGhlIG1lbWJlciBHcmFwaGljc0NvbnRleHRTdGF0ZS5hbHBoYSB3aXRoIHRoZSBwbGF0
Zm9ybSBhbHBoYSB3aGVuCisgICAgICAgIHdlIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKSBhbmQg
d2hlbiB3ZSBlbmRUcmFuc3BhcmVuY3lMYXllcigpLgorCisgICAgICAgIERpc3BsYXlMaXN0OjpS
ZWNvcmRlciB3aWxsIGtlZXAgaXRzIHN0YWNrIG9mIEdyYXBoaWNzQ29udGV4dFN0YXRlLiBUaGUK
KyAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzdGF0ZSBvZiBHcmFwaGljc0NvbnRleHQg
YW5kIHRoZSBzdGF0ZSBvZiB0aGUgCisgICAgICAgIFJlY29yZGVyIGlzIHdlIGVhZ2VybHkgYXBw
bHkgdGhlIGZvcm1lciB0byB0aGUgcGxhdGZvcm0gY29udGV4dCBidXQgd2UKKyAgICAgICAgbGF6
aWx5IHJlY29yZCB0aGUgY2hhbmdlcyBvZiB0aGUgbGF0ZXIuIFJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZSgpCisgICAgICAgIG92ZXJyaWRlcyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8ganVzdCBt
ZXJnZSB0aGUgY2hhbmdlcyBmcm9tIHRoZSBiYXNlCisgICAgICAgIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDo6bV9zdGF0ZSB0byBSZWNvcmRlcjo6Y3VycmVudFN0YXRlKCkuc3RhdGUuCisgICAgICAg
IFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oKSByZWNvcmRzIHRoZSBhY2N1bXVsYXRl
ZCBjaGFuZ2VzIGluIHRoZQorICAgICAgICBjdXJyZW50U3RhdGUoKSBzaW5jZSB0aGUgbGFzdCBk
cmF3aW5nLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5j
eUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmVu
ZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3cgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
UGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dEZpbGxQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0U3Ryb2tlR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpmaWxsUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VHcmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQnJ1c2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Ojpkcm9wU2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2hhZG93T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2hhZG93Qmx1ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNo
YWRvd0NvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
RHJvcFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzVmlzaWJsZVNoYWRvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc0JsdXJyZWRTaGFkb3cgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNTaGFkb3cgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wb3NpdGVNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmxlbmRNb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFscGhhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNo
b3VsZEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNo
b3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERyYXdMdW1pbmFuY2VNYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VXNlRGFya0FwcGVhcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpibGVuZE1vZGVPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
aGFzT25seVByaW1pdGl2ZUNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c3RhdGVDaGFuZ2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PDwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5n
ZXNGcm9tU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjaGFu
Z2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRB
cHBseUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dEZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
ZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlQnJ1c2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
ZXRTdHJva2VHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2V0U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0Q29tcG9zaXRlTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2V0RHJvcFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2V0QWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTaG91bGRTbW9vdGhGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2V0RHJhd0x1bWluYW5jZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFVzZURhcmtBcHBlYXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZU1vZGU6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZU1vZGU6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEcm9wU2hhZG93Ojppc1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJv
cFNoYWRvdzo6aXNCbHVycmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6
Omhhc091dHNldHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpEcm9wU2hhZG93OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJvcFNoYWRvdzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxs
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnJ1c2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJydXNoOjpTb3VyY2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6Z3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVz
aDo6Z3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnBhdHRl
cm4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNldEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpzZXRQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJy
dXNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmNvbG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpzZXRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCcnVzaDo6YnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnJ1c2g6OnNldEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpp
c1ByaW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50OjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3Jh
ZGllbnQ6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWly
bzo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3Ry
b2tlU291cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlNoYWRv
d1N0YXRlOjpTaGFkb3dTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpmaWxsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dENhaXJvOjpkcmF3RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDYWlybzo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dENhaXJvOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjpHcmFwaGljc0NvbnRleHRDRyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDRzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjphcHBseVN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q0c6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJh
d2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSb3VuZGVkUmVjdEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENHU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDRzo6c3Ryb2tlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
Rzo6ZmlsbEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0
cm9rZUVsbGlwc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBo
c1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29y
ZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBo
c1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OmNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbEJydXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQnJ1c2gpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVDVE0pOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQ29sb3IpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93SXNDbGVhcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNoYW5nZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkNvbnRleHRTdGF0ZTo6Q29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpjbG9uZUZvclRyYW5zcGFyZW5jeUxheWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29udGV4
dFN0YXRlOjpjbG9uZUZvclNhdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdGF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFw
cGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6
OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KToKKyAgICAgICAgKE5pY29zaWE6
OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKE5pY29zaWE6
OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKToKKyAgICAgICAgKE5pY29zaWE6OkNh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dXNlU3Ryb2tlU3R5bGVUb0ZpbGwpOgorCiAyMDIyLTAzLTE3ICBNYXR0IFdvb2Ry
b3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgU3ViZ3JpZCBpdGVtcyBzaG91
bGQgYWx3YXlzIGJlIHN0cmV0Y2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZTZjYmM5Yzg5N2I5Y2VhYWQw
NmJlN2Y4Y2VlMDg2MGUzMjkxZS4uZDQ5ZmZmMWRhYTZkMDMzMzgwYzU2ZmZlOTUwZDI1ZjFhYmY4
NWYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0yMCAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBw
bGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Ojpy
ZWNvcmRTZXRTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMTcgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDYWxsIGRvRGFpbHlBY3Rp
dml0eUluTWFuYWdlciBvbiBtYWluIHRocmVhZCBpbiBhZGF0dHJpYnV0aW9uZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggMmRlZDA5N2NhYTZhMzE0ZDg1ZGU1MzEwOGE4NTBkYTUxOGM0ODlmYy4uZWJj
YjUzMTdjZDdmMzliYmFhZTQyMzBhOGVmNWRiMTZmMzA0YWE1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xNTcxLDYgKzE1NzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nob3VsZExvY2Fs
aXplQXhpc05hbWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
U291cmNlSW1hZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMzOWZm
OGYyMjRlZjZhODZjZmI5Li5lYjc2YTE4NmQzNDhkNGIzNjg5ZjIzNGYzZGJmNjI4MmFhYWRlMDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4NSw2ICsyMDg1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1h
Z2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDQwZjg5
Y2YxZjM0MmQ4ZTQ1YTY2Yzg4ZjM2NWI2NThlOGQwZDgzMi4uNWM5YTU1ZDE4ZDY3MDk0ZWIyZWZk
YzJjZWRkNTNmYzNlYjUzZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzJENzM2NDQy
Nzg0NjFBMDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0
ZXJSZXN1bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWlu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2NjdE
RjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3OUI4Rjc1
MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyRkQz
MEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNv
dXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYx
MDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5
M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyog
TWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01l
c3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzU3OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07CkBA
IC0xMTQyOCw2ICsxMTQyOSw4IEBACiAJCTcyRkIyMzg3MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MkZCMjM4ODIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3RBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyRkIyMzk2MjI0QjA3QjkwMDdFNUFDNyAvKiBTVkdQYXRoU2VnSW1wbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnJ1c2guY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyog
U291cmNlQnJ1c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnJ1
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1M0NGRTYxMDhGNDczRjAwRUEy
ODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaW1lbGluZVJlY29yZEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZVJlY29yZEZh
Y3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIz
MDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjkxNTIsNiArMjkxNTUsOCBAQAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBT
aGFkb3dCbHVyLmNwcCAqLywKIAkJCQkwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93
Qmx1ci5oICovLAogCQkJCTFDNERCMDI0MjczMzlFNUUwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6
ZUF4aXNOYW1lcy5oICovLAorCQkJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3VyY2VC
cnVzaC5jcHAgKi8sCisJCQkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmggKi8sCiAJCQkJMUREMTI3QUMyNTZFM0E4NzAwQjIyN0Q3IC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwICovLAogCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQ
cml2YXRlLmggKi8sCiAJCQkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQuaCAqLywKQEAgLTM3Mzc3LDYgKzM3MzgyLDcgQEAKIAkJCQk1MTBENEEz
ODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxl
SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNv
dXJjZUFscGhhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMg
LyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTYyMTdBOUQwMUIwMDI3
NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTY1MTdBOUQw
MUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYx
MzUwOTI0QzlGQ0EzMDA0MzJFMUUgLyogU291cmNlQnVmZmVyUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggOWZkMjVkODBhZDEyZGM5MWRkMTFm
OTE1OThmYzZjOGVmYTRjYjJhMi4uYWNkMDg2ZjIyYTJjMjE3ODlmYmI1OTk4MzFhOWNhM2UwYzI3
OTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTExNiwxNCArMTE2LDE4IEBA
IHZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBw
YXRoKQogCiB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9wcmltYXJ5Q29udGV4dC5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKG9wYWNpdHkpOwogICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKG9wYWNpdHkpOworICAgIG1fc3RhdGUuZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXll
cigpOwogfQogCiB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5j
eUxheWVyKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CiAgICAgbV9wcmltYXJ5Q29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc2Vj
b25kYXJ5Q29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIG1fc3RhdGUuZGlkRW5k
VHJhbnNwYXJlbmN5TGF5ZXIobV9wcmltYXJ5Q29udGV4dC5hbHBoYSgpKTsKIH0KIAogdm9pZCBC
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGZh
Y3RvcikKQEAgLTQzMCwxMyArNDM0LDE0IEBAIGJvb2wgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dDo6c3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmltYXJ5Q29u
dGV4dC5zdXBwb3J0c0ludGVybmFsTGlua3MoKTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0OjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBC
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUpCiB7CiAgICAgLy8gVGhpcyBjYWxscyB1cGRhdGVTdGF0ZSgpIGluc3RlYWQg
b2YgZGlkVXBkYXRlU3RhdGUoKSBzbyB0aGF0IGNoYW5nZXMKICAgICAvLyBhcmUgYWxzbyBhcHBs
aWVkIHRvIGVhY2ggY29udGV4dCdzIEdyYXBoaWNzQ29udGV4dFN0YXRlLCBzbyB0aGF0IGNvZGUK
ICAgICAvLyBpbnRlcm5hbCB0byB0aGUgY2hpbGQgY29udGV4dHMgdGhhdCByZWFkcyBmcm9tIHRo
ZSBzdGF0ZSBnZXRzIHRoZSByaWdodCB2YWx1ZXMuCi0gICAgbV9wcmltYXJ5Q29udGV4dC51cGRh
dGVTdGF0ZShzdGF0ZSwgZmxhZ3MpOwotICAgIG1fc2Vjb25kYXJ5Q29udGV4dC51cGRhdGVTdGF0
ZShzdGF0ZSwgZmxhZ3MpOworICAgIG1fcHJpbWFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUp
OworICAgIG1fc2Vjb25kYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgc3RhdGUu
ZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKICNpZiBPUyhXSU5ET1dTKSAmJiAhVVNFKENBSVJPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGY1OGIzNGM5MTQzNDJiNzM3NzcyN2MxMWE3M2I2
ZDgyMThlMTU1NmYuLmEzZjBkMTk4NmZmMWUzNThkNzYxNGM4MGM0MmUzNjdkZDM3ZjAyMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBk
aWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAKICNpZiBPUyhXSU5ET1dTKSAmJiAhVVNF
KENBSVJPKQogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogZGVwcmVjYXRlZFBy
aXZhdGVDb250ZXh0KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDI1YTNkM2ZlODc3MzMx
ZGRhMzk1NzgwMTFiNmQ4OTBmMjEyYzcyZTYuLmVhNjkzNWJkMDY4MjJmMTEzZGJiYjA2MTQxZTMw
ZGY4YTIyNTRlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC04NCwxNSArODQsMTUgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByZXBhcmVJbnRlcm5hbENvbnRleHQoY29uc3QgRm9udCYsIEZvbnRTbW9vdGhpbmdN
b2RlKTsKICAgICB2b2lkIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7CiAKLSAgICB2b2lkIHVw
ZGF0ZUZpbGxDb2xvcihjb25zdCBDb2xvciYsIEdyYWRpZW50KiA9IG51bGxwdHIsIFBhdHRlcm4q
ID0gbnVsbHB0cik7Ci0gICAgdm9pZCB1cGRhdGVTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIEdy
YWRpZW50KiA9IG51bGxwdHIsIFBhdHRlcm4qID0gbnVsbHB0cik7CisgICAgdm9pZCB1cGRhdGVG
aWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmKTsKKyAgICB2b2lkIHVwZGF0ZVN0cm9rZUJydXNo
KGNvbnN0IFNvdXJjZUJydXNoJik7CiAgICAgdm9pZCB1cGRhdGVDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAgICAgZW51bSBjbGFzcyBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7CiAgICAg
ICAgIFVuc3BlY2lmaWVkLAogICAgICAgICBZZXMsCiAgICAgICAgIE5vCiAgICAgfTsKLSAgICB2
b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hh
ZG93Qmx1ciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7CisgICAgdm9pZCB1cGRhdGVTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYsIFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCiAg
ICAgdm9pZCB1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZik7CkBAIC0xMTEsMjcgKzExMSwxMyBAQCBw
cml2YXRlOgogICAgIEFmZmluZVRyYW5zZm9ybSBtX29yaWdpbmFsVGV4dE1hdHJpeDsKIAogICAg
IHN0cnVjdCBTdGF0ZSB7Ci0gICAgICAgIHN0cnVjdCBTdHlsZSB7Ci0gICAgICAgICAgICBDb2xv
ciBjb2xvcjsKLSAgICAgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7Ci0gICAgICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICAgICAgICAg
IFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuOwotICAgICAgICB9OwotICAgICAgICBTdHlsZSBmaWxs
U3R5bGU7Ci0gICAgICAgIFN0eWxlIHN0cm9rZVN0eWxlOwotCisgICAgICAgIFNvdXJjZUJydXNo
IGZpbGxCcnVzaDsKKyAgICAgICAgU291cmNlQnJ1c2ggc3Ryb2tlQnJ1c2g7CiAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBjdG07Ci0KLSAgICAgICAgc3RydWN0IFNoYWRvd1N0YXRlIHsKLSAgICAg
ICAgICAgIEZsb2F0U2l6ZSBvZmZzZXQ7Ci0gICAgICAgICAgICBmbG9hdCBibHVyIHsgMCB9Owot
ICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBib29sIGlnbm9yZVRyYW5zZm9y
bXMgeyBmYWxzZSB9OwotICAgICAgICB9OwotICAgICAgICBTaGFkb3dTdGF0ZSBzaGFkb3c7Cisg
ICAgICAgIERyb3BTaGFkb3cgZHJvcFNoYWRvdzsKKyAgICAgICAgYm9vbCBpZ25vcmVUcmFuc2Zv
cm1zIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFN0YXRlIG1fb3JpZ2luYWxTdGF0ZTsKLSAgICBT
dGF0ZSBtX2N1cnJlbnRTdGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CmluZGV4IDNjMzc0ZmQ5YmE4MjdjOTRiN2YzNGI3NDQ2YTVmN2FiYzhhM2U4NjMuLjllNGQwNjZi
MDM5YjZkNWZlNGM1MmNkNWFhNDk3ZDQyOTlhNmZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDMsNiArNDMs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmIGNoYW5nZUZs
YWdzKQorICAgIDogbV9zdGF0ZShjaGFuZ2VGbGFncykKK3sKK30KKwogR3JhcGhpY3NDb250ZXh0
Ojp+R3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBBU1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwpA
QCAtNzAsMTAgKzc1LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkKICAgICAg
ICAgbV9zdGFjay5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVT
dGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8R3Jh
cGhpY3NDb250ZXh0U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlKQogewotICAgIG1fc3RhdGUubWVy
Z2VDaGFuZ2VzKHN0YXRlLCBmbGFncyk7Ci0gICAgZGlkVXBkYXRlU3RhdGUoc3RhdGUsIGZsYWdz
KTsKKyAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhzdGF0ZSwgbGFzdERyYXdpbmdTdGF0ZSk7Cisg
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UmFpc2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxp
cHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcikKQEAgLTkzLDg0ICs5OCwxNSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgZWxsaQogICAgIHJlc3RvcmUoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBtX3N0
YXRlLnN0cm9rZUNvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51
bGxwdHI7Ci0gICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIFNoYWRvd1JhZGl1c01vZGUg
cmFkaXVzTW9kZSkKLXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IG9mZnNldDsKLSAgICBt
X3N0YXRlLnNoYWRvd0JsdXIgPSBibHVyOwotICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBjb2xv
cjsKLSAgICBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSByYWRpdXNNb2RlOwotICAgIGRpZFVw
ZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQotewotICAgIG1fc3RhdGUu
c2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gMDsK
LSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gQ29sb3IoKTsKLSAgICBtX3N0YXRlLnNoYWRvd1Jh
ZGl1c01vZGUgPSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0OwotICAgIGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotfQotCiBib29s
IEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1
ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewotICAgIG9mZnNldCA9IG1fc3RhdGUuc2hhZG93T2Zm
c2V0OwotICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7Ci0gICAgY29sb3IgPSBtX3N0YXRl
LnNoYWRvd0NvbG9yOworICAgIG9mZnNldCA9IGRyb3BTaGFkb3coKS5vZmZzZXQ7CisgICAgYmx1
ciA9IGRyb3BTaGFkb3coKS5ibHVyUmFkaXVzOworICAgIGNvbG9yID0gZHJvcFNoYWRvdygpLmNv
bG9yOwogCiAgICAgcmV0dXJuIGhhc1NoYWRvdygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBtX3N0YXRlLmZpbGxD
b2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBt
X3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKLXsK
LSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGll
bnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUocGF0dGVy
bik7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKLXsKLSAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IHsgfTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5m
aWxsUGF0dGVybiA9IFdURk1vdmUocGF0dGVybik7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVu
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKQot
ewotICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSA9IHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5z
dHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBt
X3N0YXRlLmZpbGxDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1v
dmUoZ3JhZGllbnQpOwotICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBm
aWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlKTsKLSAgICAvLyBGSVhNRTogYWxzbyBmaWxsIHBhdHRlcm4/Ci19
Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0KQog
ewogICAgICsrbV90cmFuc3BhcmVuY3lMYXllckNvdW50OwpAQCAtNDkxLDEzICs0MjcsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIHNldEZpbGxDb2xvcihvbGRGaWxsQ29sb3IpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKLXsKLSAg
ICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwotICAgIG1f
c3RhdGUuYmxlbmRNb2RlID0gYmxlbmRNb2RlOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotfQotCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKEZsb2F0UG9p
bnQmIHAxLCBGbG9hdFBvaW50JiBwMiwgZmxvYXQgc3Ryb2tlV2lkdGgsIFN0cm9rZVN0eWxlIHBl
blN0eWxlKQogewogICAgIC8vIEZvciBvZGQgd2lkdGhzLCB3ZSBhZGQgaW4gMC41IHRvIHRoZSBh
cHByb3ByaWF0ZSB4L3kgc28gdGhhdCB0aGUgZmxvYXQgYXJpdGhtZXRpYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAzOWYz
MDFkZTYwZmM1Mzk0YzJjYTE0NGVlNzUxMDhiM2ZjNmQzZmVmLi41MTA3NzE2NjNlNTE5YTExMDI2
NTBhOWY1NmIzNmJlODU0MDNkOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNjQsOSArNjQsOCBAQCBzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6ICAgCi0KLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQo
KSA9IGRlZmF1bHQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdmlydHVhbCBi
b29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04MCw4
MyArNzksOTEgQEAgcHVibGljOgogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQogCi0gICAgdm9pZCBz
ZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKSB7IG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzID0gdGhpY2tuZXNzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKTsgfQotICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CisgICAgY29uc3Qg
Q29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmNvbG9y
KCk7IH0KKyAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5maWxsQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVz
aC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBmaWxsUGF0dGVybigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKTsgfQorICAgIHZvaWQg
c2V0RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRlLnNldEZpbGxC
cnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRGaWxs
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fc3RhdGUuc2V0RmlsbENvbG9yKGNvbG9yKTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zv
cm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNw
YWNlVHJhbnNmb3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldEZp
bGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRGaWxsUGF0dGVy
bihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zdHJva2VTdHls
ZSA9IHN0eWxlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlU3R5bGVDaGFuZ2UpOyB9Ci0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVs
ZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ry
b2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9CisgICAgY29uc3QgQ29sb3ImIHN0
cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOyB9
CisgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5z
dHJva2VCcnVzaC5ncmFkaWVudCgpOyB9CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdHJv
a2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VC
cnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBzdHJva2VQYXR0
ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5wYXR0ZXJuKCk7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRl
LnNldFN0cm9rZUJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0YXRlLnNldFN0cm9r
ZUNvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldFN0
cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldFN0cm9rZUdyYWRpZW50KFdU
Rk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsg
bV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmKTsKLSAgICBQYXR0ZXJuKiBzdHJva2VQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAgICB2
b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zZXRTdHJv
a2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mID0geyB9KTsKLSAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGll
bnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpOyB9CisgICAg
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0
eWxlOyB9CisgICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0
YXRlLnNldFN0cm9rZVN0eWxlKHN0eWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5maWxsUnVs
ZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9Ci0gICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9CisgICAgY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRv
dygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJvcFNoYWRvdzsgfQorICAgIEZsb2F0U2l6ZSBz
aGFkb3dPZmZzZXQoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkub2Zmc2V0OyB9CisgICAg
ZmxvYXQgc2hhZG93Qmx1cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5ibHVyUmFkaXVz
OyB9CisgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gZHJvcFNo
YWRvdygpLmNvbG9yOyB9CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cm
IGRyb3BTaGFkb3cpIHsgbV9zdGF0ZS5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7IHNldERyb3BTaGFk
b3coeyB9KTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3Qg
Q29sb3ImKTsKLSAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5maWxsQ29sb3I7IH0KKyAgICAvLyBGSVhNRTogVXNlIGRyb3BTaGFkb3coKSBhbmQgc2V0
RHJvcFNoYWRvdygpIGluc3RlYWQgb2YgY2FsbGluZyB0aGVzZSBmdW5jdGlvbnMuCisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxvYXQmLCBDb2xvciYpIGNv
bnN0OworICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBi
bHVyUmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIFNoYWRvd1JhZGl1c01vZGUgc2hhZG93UmFk
aXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpIHsgc2V0RHJvcFNoYWRvdyh7IG9m
ZnNldCwgYmx1clJhZGl1cywgY29sb3IsIHNoYWRvd1JhZGl1c01vZGUgfSk7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwotICAgIFBh
dHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5n
ZXQoKTsgfQorICAgIGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGRyb3BT
aGFkb3coKS5pc1Zpc2libGUoKTsgfQorICAgIGJvb2wgaGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0
IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5pc0JsdXJyZWQoKTsgfQorICAgIGJvb2wgaGFzU2hhZG93
KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmhhc091dHNldHMoKTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mID0geyB9KTsKLSAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCk7IH0KKyAgICBDb21wb3NpdGVN
b2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7
IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBjb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lk
IHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUu
c2V0Q29tcG9zaXRlTW9kZShjb21wb3NpdGVNb2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7
IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21w
b3NpdGVNb2RlKHsgb3BlcmF0aW9uLCBibGVuZE1vZGUgfSk7IH0KIAotICAgIHZvaWQgc2V0U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtc0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIGZs
b2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hbHBoYTsgfQorICAgIHZvaWQgc2V0
QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5zZXRBbHBoYShhbHBoYSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisKKyAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZTsgfQorICAgIHZvaWQg
c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSkg
eyBtX3N0YXRlLnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQorICAgIAorICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHk7IH0KKyAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBtX3N0YXRlLnNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7IGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhi
b29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9IHNob3VsZEFu
dGlhbGlhczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZEFudGlhbGlhcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzOyB9CisgICAgdm9pZCBzZXRTaG91bGRB
bnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgbV9zdGF0ZS5zZXRTaG91bGRBbnRpYWxp
YXMoc2hvdWxkQW50aWFsaWFzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBtX3N0YXRl
LnNob3VsZFNtb290aEZvbnRzID0gc2hvdWxkU21vb3RoRm9udHM7IGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7IH0K
ICAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250czsgfQorICAgIHZvaWQgc2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91
bGRTbW9vdGhGb250cykgeyBtX3N0YXRlLnNldFNob3VsZFNtb290aEZvbnRzKHNob3VsZFNtb290
aEZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogICAgIC8vIE5vcm1hbGx5IENH
IGVuYWJsZXMgc3VicGl4ZWwtcXVhbnRpemF0aW9uIGJlY2F1c2UgaXQgaW1wcm92ZXMgdGhlIHBl
cmZvcm1hbmNlIG9mIGFsaWduaW5nIGdseXBocy4KICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIGhh
dmUgdG8gZGlzYWJsZSB0byB0byBlbnN1cmUgYSBoaWdoLXF1YWxpdHkgb3V0cHV0IG9mIHRoZSBn
bHlwaHMuCi0gICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFu
Z2UpOyB9CiAgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsgfQorICAgIHZvaWQgc2V0
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICB2b2lk
IHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0
eSkgeyBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBxdWFsaXR5OyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eUNoYW5nZSk7IH0KLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OyB9Ci0KLSAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuYWxw
aGEgPSBhbHBoYTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkFscGhhQ2hhbmdlKTsgfQotICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5hbHBoYTsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOyB9Ci0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZU9wZXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYmxlbmRNb2RlOyB9CisgICAgYm9vbCBzaGFk
b3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7IH0KKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wg
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgbV9zdGF0ZS5zZXRTaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CiAKLSAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2sp
IHsgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFuY2VNYXNrOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tD
aGFuZ2UpOyB9CiAgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7IH0KLQotICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2Rl
KFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpIHsgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBt
b2RlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERy
YXdpbmdNb2RlQ2hhbmdlKTsgfQotICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlOyB9Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVy
LCBjb25zdCBDb2xvciYsIFNoYWRvd1JhZGl1c01vZGUgPSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZh
dWx0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2xlYXJTaGFkb3coKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9y
JikgY29uc3Q7Ci0KLSAgICBib29sIGhhc1Zpc2libGVTaGFkb3coKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnNoYWRvd0NvbG9yLmlzVmlzaWJsZSgpOyB9Ci0gICAgYm9vbCBoYXNTaGFkb3coKSBj
b25zdCB7IHJldHVybiBoYXNWaXNpYmxlU2hhZG93KCkgJiYgKG1fc3RhdGUuc2hhZG93Qmx1ciB8
fCBtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0Lmhl
aWdodCgpKTsgfQotICAgIGJvb2wgaGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c1Zpc2libGVTaGFkb3coKSAmJiBtX3N0YXRlLnNoYWRvd0JsdXI7IH0KKyAgICB2b2lkIHNldERy
YXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsgbV9zdGF0ZS5zZXREcmF3
THVtaW5hbmNlTWFzayhkcmF3THVtaW5hbmNlTWFzayk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CiAKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIHZvaWQgc2V0VXNlRGFy
a0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBtX3N0YXRlLnVzZURhcmtBcHBl
YXJhbmNlID0gdXNlRGFya0FwcGVhcmFuY2U7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSk7IH0KICAgICBib29sIHVz
ZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5j
ZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5j
ZSkgeyBtX3N0YXRlLnNldFVzZURhcmtBcHBlYXJhbmNlKHVzZURhcmtBcHBlYXJhbmNlKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0KLSAg
ICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0
YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQg
KmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNl
ZCB0byBwcm9wYWdhdGUgY2hhbmdlcwogICAgIC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mg
c3RhdGUuCi0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9
IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXgg
NTJjYWRkNjQ5MTkzNTQwODY2NGMyNzZmY2UzZDU5OWU2MTRmOWFmMy4uYTcxNTk5MGY0ZmFmZTJm
MzE1OTU4NzZmMDNkMGVjMTZhMmRmYzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAx
ICsyNiwxNTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRTdGF0ZS5oIgogCi0jaW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5H
RURfUFJPUEVSVFkoZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0g
c3RhdGUucHJvcGVydHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmxhZyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZSgpCi0gICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZv
bnRzKHRydWUpCi0gICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAs
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2so
ZmFsc2UpCitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3Qg
Q2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzKQorICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3Mp
CiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9
IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0
OwotR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0o
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRT
dGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0
ZSYmKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdl
cyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6aGFz
T25seVByaW1pdGl2ZUNoYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykp
IHsKLSAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ry
b2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVy
biA9IHN0YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVy
bkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAg
ICAgIGZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0g
c3RhdGUuZmlsbEdyYWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0
ZXJuOwotICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dP
ZmZzZXQ7Ci0gICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBz
aGFkb3dDb2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2Rl
ID0gc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAg
IHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkK
LSAgICAgICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5n
ZSkpCi0gICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAg
ICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKKyAgICBzdGF0aWMgY29uc3RleHByIENo
YW5nZUZsYWdzIHByaW1pdGl2ZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3Ms
IENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07CiAKLSAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAg
YWxwaGEgPSBzdGF0ZS5hbHBoYTsKKyAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdz
ICYgcHJpbWl0aXZlQ2hhbmdlRmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3Bl
cmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7
Ci0gICAgICAgIGNvbXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0g
ICAgICAgIGJsZW5kTW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9CisgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc1By
aW1pdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAg
IHNob3VsZEFudGlhbGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKKyAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNQcmltaXRp
dmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNo
b3VsZFNtb290aEZvbnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRl
LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAg
ICAgICBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3
THVtaW5hbmNlTWFza0NoYW5nZSkpCi0gICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUu
ZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsK
LQotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAg
IHVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7Ci0jZW5kaWYKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKSBjb25zdAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7
Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwg
c3Ryb2tlR3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBh
dHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hB
TkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5n
ZSkKLSAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNl
dAotICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIK
LSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3Ip
KQotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0No
YW5nZSk7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3ND
aGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
VGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7Ci0gICAgQ0hF
Q0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOwotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHls
ZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxS
dWxlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJs
ZW5kTW9kZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7Ci0gICAgfQotCi0gICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxp
YXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hh
bmdlLCBzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNr
KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLQorICAgIGF1dG8gbWVyZ2VD
aGFuZ2UgPSBbJl0oQ2hhbmdlIGNoYW5nZSwgYXV0byBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnBy
b3BlcnR5KSB7CisgICAgICAgIGlmICghc3RhdGUuY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdl
KSB8fCB0aGlzLT4qcHJvcGVydHkgPT0gc3RhdGUuKnByb3BlcnR5KQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBzdGF0ZS4qcHJvcGVydHk7CisgICAgICAg
IGNoYW5nZUZsYWdzLnNldChjaGFuZ2UsICFsYXN0RHJhd2luZ1N0YXRlIHx8ICgqbGFzdERyYXdp
bmdTdGF0ZSkuKnByb3BlcnR5ICE9IHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKKworICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxs
UnVsZSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1
bGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIG1lcmdlQ2hh
bmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJv
a2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
U3R5bGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7CisgICAgbWVy
Z2VDaGFuZ2UoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkFs
cGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBo
YSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Cisg
ICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlKTsKKworICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnNob3VsZEFudGlhbGlhcyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRT
bW9vdGhGb250cywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21v
b3RoRm9udHMpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzLCAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcywg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwor
ICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9TX0RB
UktfTU9ERV9TVVBQT1JUKQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtB
cHBlYXJhbmNlQ2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6dXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCi0KLSAgICByZXR1cm4gY2hhbmdlRmxhZ3M7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoKQogewotICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBmbGFn
cyk7Ci0KLSAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZsYWdzLnJl
bW92ZShzdHJva2VGbGFncyk7Ci0KLSAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFk
aWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0g
ICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZpbGxGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxh
Z3MucmVtb3ZlKGZpbGxGbGFncyk7Ci0KLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3Mg
PSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3MucmVt
b3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOwotCi0gICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxh
Z3MpOworI2lmIFVTRShDRykKKyAgICAvLyBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVy
KCkgc2V0cyB0aGUgQ0cgZ2xvYmFsIGFscGhhIHRvIDEuIEtlZXAgb3VyIGFscGhhIGluIHN5bmMu
CisgICAgYWxwaGEgPSAxOworI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9yaWdpbmFsT3Bh
Y2l0eSkKIHsKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdy
YWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0
cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ryb2tlUGF0dGVybik7Ci0KLSAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkK
LSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBt
X3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFu
Z2UpKQotICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9z
dGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1
c01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
VGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2Up
KQotICAgICAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5n
TW9kZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBp
ZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVD
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFs
cGhhQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0
ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5ibGVuZE1vZGUpOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0No
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxk
QW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0
U2hvdWxkU21vb3RoRm9udHMobV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7Ci0KLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMobV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFz
ayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9T
VVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0VXNlRGFy
a0FwcGVhcmFuY2UobV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7CisjaWYgVVNFKENHKQorICAg
IC8vIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKSBzZXRzIHRoZSBDRyBnbG9iYWwg
YWxwaGEgdG8gMS4gUmVzb3JlIG91ciBhbHBoYSBub3cuCisgICAgYWxwaGEgPSBvcmlnaW5hbE9w
YWNpdHk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hbE9wYWNpdHkpOwogI2VuZGlm
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CitzdGF0aWMgY29uc3QgY2hhciogc3RhdGVDaGFuZ2VOYW1lKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2UgY2hhbmdlKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdl
LWZsYWdzIiwgbV9jaGFuZ2VGbGFncy50b1JhdygpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLWdyYWRpZW50IiwgbV9zdGF0ZS5zdHJva2VH
cmFkaWVudC5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic3Ryb2tlLXBhdHRlcm4iLCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCkpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxH
cmFkaWVudENoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1ncmFkaWVudCIs
IG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCi0gICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1wYXR0ZXJuIiwgbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQo
KSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1ibHVy
IiwgbV9zdGF0ZS5zaGFkb3dCbHVyKTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ct
b2Zmc2V0IiwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNoYWRvdy1jb2xvciIsIG1fc3RhdGUuc2hhZG93Q29sb3IpOwotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMiLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01v
ZGUgPT0gU2hhZG93UmFkaXVzTW9kZTo6TGVnYWN5KTsKLSAgICB9Ci0KLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtdGhpY2tuZXNzIiwgbV9zdGF0
ZS5zdHJva2VUaGlja25lc3MpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgidGV4dC1kcmF3aW5nLW1vZGUiLCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZS50
b1JhdygpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ry
b2tlLWNvbG9yIiwgbV9zdGF0ZS5zdHJva2VDb2xvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWNvbG9yIiwgbV9zdGF0ZS5maWxsQ29sb3IpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2Utc3R5bGUiLCBt
X3N0YXRlLnN0cm9rZVN0eWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZmlsbC1ydWxlIiwgbV9zdGF0ZS5maWxsUnVsZSk7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHN0YXRlQ2hhbmdlTmFtZXNbXSA9IHsKKyAgICAgICAgImZpbGwtYnJ1c2giLAor
ICAgICAgICAiZmlsbC1ydWxlIiwKKworICAgICAgICAic3Ryb2tlLWJydXNoIiwKKyAgICAgICAg
InN0cm9rZS10aGlja25lc3MiLAorICAgICAgICAic3Ryb2tlLXN0eWxlIiwKKworICAgICAgICAi
Y29tcG9zaXRlLW1vZGUiLAorICAgICAgICAiZHJvcC1zaGFkb3ciLAorCisgICAgICAgICJhbHBo
YSIsCisgICAgICAgICJpbWFnZS1pbnRlcnBvbGF0aW9uLXF1YWxpdHkiLAorICAgICAgICAidGV4
dC1kcmF3aW5nLW1vZGUiLAorCisgICAgICAgICJzaG91bGQtYW50aWFsaWFzIiwKKyAgICAgICAg
InNob3VsZC1zbW9vdGgtZm9udHMiLAorICAgICAgICAic2hvdWxkLXN1YnBpeGVsLXF1YW50aXpl
LWZvbnRzIiwKKyAgICAgICAgInNoYWRvd3MtaWdub3JlLXRyYW5zZm9ybXMiLAorICAgICAgICAi
ZHJhdy1sdW1pbmFuY2UtbWFzayIKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAg
ICAgICAsICJ1c2UtZGFyay1hcHBlYXJhbmNlIgorI2VuZGlmCisgICAgfTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkp
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKKyAgICB1
bnNpZ25lZCBtYXNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYW5nZSk7CisgICAgQVNTRVJU
KCEoKG1hc2sgLSAxKSAmIG1hc2spKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxv
ZzIobWFzaykpOworICAgIHJldHVybiBzdGF0ZUNoYW5nZU5hbWVzW2luZGV4XTsKK30KIAotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1v
ZGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBtX3N0YXRl
LmJsZW5kTW9kZSk7CitUZXh0U3RyZWFtJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHVtcChUZXh0
U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICBhdXRvIGR1bXAgPSBbJl0oQ2hhbmdlIGNoYW5nZSwg
YXV0byBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBjb25zdCBTdHJpbmcmIG5hbWUp
IHsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAg
ICB0cy5kdW1wUHJvcGVydHkobmFtZSwgdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OwogCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFu
dGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFudGlhbGlh
cyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNoYW5n
ZS1mbGFncyIsIGNoYW5nZUZsYWdzKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3RhdGUuc2hvdWxkU21v
b3RoRm9udHMpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgIHN0
YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxCcnVzaCkpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxs
UnVsZSwgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVs
ZSwgICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkZpbGxSdWxlKSk7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzaG91bGQtc3VicGl4ZWwtcXVhbnRpemUtZm9udHMiLCBtX3N0YXRlLnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCAgICAgICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U3Ryb2tlQnJ1c2gpKTsKKyAgICBkdW1wKENo
YW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpT
dHJva2VUaGlja25lc3MpKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsICAgICAgICAgICAg
ICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpTdHJva2VTdHlsZSkpOwogCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9y
ZS10cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgZHVt
cChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5n
ZTo6Q29tcG9zaXRlTW9kZSkpOworICAgIGR1bXAoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93LCAgICAgICAgICAg
ICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkRyb3BTaGFkb3cpKTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNl
TWFza0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZHJhdy1sdW1pbmFuY2UtbWFz
ayIsIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOworICAgIGR1bXAoQ2hhbmdlOjpBbHBoYSwg
ICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkFscGhhKSk7CisgICAg
ZHVtcChDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgc3RhdGVDaGFuZ2VOYW1lKENo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgIGR1bXAoQ2hhbmdlOjpUZXh0
RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJh
d2luZ01vZGUsICAgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OlRleHREcmF3aW5n
TW9kZSkpOwogCisgICAgZHVtcChDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgc3Rh
dGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSk7CisgICAgZHVtcChDaGFuZ2U6
OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNo
b3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgc3RhdGVDaGFuZ2VOYW1lKENoYW5nZTo6U2hvdWxk
U21vb3RoRm9udHMpKTsKKyAgICBkdW1wKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzLCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
LCBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKTsK
KyAgICBkdW1wKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICBzdGF0ZUNoYW5nZU5h
bWUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpOworICAgIGR1bXAoQ2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3
THVtaW5hbmNlTWFzaywgICAgICAgICAgIHN0YXRlQ2hhbmdlTmFtZShDaGFuZ2U6OkRyYXdMdW1p
bmFuY2VNYXNrKSk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFu
Y2VDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInVzZS1kYXJrLWFwcGVhcmFuY2Ui
LCBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNlRGFya0Fw
cGVhcmFuY2UsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVh
cmFuY2UsICAgICAgICAgICBzdGF0ZUNoYW5nZU5hbWUoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5j
ZSkpOwogI2VuZGlmCisgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVD
aGFuZ2UpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICBzdGF0ZUNoYW5nZS5kdW1wKHRzKTsK
KyAgICB0cyA8PCBzdGF0ZUNoYW5nZU5hbWUoY2hhbmdlKTsKICAgICByZXR1cm4gdHM7CiB9CiAK
K1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUuZHVtcCh0cyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCmluZGV4IGYzNTUxMTlmNjY5OTdkMmNm
YzA5ZmYxZmRiZjA3ZjhhNTk1OTU5NjcuLjlmNzk4YWM4NzNkODg4M2M0NDgwZDkxMmE1ZjkzNjYw
MDkzZmUxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaApAQCAtMjUsMTE2ICsyNSwyMzggQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJDb2xvci5o
IgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNp
bmNsdWRlICJTb3VyY2VCcnVzaC5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8
d3RmL09wdGlvblNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIEdyYWRpZW50OwotY2xhc3MgUGF0dGVybjsKLQogc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgpOwotCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYm
KTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
b3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgZW51bSBDaGFuZ2UgOiB1
aW50MzJfdCB7Ci0gICAgICAgIFN0cm9rZUdyYWRpZW50Q2hhbmdlICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMCwKLSAgICAgICAgU3Ryb2tlUGF0dGVybkNoYW5nZSAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCAxLAotICAgICAgICBGaWxsR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEZpbGxQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMywKLSAgICAgICAgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlICAgICAgICAg
ICAgICAgICAgID0gMSA8PCA0LAotICAgICAgICBTdHJva2VDb2xvckNoYW5nZSAgICAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgICAgIFN0cm9rZVN0eWxlQ2hhbmdlICAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgNiwKLSAgICAgICAgRmlsbENvbG9yQ2hhbmdlICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMSA8PCA3LAotICAgICAgICBGaWxsUnVsZUNoYW5nZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDgsCi0gICAgICAgIFNoYWRvd0NoYW5nZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOSwKLSAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXNDaGFuZ2UgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICAgICAgQWxwaGFDaGFuZ2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMSwKLSAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0aW9uQ2hhbmdlICAgICAgICAgICAgICAgID0gMSA8PCAxMiwKLSAgICAgICAgQmxlbmRNb2Rl
Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMywKLSAgICAgICAgVGV4dERy
YXdpbmdNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNCwKLSAgICAgICAgU2hv
dWxkQW50aWFsaWFzQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNSwKLSAgICAgICAg
U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAxNiwKLSAgICAg
ICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlICAgICAgID0gMSA8PCAxNywKLSAg
ICAgICAgRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAxOCwK
LSAgICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSAgICAgICAgID0gMSA8PCAx
OSwKKyAgICBlbnVtIGNsYXNzIENoYW5nZSA6IHVpbnQzMl90IHsKKyAgICAgICAgRmlsbEJydXNo
ICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAorICAgICAgICBGaWxsUnVsZSAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDEsCisKKyAgICAgICAgU3Ryb2tlQnJ1c2ggICAgICAgICAgICAgICAg
ID0gMSA8PCAyLAorICAgICAgICBTdHJva2VUaGlja25lc3MgICAgICAgICAgICAgPSAxIDw8IDMs
CisgICAgICAgIFN0cm9rZVN0eWxlICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKKworICAgICAg
ICBDb21wb3NpdGVNb2RlICAgICAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIERyb3BTaGFk
b3cgICAgICAgICAgICAgICAgICA9IDEgPDwgNiwKKworICAgICAgICBBbHBoYSAgICAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIFRleHREcmF3aW5nTW9kZSAgICAgICAgICAg
ICA9IDEgPDwgOCwKKyAgICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSAgID0gMSA8PCA5
LAorCisgICAgICAgIFNob3VsZEFudGlhbGlhcyAgICAgICAgICAgICA9IDEgPDwgMTAsCisgICAg
ICAgIFNob3VsZFNtb290aEZvbnRzICAgICAgICAgICA9IDEgPDwgMTEsCisgICAgICAgIFNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IDEgPDwgMTIsCisgICAgICAgIFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zICAgICA9IDEgPDwgMTMsCisgICAgICAgIERyYXdMdW1pbmFuY2VNYXNrICAgICAg
ICAgICA9IDEgPDwgMTQsCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICAgICAg
VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMCwKKyAgICAg
ICAgVXNlRGFya0FwcGVhcmFuY2UgICAgICAgICAgID0gMSA8PCAxNSwKICNlbmRpZgogICAgIH07
Ci0gICAgdXNpbmcgU3RhdGVDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFuZ2U+OworICAgIHVz
aW5nIENoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBDaGFuZ2VGbGFncyYgPSB7IH0pOworCisgICAg
Q2hhbmdlRmxhZ3MgY2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIGNoYW5nZUZsYWdzOyB9CisgICAg
dm9pZCBkaWRBcHBseUNoYW5nZXMoKSB7IGNoYW5nZUZsYWdzID0geyB9OyB9CisKKyAgICB2b2lk
IHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCBicnVzaCk7
IH0KKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCB7
IGNvbG9yIH0pOyB9CisgICAgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdy
YWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IGZpbGxCcnVz
aC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VG
bGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CisgICAgdm9pZCBzZXRGaWxsUGF0dGVybihS
ZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IGZpbGxCcnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUocGF0
dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CiAKLSAgICB2b2lk
IG1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxl
IGZpbGxSdWxlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbFJ1bGUsICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmlsbFJ1bGUsIGZpbGxSdWxlKTsgfQogCi0gICAgUmVmUHRyPEdyYWRpZW50PiBz
dHJva2VHcmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVybjsKKyAgICB2
b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0
eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNo
LCBicnVzaCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnN0cm9rZUJydXNoLCB7IGNvbG9yIH0pOyB9CisgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChS
ZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFu
c2Zvcm0pIHsgc3Ryb2tlQnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNl
VHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9CisgICAg
dm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgc3Ryb2tlQnJ1
c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6
U3Ryb2tlQnJ1c2gpOyB9CisKKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJv
a2VUaGlja25lc3MpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzLCBzdHJva2VUaGlja25lc3MpOyB9Cisg
ICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0
eWxlLCBzdHJva2VTdHlsZSk7IH0KKworICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3Np
dGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpDb21wb3NpdGVNb2Rl
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9
CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRy
b3BTaGFkb3csIGRyb3BTaGFkb3cpOyB9CisKKyAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhh
KSB7IHNldFByb3BlcnR5KENoYW5nZTo6QWxwaGEsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxw
aGEsIGFscGhhKTsgfQorICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IHNldFByb3BlcnR5
KENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsg
fQorICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRE
cmF3aW5nTW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUsIHRleHREcmF3aW5nTW9kZSk7IH0KKwor
ICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNo
b3VsZEFudGlhbGlhcywgc2hvdWxkQW50aWFsaWFzKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU21v
b3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNo
b3VsZFNtb290aEZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZvbnRz
LCBzaG91bGRTbW9vdGhGb250cyk7IH0KKyAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cyk7IH0KKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNm
b3JtcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcywgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpOyB9CisgICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhi
b29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJhd0x1bWluYW5j
ZU1hc2ssICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2ssIGRyYXdMdW1p
bmFuY2VNYXNrKTsgfQorI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgdm9pZCBz
ZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IHNldFByb3BlcnR5
KENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFy
a0FwcGVhcmFuY2UsIHVzZURhcmtBcHBlYXJhbmNlKTsgfQorI2VuZGlmCiAgICAgCi0gICAgUmVm
UHRyPEdyYWRpZW50PiBmaWxsR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRlcm4+IGZpbGxQYXR0
ZXJuOworICAgIGJvb2wgaGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSBjb25zdDsKKyAgICB2b2lk
IG1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlID0gc3RkOjpudWxs
b3B0KTsKIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgdm9pZCBkaWRCZWdpblRy
YW5zcGFyZW5jeUxheWVyKCk7CisgICAgdm9pZCBkaWRFbmRUcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcmlnaW5hbE9wYWNpdHkpOwogCi0gICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6Ymxh
Y2sgfTsKLSAgICBDb2xvciBmaWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBDb2xvciBz
aGFkb3dDb2xvcjsKKyAgICBXVEY6OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29u
dGV4dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNz
IHsgMCB9OwotICAgIGZsb2F0IHNoYWRvd0JsdXIgeyAwIH07Ci0gICAgZmxvYXQgYWxwaGEgeyAx
IH07CisgICAgQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7CiAKLSAgICBTdHJva2VTdHlsZSBzdHJv
a2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07CisgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoIHsgQ29s
b3I6OmJsYWNrIH07CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9
OwotCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdp
bmdNb2RlOjpGaWxsIH07Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Ig
eyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciB9OwotICAgIEJsZW5kTW9kZSBibGVuZE1v
ZGUgeyBCbGVuZE1vZGU6Ok5vcm1hbCB9OworICAgIAorICAgIFNvdXJjZUJydXNoIHN0cm9rZUJy
dXNoIHsgQ29sb3I6OmJsYWNrIH07CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzIHsgMCB9Owor
ICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKKyAgICAKKyAgICBD
b21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zl
ciwgQmxlbmRNb2RlOjpOb3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IGRyb3BTaGFkb3c7CisgICAg
CisgICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07Ci0g
ICAgU2hhZG93UmFkaXVzTW9kZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6
RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRl
eHREcmF3aW5nTW9kZTo6RmlsbCB9OwogCi0gICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwot
ICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwotICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDogMTsK
LSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDogMTsKKyAgICBib29sIHNob3VsZEFudGlhbGlh
cyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzIHsgdHJ1ZSB9OworICAgIGJv
b2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2sg
eyBmYWxzZSB9OwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VE
YXJrQXBwZWFyYW5jZSA6IDE7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07
CiAjZW5kaWYKLX07CisgICAgCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjoqcHJvcGVydHksIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyNpZiAhVVNFKENBSVJPKQorICAg
ICAgICBpZiAodGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
I2VuZGlmCisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHZhbHVlOworICAgICAgICBjaGFuZ2VG
bGFncy5hZGQoY2hhbmdlKTsKKyAgICB9CiAKLXN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoKSA9IGRlZmF1bHQ7Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKLSAgICAg
ICAgOiBtX3N0YXRlKHN0YXRlKQotICAgICAgICAsIG1fY2hhbmdlRmxhZ3MoZmxhZ3MpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldFByb3BlcnR5KENoYW5nZSBjaGFuZ2Us
IFQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSwgVCYmIHZhbHVlKQogICAgIHsKKyNp
ZiAhVVNFKENBSVJPKQorICAgICAgICBpZiAodGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IFdURk1v
dmUodmFsdWUpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAgICB9Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgYXV0byBlbmNvZGUgPSBbJl0oQ2hh
bmdlIGNoYW5nZSwgYXV0byBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5KSB7CisgICAg
ICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgZW5jb2Rl
ciA8PCB0aGlzLT4qcHJvcGVydHk7CisgICAgfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmKSBjb25zdDsKKyAgICBlbmNvZGVyIDw8IGNoYW5nZUZsYWdzOwogCi0gICAgdm9pZCBh
Y2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7Ci0gICAgCi0gICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAg
IGVuY29kZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwg
ICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG1fc3RhdGU7Ci0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgbV9jaGFuZ2VGbGFnczsKLX07CisgICAgZW5jb2RlKENo
YW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpOwor
ICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6Q29t
cG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21w
b3NpdGVNb2RlKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOworCisgICAgZW5jb2Rl
KENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjphbHBoYSk7CisgICAgZW5jb2RlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBlbmNvZGUo
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnNob3VsZEFudGlhbGlhcyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU21vb3Ro
Rm9udHMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwor
ICAgIGVuY29kZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIGVuY29kZShD
aGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
CisgICAgZW5jb2RlKENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBh
dXRvIGRlY29kZSA9IFsmXShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENoYW5nZSBjaGFu
Z2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAo
IXN0YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICB1c2luZyBQcm9wZXJ0eVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPigp
Lipwcm9wZXJ0eSk+Ojp0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5VHlwZT4g
dmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3RhdGUuKnByb3BlcnR5ID0gKnZh
bHVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgc3RkOjpvcHRpb25hbDxD
aGFuZ2VGbGFncz4gY2hhbmdlRmxhZ3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAg
ICBpZiAoIWNoYW5nZUZsYWdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGUgc3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpmaWxsQnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYpOworICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzdHJva2VCcnVzaCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcykpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5bGUs
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFu
Z2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpj
b21wb3NpdGVNb2RlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRl
Y29kZShzdGF0ZSwgQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3Vs
ZFNtb290aEZvbnRzLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9v
dGhGb250cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUo
c3RhdGUsIENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMsICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUs
IENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnVzZURhcmtBcHBlYXJhbmNlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNl
bmRpZgorCisgICAgcmV0dXJuIHN0YXRlOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlKTsKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtMTQzLDI4ICsyNjUsMjcgQEAgbmFtZXNwYWNlIFdU
RiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlLAotICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VHcmFkaWVudENoYW5nZSwKLSAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
RmlsbEdyYWRpZW50Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpGaWxsUGF0dGVybkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VDb2xvckNoYW5nZSwKLSAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGVD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZp
bGxDb2xvckNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbFJ1bGVDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlNoYWRvd0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhQ2hhbmdlLAotICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVPcGVy
YXRpb25DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkJsZW5kTW9kZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRz
Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLAotICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5Q2hhbmdlCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OkZpbGxCcnVzaCwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6RmlsbFJ1bGUsCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUsCisKKyAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSwKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdywKKworICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYSwKKyAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlLAor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5LAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsCisgICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkK
LSAgICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZUNoYW5nZQorICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlCiAjZW5kaWYKICAgICA+OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXgg
MTVkZjFkZmRiNmYzYTE2YWQ1ZWFmNjQ3MjYxZmNmYzRiN2E5M2FiNC4uMTJlNGZmYmYwODQ3Mzkz
OTM4ZDEyNTE4YmNjOGVlMzc1NjQ3Mzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKQEAgLTEzNiw2ICsxMzYsNDQgQEAgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
ICAgICByZXR1cm4gdHMgPDwgYmxlbmRNb2RlTmFtZShibGVuZE1vZGUpOwogfQogCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1v
ZGUpCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb21wb3NpdGUtb3BlcmF0aW9uIiwgY29tcG9z
aXRlTW9kZS5vcGVyYXRpb24pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGNv
bXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cp
Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctb2Zmc2V0IiwgZHJvcFNoYWRvdy5vZmZz
ZXQpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBkcm9wU2hhZG93LmJsdXJS
YWRpdXMpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgZHJvcFNoYWRvdy5j
b2xvcik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwg
ZHJvcFNoYWRvdy5yYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CisgICAg
cmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSkKK3sKKyAgICBzd2l0Y2gg
KGludGVycG9sYXRpb25RdWFsaXR5KSB7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6
RGVmYXVsdDoKKyAgICAgICAgdHMgPDwgIkRFRkFVTFQiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEludGVycG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVycG9sYXRlOgorICAgICAgICB0cyA8
PCAiRE8tTk9ULUlOVEVSUE9MQVRFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBv
bGF0aW9uUXVhbGl0eTo6TG93OgorICAgICAgICB0cyA8PCAiTE9XIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6TWVkaXVtOgorICAgICAgICB0cyA8PCAi
TUVESVVNIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6
SGlnaDoKKyAgICAgICAgdHMgPDwgIkhFSUdIIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiB0czsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
V2luZFJ1bGUgcnVsZSkKIHsKICAgICBzd2l0Y2ggKHJ1bGUpIHsKQEAgLTE4Miw0ICsyMjAsNDIg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgTGluZUpvaW4gam9pblN0
eWxlKQogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCit7CisgICAgc3dpdGNoIChzdHJva2VT
dHlsZSkgeworICAgIGNhc2UgU3Ryb2tlU3R5bGU6Ok5vU3Ryb2tlOgorICAgICAgICB0cyA8PCAi
Tk8tU1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6U29saWRT
dHJva2U6CisgICAgICAgIHRzIDw8ICJTT0xJRC1TVFJPS0UiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0cm9rZVN0eWxlOjpEb3R0ZWRTdHJva2U6CisgICAgICAgIHRzIDw8ICJET1RURUQt
U1RST0tFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RGFzaGVkU3Ry
b2tlOgorICAgICAgICB0cyA8PCAiREFTSEVELVNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU3Ryb2tlU3R5bGU6OkRvdWJsZVN0cm9rZToKKyAgICAgICAgdHMgPDwgIkRPVUJMRS1T
VFJPS0UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpXYXZ5U3Ryb2tl
OgorICAgICAgICB0cyA8PCAiV0FWWS1TVFJPS0UiOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBUZXh0RHJhd2luZ01vZGUgdGV4dERyYXdpbmdNb2RlKQoreworICAgIHN3aXRjaCAodGV4dERy
YXdpbmdNb2RlKSB7CisgICAgY2FzZSBUZXh0RHJhd2luZ01vZGU6OkZpbGw6CisgICAgICAgIHRz
IDw8ICJGSUxMIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0RHJhd2luZ01vZGU6OlN0
cm9rZToKKyAgICAgICAgdHMgPDwgIlNUUk9LRSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gdHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCBkZWM0MzQ3MDJj
Zjc2YTg5ZmE4NjUzMGMzMzc2ZDhiYWM1ZDljYTllLi4zNzI5NzgzMWEyYmYzNDY4Y2FlYzhmNTIw
MGYwNDc4MDc2NjZjYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJXaW5k
UnVsZS5oIgogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CkBAIC03NCw2ICs3Niw0MiBAQCBlbnVtIGNsYXNzIEJsZW5kTW9kZSA6IHVpbnQ4X3QgewogICAg
IFBsdXNMaWdodGVyCiB9OwogCitzdHJ1Y3QgQ29tcG9zaXRlTW9kZSB7CisgICAgQ29tcG9zaXRl
T3BlcmF0b3Igb3BlcmF0aW9uOworICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29tcG9zaXRlTW9kZSYgb3RoZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uID09IG90aGVyLm9wZXJhdGlvbiAmJiBibGVuZE1vZGUgPT0gb3RoZXIu
YmxlbmRNb2RlOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxDb21wb3NpdGVNb2RlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ29tcG9zaXRlTW9kZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBvcGVyYXRpb247CisgICAgZW5jb2Rl
ciA8PCBibGVuZE1vZGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlv
bmFsPENvbXBvc2l0ZU1vZGU+IENvbXBvc2l0ZU1vZGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wZXJhdGlvbjsKKyAg
ICBkZWNvZGVyID4+IG9wZXJhdGlvbjsKKyAgICBpZiAoIW9wZXJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1v
ZGU7CisgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CisgICAgaWYgKCFibGVuZE1vZGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvcGVyYXRpb24sICpi
bGVuZE1vZGUgfSB9OworfQorCiBzdHJ1Y3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAg
IGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3QgewogICAgICAgICBUZXh0Q2hlY2tpbmdEaWN0YXRp
b25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLApAQCAtMTExLDYgKzE0OSw2NyBAQCBzdGQ6Om9wdGlv
bmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVj
b2RlKERlY29kZXImCiAgICAgcmV0dXJuIHsgeyAqbW9kZSwgKnNob3VsZFVzZURhcmtBcHBlYXJh
bmNlIH0gfTsKIH0KIAorLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBj
YW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCisvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0
bWVudCBvZiByYWRpaSA+IDhweC4KK2VudW0gY2xhc3MgU2hhZG93UmFkaXVzTW9kZSA6IGJvb2wg
eworICAgIERlZmF1bHQsCisgICAgTGVnYWN5Cit9OworCitzdHJ1Y3QgRHJvcFNoYWRvdyB7Cisg
ICAgRmxvYXRTaXplIG9mZnNldDsKKyAgICBmbG9hdCBibHVyUmFkaXVzIHsgMCB9OworICAgIENv
bG9yIGNvbG9yOworICAgIFNoYWRvd1JhZGl1c01vZGUgcmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1
c01vZGU6OkRlZmF1bHQgfTsKKworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4g
Y29sb3IuaXNWaXNpYmxlKCk7IH0KKyAgICBib29sIGlzQmx1cnJlZCgpIGNvbnN0IHsgcmV0dXJu
IGlzVmlzaWJsZSgpICYmIGJsdXJSYWRpdXM7IH0KKyAgICBib29sIGhhc091dHNldHMoKSBjb25z
dCB7IHJldHVybiBpc0JsdXJyZWQoKSB8fCAoaXNWaXNpYmxlKCkgJiYgIW9mZnNldC5pc1plcm8o
KSk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxEcm9wU2hhZG93PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBEcm9wU2hhZG93JiBhLCBjb25zdCBEcm9wU2hhZG93JiBiKQoreworICAgIHJl
dHVybiBhLm9mZnNldCA9PSBiLm9mZnNldCAmJiBhLmJsdXJSYWRpdXMgPT0gYi5ibHVyUmFkaXVz
ICYmIGEuY29sb3IgPT0gYi5jb2xvciAmJiBhLnJhZGl1c01vZGUgPT0gYi5yYWRpdXNNb2RlOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcm9wU2hhZG93OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG9mZnNldDsKKyAgICBlbmNv
ZGVyIDw8IGJsdXJSYWRpdXM7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKKyAgICBlbmNvZGVyIDw8
IHJhZGl1c01vZGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFs
PERyb3BTaGFkb3c+IERyb3BTaGFkb3c6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBvZmZzZXQ7CisgICAgZGVjb2RlciA+PiBvZmZzZXQ7
CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBibHVyUmFkaXVzOworICAgIGRlY29kZXIgPj4gYmx1clJhZGl1
czsKKyAgICBpZiAoIWJsdXJSYWRpdXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9yOwor
ICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHJhZGl1c01vZGU7CisgICAgZGVjb2RlciA+PiBy
YWRpdXNNb2RlOworICAgIGlmICghcmFkaXVzTW9kZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7IHsgKm9mZnNldCwgKmJsdXJSYWRpdXMsICpjb2xvciwgKnJh
ZGl1c01vZGUgfSB9OworfQorCiBlbnVtIGNsYXNzIEdyYWRpZW50U3ByZWFkTWV0aG9kIDogdWlu
dDhfdCB7CiAgICAgUGFkLAogICAgIFJlZmxlY3QsCkBAIC0xNTgsMTMgKzI1Nyw2IEBAIGVudW0g
Y2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7CiB9OwogdXNpbmcgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgPSBPcHRpb25TZXQ8VGV4dERyYXdpbmdNb2RlPjsKIAotLy8gTGVnYWN5IHNoYWRv
dyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cu
Ci0vLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLWVudW0gY2xh
c3MgU2hhZG93UmFkaXVzTW9kZSA6IGJvb2wgewotICAgIERlZmF1bHQsCi0gICAgTGVnYWN5Ci19
OwotCiBlbnVtIFRleHRCYXNlbGluZSB7CiAgICAgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwKICAg
ICBUb3BUZXh0QmFzZWxpbmUsCkBAIC0xODksOSArMjgxLDE0IEBAIGJvb2wgcGFyc2VDb21wb3Np
dGVBbmRCbGVuZE9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJh
dG9yJiwKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIFdlYkNvcmU6OkJsZW5kTW9kZSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2ViQ29yZTo6Q29tcG9zaXRl
T3BlcmF0b3IpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb21wb3NpdGVNb2RlKTsKK1dFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBEcm9wU2hhZG93Jik7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIExpbmVDYXAp
OwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIExpbmVKb2luKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBTdHJva2VTdHlsZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dERyYXdpbmdNb2Rl
KTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBXaW5kUnVsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGI2MjM2Nzg4MGUzZTUzNTRiNjE3MTEzNDdjOWExMWI0MjI0Njg4NWUuLjZjMzMzMzk2
MjcyMTUyNzc2ODY0NzBhMDJiMTVmNTYyZWYxYmEwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0Rl
Y29kZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9
PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0Rl
Y29kZXM7IH0KICAgICBib29sIGRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9u
UmVhc29uczo6RGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50OyB9CiAKLSAgICB2b2lkIGRpZFVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbCB7IH0KIAogI2lmIFVTRShDRykKICAgICB2b2lkIHNl
dElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBiYjEzOGI1Mjk3YTUyMWZi
ZjdkNjkzY2QxMTQxMDQ0MDBmY2FiYzRlLi45MDI0ZjVkMWFiZmNlMzgwODE4M2EzYjIzMWZiY2Uw
ZmZiMmZmNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApAQCAtMTkxLDE3ICsxOTEsMTcgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihj
b25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IEMK
ICAgICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CiAKLVNoYWRvd0JsdXI6OlNoYWRvd0Js
dXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogbV9jb2xvcihzdGF0
ZS5zaGFkb3dDb2xvcikKLSAgICAsIG1fYmx1clJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyLCBzdGF0
ZS5zaGFkb3dCbHVyKQotICAgICwgbV9vZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0KQotICAgICwg
bV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykK
K1NoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdywgYm9v
bCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICA6IG1fY29sb3IoZHJvcFNoYWRvdy5jb2xv
cikKKyAgICAsIG1fYmx1clJhZGl1cyhkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cu
Ymx1clJhZGl1cykKKyAgICAsIG1fb2Zmc2V0KGRyb3BTaGFkb3cub2Zmc2V0KQorICAgICwgbV9z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKICNpZiBV
U0UoQ0cpCiAgICAgLy8gQ29yZSBHcmFwaGljcyBpbmNvcnJlY3RseSByZW5kZXJzIHNoYWRvd3Mg
d2l0aCByYWRpdXMgPiA4cHggKDxyZGFyOi8vcHJvYmxlbS84MTAzNDQyPiksCiAgICAgLy8gYnV0
IHdlIG5lZWQgdG8gcHJlc2VydmUgdGhpcyBidWdneSBiZWhhdmlvciBmb3IgY2FudmFzIGFuZCAt
d2Via2l0LWJveC1zaGFkb3cuCi0gICAgaWYgKHN0YXRlLnNoYWRvd1JhZGl1c01vZGUgPT0gU2hh
ZG93UmFkaXVzTW9kZTo6TGVnYWN5KSB7Ci0gICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSByYWRp
dXNUb0xlZ2FjeVJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyKTsKKyAgICBpZiAoZHJvcFNoYWRvdy5y
YWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgeworICAgICAgICBmbG9hdCBz
aGFkb3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMoZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsK
ICAgICAgICAgbV9ibHVyUmFkaXVzID0gRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIp
OwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5oCmluZGV4IDE0ZmQ4M2VkZTFhMWJhY2YxNzdmMzMxZWNhZDFhNDMwMjkzZjYwM2Eu
LjhlZmQ2Mzc3YWFlYmU5ODNlZTNhZjU4NjEzMDkxMGJlNjYxNzcxM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7Ci1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7CitzdHJ1Y3QgRHJvcFNo
YWRvdzsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBTaGFkb3dCbHVyIHsKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogCiAgICAgU2hhZG93Qmx1cigpOwogICAgIFNoYWRvd0JsdXIoY29u
c3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xv
ciYsIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7Ci0gICAgU2hhZG93Qmx1
cihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFNoYWRvd0JsdXIoY29uc3QgRHJv
cFNoYWRvdyYsIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKICAgICB2
b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwg
Y29uc3QgQ29sb3ImLCBib29sIGlnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMmVmOTQyNDBkNmFiOTVkZjNlNTAzN2RhZGNmNmE0ZTA3MzUyNDM4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJydXNoLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworU291cmNlQnJ1c2g6OlNvdXJjZUJydXNoKGNvbnN0IENvbG9y
JiBjb2xvciwgc3RkOjpvcHRpb25hbDxCcnVzaD4mJiBicnVzaCkKKyAgICA6IG1fY29sb3IoY29s
b3IpCisgICAgLCBtX2JydXNoKFdURk1vdmUoYnJ1c2gpKQoreworfQorCitjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIFNvdXJjZUJydXNoOjpncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QWZmaW5lVHJhbnNmb3JtPiBpZGVudGl0eTsKKyAg
ICBpZiAoIW1fYnJ1c2gpCisgICAgICAgIHJldHVybiBpZGVudGl0eS5nZXQoKTsKKworICAgIGlm
IChhdXRvKiBncmFkaWVudCA9IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZt
X2JydXNoLT5icnVzaCkpCisgICAgICAgIHJldHVybiBncmFkaWVudC0+c3BhY2VUcmFuc2Zvcm07
CisKKyAgICByZXR1cm4gaWRlbnRpdHkuZ2V0KCk7Cit9CisKK0dyYWRpZW50KiBTb3VyY2VCcnVz
aDo6Z3JhZGllbnQoKSBjb25zdAoreworICAgIGlmICghbV9icnVzaCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKGF1dG8qIGdyYWRpZW50ID0gc3RkOjpnZXRfaWY8QnJ1c2g6Okxv
Z2ljYWxHcmFkaWVudD4oJm1fYnJ1c2gtPmJydXNoKSkKKyAgICAgICAgcmV0dXJuIGdyYWRpZW50
LT5ncmFkaWVudC5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGF0dGVybiogU291
cmNlQnJ1c2g6OnBhdHRlcm4oKSBjb25zdAoreworICAgIGlmICghbV9icnVzaCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8
UGF0dGVybj4+KCZtX2JydXNoLT5icnVzaCkpCisgICAgICAgIHJldHVybiBwYXR0ZXJuLT5wdHIo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0R3JhZGll
bnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNl
VHJhbnNmb3JtKQoreworICAgIG1fYnJ1c2ggPSB7IEJydXNoOjpMb2dpY2FsR3JhZGllbnQgeyBX
VEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0gfSB9OworfQorCit2b2lkIFNvdXJjZUJy
dXNoOjpzZXRQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCit7CisgICAgbV9icnVzaCA9
IHsgV1RGTW92ZShwYXR0ZXJuKSB9OworfQorCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkKK3sKKyAgICB0cy5kdW1w
UHJvcGVydHkoImNvbG9yIiwgYnJ1c2guY29sb3IoKSk7CisKKyAgICBpZiAoYXV0byBncmFkaWVu
dCA9IGJydXNoLmdyYWRpZW50KCkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZ3JhZGllbnQi
LCBncmFkaWVudCk7CisKKyAgICBpZiAoYXV0byBwYXR0ZXJuID0gYnJ1c2gucGF0dGVybigpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4iLCBwYXR0ZXJuKTsKKworICAgIHJldHVy
biB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliOWZhZTU0OTQzNDlk
YjU1YWU1MzNjNWIzYTBmOWZhOTU1MjI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmgKQEAgLTAsMCArMSwxODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAi
UGF0dGVybi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJydXNoIHsK
K3B1YmxpYzoKKyAgICBzdHJ1Y3QgQnJ1c2ggeworICAgICAgICBzdHJ1Y3QgTG9naWNhbEdyYWRp
ZW50IHsKKyAgICAgICAgICAgIFJlZjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gc3BhY2VUcmFuc2Zvcm07CisKKyAgICAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExvZ2ljYWxH
cmFkaWVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGQ6OnZh
cmlhbnQ8TG9naWNhbEdyYWRpZW50LCBSZWY8UGF0dGVybj4+IGJydXNoOworCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QnJ1
c2g+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIFNvdXJjZUJydXNoKCkgPSBkZWZh
dWx0OworICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJydXNoKGNvbnN0IENvbG9yJiwgc3RkOjpv
cHRpb25hbDxCcnVzaD4mJiA9IHN0ZDo6bnVsbG9wdCk7CisKKyAgICBjb25zdCBDb2xvciYgY29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvciBjb2xvcikgeyBtX2NvbG9yID0gY29sb3I7IH0KKworICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8QnJ1c2g+JiBicnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fYnJ1c2g7IH0KKworICAgIFdFQkNP
UkVfRVhQT1JUIEdyYWRpZW50KiBncmFkaWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFBhdHRlcm4qIHBhdHRlcm4oKSBjb25zdDsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdDsKKworICAgIHZvaWQgc2V0R3JhZGllbnQoUmVm
PEdyYWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9
KTsKKyAgICB2b2lkIHNldFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOworCisgICAgYm9vbCBpc1By
aW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2JydXNoICYmIG1fY29sb3IudHJ5R2V0QXNTUkdC
QUJ5dGVzKCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTb3VyY2VCcnVzaD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBD
b2xvciBtX2NvbG9yIHsgQ29sb3I6OmJsYWNrIH07CisgICAgc3RkOjpvcHRpb25hbDxCcnVzaD4g
bV9icnVzaDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQnJ1c2g6
OkJydXNoOjpMb2dpY2FsR3JhZGllbnQmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9n
aWNhbEdyYWRpZW50JiBiKQoreworICAgIHJldHVybiBhLmdyYWRpZW50LnB0cigpID09IGIuZ3Jh
ZGllbnQucHRyKCkgJiYgYS5zcGFjZVRyYW5zZm9ybSA9PSBiLnNwYWNlVHJhbnNmb3JtOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYSwgY29u
c3QgU291cmNlQnJ1c2g6OkJydXNoJiBiKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGEu
YnJ1c2gsCisgICAgICAgIFsmXSAoY29uc3QgU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3Jh
ZGllbnQmIGFHcmFkaWVudCkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGJHcmFkaWVudCA9IHN0
ZDo6Z2V0X2lmPFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50PigmYi5icnVzaCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGFHcmFkaWVudCA9PSAqYkdyYWRpZW50OworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxQ
YXR0ZXJuPiYgYVBhdHRlcm4pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiUGF0dGVybiA9IHN0
ZDo6Z2V0X2lmPFJlZjxQYXR0ZXJuPj4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVy
biBhUGF0dGVybi5wdHIoKSA9PSBiUGF0dGVybi0+cHRyKCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICApOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNvdXJjZUJydXNoJiBhLCBjb25zdCBTb3VyY2VCcnVzaCYgYikKK3sKKyAgICByZXR1cm4g
YS5jb2xvcigpID09IGIuY29sb3IoKSAmJiBhLmJydXNoKCkgPT0gYi5icnVzaCgpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2lj
YWxHcmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBncmFkaWVudC5nZXQoKTsKKyAgICBlbmNvZGVyIDw8IHNwYWNlVHJhbnNmb3JtOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VCcnVzaDo6
QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4gU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGll
bnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFk
aWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghZ3JhZGllbnQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+
IHNwYWNlVHJhbnNmb3JtOworICAgIGRlY29kZXIgPj4gc3BhY2VUcmFuc2Zvcm07CisgICAgaWYg
KCFzcGFjZVRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqZ3JhZGllbnQpLCAqc3BhY2VUcmFuc2Zvcm0gfSB9OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6QnJ1c2g6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdURjo6c3dpdGNoT24oYnJ1c2gsCisg
ICAgICAgIFsmXSAoY29uc3QgTG9naWNhbEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAg
ICAgZW5jb2RlciA8PCB0cnVlIDw8IGdyYWRpZW50OworICAgICAgICB9LAorICAgICAgICBbJl0g
KGNvbnN0IFJlZjxQYXR0ZXJuPiYgcGF0dGVybikgeworICAgICAgICAgICAgZW5jb2RlciA8PCBm
YWxzZSA8PCBwYXR0ZXJuLmdldCgpOworICAgICAgICB9CisgICAgKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoPiBTb3Vy
Y2VCcnVzaDo6QnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaGFzR3JhZGllbnQ7CisgICAgZGVjb2RlciA+PiBoYXNHcmFkaWVudDsKKyAg
ICBpZiAoIWhhc0dyYWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
aWYgKCpoYXNHcmFkaWVudCkgeworICAgICAgICBhdXRvIGdyYWRpZW50ID0gTG9naWNhbEdyYWRp
ZW50OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGlmICghZ3JhZGllbnQpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRp
ZW50KSB9IH07CisgICAgfQorCisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRl
Y29kZXIpOworICAgIGlmICghcGF0dGVybikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKnBhdHRlcm4pIH0gfTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9jb2xvcjsKKyAgICBlbmNvZGVyIDw8IG1fYnJ1c2g7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNo
PiBTb3VyY2VCcnVzaDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9y
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPEJydXNoPj4gYnJ1c2g7CisgICAgZGVjb2RlciA+PiBicnVzaDsKKyAgICBpZiAo
IWJydXNoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNvdXJj
ZUJydXNoKCpjb2xvciwgV1RGTW92ZSgqYnJ1c2gpKTsKK30KKworV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNvdXJjZUJydXNoJik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDE1NTIzNTZhMjNhNWZk
ZmIxMGFmZWNhMmNjOTJhNzI3OTQ1ODEwMmUuLjJkYTQ5MWZkODdmNmNmYmIzM2U0N2Q5ODEyMzM3
YmYyMTU4ZjZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTU5LDQyICs1NTksNDIgQEAg
RmlsbFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKICAgICAsIGZpbGxSdWxlKHN0YXRlLmZp
bGxSdWxlKQogewotICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikgewotICAgICAgICBwYXR0ZXJu
Lm9iamVjdCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRl
cm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBpZiAoYXV0byBmaWxsUGF0dGVybiA9IHN0YXRl
LmZpbGxCcnVzaC5wYXR0ZXJuKCkpIHsKKyAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJl
ZihmaWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7
CiAKLSAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJ
bWFnZSgpOworICAgICAgICBhdXRvJiBwYXR0ZXJuSW1hZ2UgPSBmaWxsUGF0dGVybi0+dGlsZUlt
YWdlKCk7CiAgICAgICAgIHBhdHRlcm4uc2l6ZSA9IHBhdHRlcm5JbWFnZS5zaXplKCk7Ci0gICAg
ICAgIHBhdHRlcm4udHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRlcm4tPnBhdHRlcm5TcGFjZVRy
YW5zZm9ybSgpOwotICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBzdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WCgpOwotICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WSgpOwotICAgIH0gZWxzZSBpZiAoc3RhdGUuZmlsbEdyYWRpZW50KSB7Ci0gICAgICAg
IGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5maWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3Rh
dGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICBwYXR0ZXJuLnRyYW5zZm9y
bSA9IGZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICAgICAgcGF0dGVy
bi5yZXBlYXRYID0gZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKKyAgICAgICAgcGF0dGVybi5yZXBl
YXRZID0gZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdy
YWRpZW50ID0gc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQu
YmFzZSA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5maWxsQnJ1c2guZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0g
ICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gc3RhdGUuZmlsbEdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSk7CisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7
CisgICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7CiB9CiAKIFN0cm9rZVNv
dXJjZTo6U3Ryb2tlU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAg
ICA6IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKQogewotICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0
ZXJuKQotICAgICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7Ci0gICAgZWxzZSBpZiAoc3Rh
dGUuc3Ryb2tlR3JhZGllbnQpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0YXRlLnN0cm9r
ZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0pOworICAgIGlmIChhdXRvIHN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VCcnVzaC5w
YXR0ZXJuKCkpCisgICAgICAgIHBhdHRlcm4gPSBhZG9wdFJlZihzdHJva2VQYXR0ZXJuLT5jcmVh
dGVQbGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBlbHNlIGlmIChhdXRv
IHN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKSkgeworICAgICAg
ICBncmFkaWVudC5iYXNlID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUu
c3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICAgICAgaWYgKHN0YXRl
LmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gc3RhdGUu
c3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLnN0cm9rZUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZCA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJv
a2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIH0gZWxzZQotICAgICAgICBj
b2xvciA9IHN0YXRlLnN0cm9rZUNvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLnN0cm9rZUJy
dXNoLmNvbG9yKCk7CiB9CiAKIFNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBvZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0KQot
ICAgICwgYmx1cihzdGF0ZS5zaGFkb3dCbHVyKQotICAgICwgY29sb3Ioc3RhdGUuc2hhZG93Q29s
b3IpCisgICAgOiBvZmZzZXQoc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQpCisgICAgLCBibHVyKHN0
YXRlLmRyb3BTaGFkb3cuYmx1clJhZGl1cykKKyAgICAsIGNvbG9yKHN0YXRlLmRyb3BTaGFkb3cu
Y29sb3IpCiAgICAgLCBpZ25vcmVUcmFuc2Zvcm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKQogICAgICwgZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCi0gICAgLCBnbG9iYWxDb21wb3Np
dGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcikKKyAgICAsIGdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApp
bmRleCBhN2FmMGNlYjUyNDkwNDA0MWVlMTJkNTFmODljNmRmMTZjYjM2MDM3Li5mZTczOGJkZjc3
ZThjZTc2MmFjYzlhMGYwZjg0ZGQ4MzYxYzY5YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3Rh
dGUoKTsKICAgICBDYWlybzo6ZHJhd0dseXBocygqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
Q2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAg
ICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRo
ZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0
RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBz
dGF0ZS5zaGFkb3dDb2xvciwKKyAgICAgICAgc3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5z
dHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93
LmNvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAK
aW5kZXggOTAwOTZhYzY0NTIyNGRiZmRjNjBiZmE2Y2FjYWQwMzA3NmNiMjk3ZC4uODU3Y2VkMWEy
NzAzNzYxYjFkMzc4M2JkZWUzMDgzNzQ4NzM2MWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBHcmFkaWVudDo6Y3JlYXRlUGF0
dGVybihmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgQWZmaW5lVAogCiB2b2lkIEdyYWRpZW50Ojpm
aWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewot
ICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4wLCBjb250ZXh0LnN0YXRlKCkuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRl
cm4oMS4wLCBjb250ZXh0LmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGlmICgh
cGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggYzMyMzA0NDUzNTFiMDNmMmFhODczNmFlZTJiY2U3OGJjNDM2MWY0OS4uYzliZGRjODBj
NDBiODUyYjExMDI2NTNkZmZjMzAwY2IyOTc5NzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMTM4LDggKzEzOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJl
c3RvcmUoKQogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7CiAgICAgQVNTRVJUKCFyZWN0Lmlz
RW1wdHkoKSk7Ci0gICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpk
cmF3UmVjdCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0
YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CisgICAgQ2Fpcm86OmRyYXdSZWN0
KCp0aGlzLCByZWN0LCBib3JkZXJUaGlja25lc3MsIGZpbGxDb2xvcigpLCBzdHJva2VTdHlsZSgp
LCBzdHJva2VDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE1NCwxNSArMTUzLDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwg
Y29uc3QgRmxvYXRQb2ludCYKICAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENh
aXJvOjpkcmF3TGluZSgqdGhpcywgcG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBz
dGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRp
YWxpYXMpOworICAgIENhaXJvOjpkcmF3TGluZSgqdGhpcywgcG9pbnQxLCBwb2ludDIsIHN0cm9r
ZVN0eWxlKCksIHN0cm9rZUNvbG9yKCksIHN0cm9rZVRoaWNrbmVzcygpLCBzaG91bGRBbnRpYWxp
YXMoKSk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgdXNlZCB0byBkcmF3IHRoZSBsaXR0
bGUgY2lyY2xlcyB1c2VkIGluIGxpc3RzLgogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJh
d0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGF1dG8mIHN0YXRlID0gdGhp
cy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd0VsbGlwc2UoKnRoaXMsIHJlY3QsIHN0YXRlLmZp
bGxDb2xvciwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yLCBzdGF0ZS5zdHJv
a2VUaGlja25lc3MpOworICAgIENhaXJvOjpkcmF3RWxsaXBzZSgqdGhpcywgcmVjdCwgZmlsbENv
bG9yKCksIHN0cm9rZVN0eWxlKCksIHN0cm9rZUNvbG9yKCksIHN0cm9rZVRoaWNrbmVzcygpKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0
aCkKQEAgLTE5Niw4ICsxOTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVu
dCYgZ3JhZGllbnQpCiB7Ci0gICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGF1
dG8gcGF0dGVybiA9IGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSk7CisgICAgYXV0byBwYXR0ZXJuID0gZ3JhZGllbnQuY3JlYXRlUGF0
dGVybigxLjAsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGlmICghcGF0dGVy
bikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDksNyArMjA1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3Jh
ZGllbnQpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlz
LT5zdGF0ZSgpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBzdGF0
ZS5jb21wb3NpdGVPcGVyYXRvcjsKKyAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJh
dG9yID0gY29tcG9zaXRlT3BlcmF0aW9uKCk7CiAKICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbigqdGhpcywgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CiAgICAg
Q2Fpcm86OmZpbGxSZWN0KCp0aGlzLCByZWN0LCBjb2xvciwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CkBAIC0yNjUsNyArMjYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpY2sKIHsKICAg
ICBpZiAod2lkdGhzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIENhaXJvOjpkcmF3
TGluZXNGb3JUZXh0KCp0aGlzLCBwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBk
b3VibGVVbmRlcmxpbmVzLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBDYWlybzo6ZHJhd0xp
bmVzRm9yVGV4dCgqdGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91
YmxlVW5kZXJsaW5lcywgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBE
b2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKQEAgLTI4NCwyOCArMjgwLDMxIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIENh
aXJvOjp0cmFuc2xhdGUoKnRoaXMsIHgsIHkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogewotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25l
c3NDaGFuZ2UpCisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQogICAgICAgICBDYWlybzo6U3RhdGU6
OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKIAotICAg
IGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkKKyAg
ICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlN0cm9rZVN0eWxlKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VTdHlsZSgq
dGhpcywgc3RhdGUuc3Ryb2tlU3R5bGUpOwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkgeworICAgIC8vIEZJWE1FOiBtX3N0YXRlIHNob3VsZCBu
b3QgYmUgY2hhbmdlZCB0byBmbGlwIHRoZSBzaGFkb3cgb2Zmc2V0LiBUaGlzIGNhbiBoYXBwZW4g
d2hlbiB0aGUgc2hhZG93IGlzIGFwcGxpZWQgdG8gdGhlIHBsYXRmb3JtIGNvbnRleHQuCisgICAg
aWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpEcm9wU2hhZG93KSkgewogICAgICAgICBpZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpIHsKICAgICAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQg
aXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAgICAg
Ly8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBv
c2l0ZSBZIGF4aXMKLSAgICAgICAgICAgIGF1dG8mIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRv
d09mZnNldDsKLSAgICAgICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0geyBzaGFkb3dPZmZz
ZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OworICAgICAgICAgICAgYXV0byYg
c2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQ7CisgICAgICAgICAgICBtX3N0
YXRlLmRyb3BTaGFkb3cub2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09m
ZnNldC5oZWlnaHQoKSB9OwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkKLSAgICAgICAgQ2Fp
cm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU9w
ZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpCisgICAgICAg
IENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3Np
dGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOwogCi0gICAg
aWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkK
KyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlNob3VsZEFudGlhbGlhcykpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxk
QW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworCisgICAgc3RhdGUuZGlk
QXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNvbmNhdENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKQEAgLTQzNCw3ICs0MzMsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwog
ICAgIENhaXJvOjpkcmF3R2x5cGhzKCp0aGlzLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENh
aXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMs
IHhPZmZzZXQsCi0gICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLAorICAgICAgICBz
dGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNo
YWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsCiAgICAgICAgIGZvbnRTbW9vdGhp
bmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAppbmRleCA1NjQ2MWMxNTlhNTgzYzg5
YzYxZThmMDJlNGUwYmVlN2IwNTkzMmVmLi43MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWEx
N2M1ZTFkNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAg
R3JhcGhpY3NDb250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCi0g
ICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0
YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNh
cCkgZmluYWw7CiAgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMzI0NWM2MDA0MzE1NTJkNTEzYjc0ZWViYzA5
ZjMxOGVlYzNkZDcyYS4uZjlmZWFiNGUyNmYyOTgzMzgxZGNkZGE0ZDU0YzUwYjc1MzhlNzg2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTg1LDEzICsxODUsMTQgQEAgc3RhdGljIHZvaWQgc2V0
Q0dCbGVuZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQpCisgICAgOiBHcmFwaGljc0NvbnRleHQoeyBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlN0cm9rZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25l
c3MgfSkKIHsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShjZ0NvbnRleHQpOwogICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4K
LSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
Q29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSB9KTsKKyAgICBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsKICAgICBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
PSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dDb250ZXh0R2V0SW50ZXJwb2xhdGlvblF1YWxp
dHkocGxhdGZvcm1Db250ZXh0KCkpKTsKIH0KIApAQCAtMzM4LDcgKzMzOSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0U2l6CiAjZW5kaWYKIAogICAgIGF1dG8gb2xkQ29tcG9zaXRlT3BlcmF0b3Ig
PSBjb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICBhdXRvIG9sZEJsZW5kTW9kZSA9IGJsZW5kTW9k
ZU9wZXJhdGlvbigpOworICAgIGF1dG8gb2xkQmxlbmRNb2RlID0gYmxlbmRNb2RlKCk7CiAgICAg
c2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRp
b25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8vIE1ha2UgdGhlIG9yaWdpbiBiZSBhdCBhZGp1c3Rl
ZERlc3RSZWN0LmxvY2F0aW9uKCkKQEAgLTU1NSwxMyArNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q0c6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIHsKLSAgICBpZiAoIW1fc3RhdGUu
c3Ryb2tlUGF0dGVybikKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAg
IEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVzZXJU
b0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3Rh
dGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwor
ICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gc3Ryb2tlUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9y
bVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNTc0LDEzICs1NzUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRD
Rzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlG
aWxsUGF0dGVybigpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmICgh
ZmlsbFBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNl
Q1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAg
ICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRm
b3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IGZp
bGxQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBp
ZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTEsMTEgKzU5Miwx
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0Nv
bnRleHRTZXRGaWxsUGF0dGVybihjZ0NvbnRleHQsIHBsYXRmb3JtUGF0dGVybi5nZXQoKSwgJnBh
dHRlcm5BbHBoYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9k
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENHUGF0aERyYXdpbmdNb2RlJiBt
b2RlKQorc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ0dQYXRoRHJhd2luZ01vZGUmIG1vZGUpCiB7Ci0gICAgYm9v
bCBzaG91bGRGaWxsID0gc3RhdGUuZmlsbFBhdHRlcm4gfHwgc3RhdGUuZmlsbENvbG9yLmlzVmlz
aWJsZSgpOwotICAgIGJvb2wgc2hvdWxkU3Ryb2tlID0gc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCAo
c3RhdGUuc3Ryb2tlU3R5bGUgIT0gTm9TdHJva2UgJiYgc3RhdGUuc3Ryb2tlQ29sb3IuaXNWaXNp
YmxlKCkpOwotICAgIGJvb2wgdXNlRU9GaWxsID0gc3RhdGUuZmlsbFJ1bGUgPT0gV2luZFJ1bGU6
OkV2ZW5PZGQ7CisgICAgYm9vbCBzaG91bGRGaWxsID0gY29udGV4dC5maWxsUGF0dGVybigpIHx8
IGNvbnRleHQuZmlsbENvbG9yKCkuaXNWaXNpYmxlKCk7CisgICAgYm9vbCBzaG91bGRTdHJva2Ug
PSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSB8fCAoY29udGV4dC5zdHJva2VTdHlsZSgpICE9IE5v
U3Ryb2tlICYmIGNvbnRleHQuc3Ryb2tlQ29sb3IoKS5pc1Zpc2libGUoKSk7CisgICAgYm9vbCB1
c2VFT0ZpbGwgPSBjb250ZXh0LmZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAKICAg
ICBpZiAoc2hvdWxkRmlsbCkgewogICAgICAgICBpZiAoc2hvdWxkU3Ryb2tlKSB7CkBAIC02MjQs
OSArNjI1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUgPSBt
X3N0YXRlOwogCi0gICAgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCB8fCBzdGF0ZS5zdHJva2VHcmFk
aWVudCkgeworICAgIGlmIChmaWxsR3JhZGllbnQoKSB8fCBzdHJva2VHcmFkaWVudCgpKSB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55IG9wdGltaXplZCB3YXkgdG8gZmlsbCAmIHN0cm9r
ZSBhIHBhdGggdXNpbmcgZ3JhZGllbnRzCiAgICAgICAgIC8vIEZJWE1FOiBCZSBzbWFydGVyIGFi
b3V0IHRoaXMuCiAgICAgICAgIGZpbGxQYXRoKHBhdGgpOwpAQCAtNjM0LDEzICs2MzQsMTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAo
ZmlsbFBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwotICAgIGlmIChzdGF0
ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5
U3Ryb2tlUGF0dGVybigpOwogCiAgICAgQ0dQYXRoRHJhd2luZ01vZGUgZHJhd2luZ01vZGU7Ci0g
ICAgaWYgKGNhbGN1bGF0ZURyYXdpbmdNb2RlKHN0YXRlLCBkcmF3aW5nTW9kZSkpIHsKKyAgICBp
ZiAoY2FsY3VsYXRlRHJhd2luZ01vZGUoKnRoaXMsIGRyYXdpbmdNb2RlKSkgewogI2lmIEhBVkUo
Q0dfQ09OVEVYVF9EUkFXX1BBVEhfRElSRUNUKQogICAgICAgICBDR0NvbnRleHREcmF3UGF0aERp
cmVjdChjb250ZXh0LCBkcmF3aW5nTW9kZSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVsbHB0cik7
CiAjZWxzZQpAQCAtNjU4LDcgKzY1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQ
YXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRm
b3JtQ29udGV4dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgaWYg
KGF1dG8gZmlsbEdyYWRpZW50ID0gdGhpcy0+ZmlsbEdyYWRpZW50KCkpIHsKICAgICAgICAgaWYg
KGhhc1NoYWRvdygpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFzdEJv
dW5kaW5nUmVjdCgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgp
Lm1hcFNpemUocmVjdC5zaXplKCkpOwpAQCAtNjcwLDMzICs2NzAsMzMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRleHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAg
ICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAg
Q0dDb250ZXh0QWRkUGF0aChsYXllckNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAg
ICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5
ZXJDb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAgICAg
aWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dD
b250ZXh0RU9DbGlwKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBtX3N0YXRl
LmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIGZpbGxHcmFk
aWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXll
ckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAg
Q0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dD
b250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGZpbGxHcmFkaWVu
dFNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5k
UnVsZTo6RXZlbk9kZCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0
KTsKIAotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAg
ICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlm
IChmaWxsUGF0dGVybigpKQogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7CiAjaWYgSEFWRShD
R19DT05URVhUX0RSQVdfUEFUSF9ESVJFQ1QpCiAgICAgQ0dDb250ZXh0RHJhd1BhdGhEaXJlY3Qo
Y29udGV4dCwgZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCA/IGtDR1BhdGhFT0ZpbGwg
OiBrQ0dQYXRoRmlsbCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVsbHB0cik7CkBAIC03MTcsNyAr
NzE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBw
YXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAot
ICAgIGlmIChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gc3Ryb2tlR3Jh
ZGllbnQgPSB0aGlzLT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3co
KSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RCb3VuZGluZ1JlY3Qo
KTsKICAgICAgICAgICAgIGZsb2F0IGxpbmVXaWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwpAQCAt
NzQyLDggKzc0Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3Qg
UGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJDb250ZXh0LCBw
YXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0
aFN0cm9rZWRQYXRoKGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxh
eWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0
LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9z
dGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENH
Q29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsK
IAogICAgICAgICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGlu
ZVdpZHRoKTsKICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0Lnko
KSAtIGxpbmVXaWR0aCk7CkBAIC03NTQsMTMgKzc1NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRB
ZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250
ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRDbGlwKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRl
eHRDb25jYXRDVE0oY29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAg
ICAgICAgICAgIHN0cm9rZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAg
aWYgKHN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICNp
ZiBVU0UoQ0dfQ09OVEVYVF9TVFJPS0VfTElORV9TRUdNRU5UU19XSEVOX1NUUk9LSU5HX1BBVEgp
CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZv
cm1Db250ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICBpZiAo
YXV0byBmaWxsR3JhZGllbnQgPSB0aGlzLT5maWxsR3JhZGllbnQoKSkgewogICAgICAgICBDR0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgIGlmIChoYXNTaGFk
b3coKSkgewogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNp
emUocmVjdC5zaXplKCkpOwpAQCAtNzk4LDE4ICs3OTgsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAgICAgQ0dDb250
ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xp
cChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJD
b250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAg
IG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAg
ICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIu
Z2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0
LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0oY29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAg
ICBmaWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0
ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKIAogICAgIGJvb2wgZHJhd093blNo
YWRvdyA9IGNhblVzZVNoYWRvd0JsdXIoKTsKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIC8v
IFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xv
cihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93
Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAg
Y29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0
KSk7CiAgICAgfQogCkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAg
ICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dp
dGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAg
U2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNv
bnRleHRTaGFkb3coZHJvcFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAg
ICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVkUmVj
dChyZWN0KSk7CiAgICAgfQogCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBj
b25zdAogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRT
ZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwog
Ci0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIHJlY3Qp
OwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZp
bGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QKICAg
ICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0LnJhZGlpKCk7CiAg
ICAgYm9vbCBlcXVhbFdpZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgoKSA9PSByYWRpaS50
b3BSaWdodCgpLndpZHRoKCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpID09IHJhZGlpLmJv
dHRvbUxlZnQoKS53aWR0aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpID09IHJhZGlp
LmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CiAgICAgYm9vbCBlcXVhbEhlaWdodHMgPSAocmFkaWku
dG9wTGVmdCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAmJiByYWRp
aS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSAmJiBy
YWRpaS50b3BSaWdodCgpLmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkp
OwotICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3Rh
dGUuZmlsbFBhdHRlcm47CisgICAgYm9vbCBoYXNDdXN0b21GaWxsID0gZmlsbEdyYWRpZW50KCkg
fHwgZmlsbFBhdHRlcm4oKTsKICAgICBpZiAoIWhhc0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMg
JiYgZXF1YWxIZWlnaHRzICYmIHJhZGlpLnRvcExlZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRo
KCkgJiYgcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICogMiA9PSByLmhlaWdodCgpKQogICAgICAg
ICBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdChjb250ZXh0LCByKTsKICAgICBlbHNlIHsKQEAg
LTkxNSw3ICs5MTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsbwogICAgICAgICAvLyBUdXJu
IG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxh
dGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIg
Y29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93
KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRl
eHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QpOwog
ICAgIH0KIApAQCAtOTg5LDYgKzk4OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIG9w
YWNpdHkpOwogICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCwgMCk7
CisgICAgCisgICAgbV9zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9k
YXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9
CiAKQEAgLTEwMDIsMTcgKzEwMDQsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKQogICAgIHJlc3RvcmUoKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlT
aGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0KQorc3RhdGljIHZvaWQgYXBw
bHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENH
RmxvYXQmIHhPZmZzZXQsIENHRmxvYXQmIHlPZmZzZXQpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgUExBVEZPUk0oV0lOKQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBV
TlVTRURfUEFSQU0oeE9mZnNldCk7CiAgICAgVU5VU0VEX1BBUkFNKHlPZmZzZXQpOwogI2Vsc2UK
LSAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxl
cmF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3Jy
ZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dD
b250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS81NTM5Mzg4PiBieSBl
bnN1cmluZyB0aGF0IHRoZSBvZmZzZXRzIHdpbGwgZ2V0IHRydW5jYXRlZApAQCAtMTAzMCwxMCAr
MTAyOSw4IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVk
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi1zdGF0aWMgdm9p
ZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikKK3N0
YXRpYyB2b2lkIHNldENHU2hhZG93KENHQ29udGV4dFJlZiBjb250ZXh0LCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYgY29sb3IsIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7Ci0gICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0K
ICAgICBpZiAob2Zmc2V0LmlzWmVybygpICYmICFibHVyKSB7CiAgICAgICAgIENHQ29udGV4dFNl
dFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA0NSw3ICsxMDQyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICBD
R0Zsb2F0IHlPZmZzZXQgPSBvZmZzZXQuaGVpZ2h0KCk7CiAgICAgQ0dGbG9hdCBibHVyUmFkaXVz
ID0gYmx1cjsKIAotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkpIHsKKyAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7CiAgICAgICAgIENH
QWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBnZXRVc2VyVG9CYXNlQ1RNKGNvbnRleHQp
OwogCiAgICAgICAgIENHRmxvYXQgQSA9IHVzZXJUb0Jhc2VDVE0uYSAqIHVzZXJUb0Jhc2VDVE0u
YSArIHVzZXJUb0Jhc2VDVE0uYiAqIHVzZXJUb0Jhc2VDVE0uYjsKQEAgLTEwNjYsNyArMTA2Myw4
IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgLy8gRXh0cmVtZSAiYmx1ciIgdmFsdWVz
IGNhbiBtYWtlIHRleHQgZHJhd2luZyBjcmFzaCBvciB0YWtlIGNyYXp5IGxvbmcgdGltZXMsIHNv
IGNsYW1wCiAgICAgYmx1clJhZGl1cyA9IHN0ZDo6bWluKGJsdXJSYWRpdXMsIG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdCgxMDAwLjApKTsKIAotICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3Vu
ZElmTmVlZGVkKGdyYXBoaWNzQ29udGV4dCwgeE9mZnNldCwgeU9mZnNldCk7CisgICAgaWYgKHJl
bmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGFwcGx5
U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnRleHQsIHhPZmZzZXQsIHlPZmZzZXQp
OwogCiAgICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgY29sb3IsIGFzIHRoaXMgbWVhbnMgdGhh
dCB0aGUgY29sb3Igd2FzIG5vdCBzZXQgZm9yIHRoZSBzaGFkb3cKICAgICAvLyBhbmQgd2Ugc2hv
dWxkIHRoZXJlZm9yZSBqdXN0IHVzZSB0aGUgZGVmYXVsdCBzaGFkb3cgY29sb3IuCkBAIC0xMDc2
LDM5ICsxMDc0LDYxIEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgICAgIENHQ29udGV4
dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQp
LCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUpCiB7CisgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQot
ICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICBmb3IgKGF1dG8gY2hhbmdlIDogc3RhdGUuY2hhbmdl
cygpKSB7CisgICAgICAgIHN3aXRjaCAoY2hhbmdlKSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoOgorICAgICAgICAgICAgc2V0Q0dGaWxsQ29s
b3IoY29udGV4dCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCkpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlj
a25lc3M6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjpt
YXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2g6Cisg
ICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNo
ZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpLmdldCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENv
bG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tlQ29sb3IpLmdldCgpKTsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgor
ICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5v
cGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
Q29sb3JDaGFuZ2UpKQotICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxs
Q29sb3IpOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BT
aGFkb3c6CisgICAgICAgICAgICBzZXRDR1NoYWRvdyhjb250ZXh0LCByZW5kZXJpbmdNb2RlKCks
IHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMsIHN0
YXRlLmRyb3BTaGFkb3cuY29sb3IsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQs
IHN0YXRlLmFscGhhKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpBbHBoYToKKyAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFs
cGhhKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgc2V0Q0dCbGVuZE1vZGUo
Y29udGV4dCwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSk7CisgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eToKKyAgICAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGNv
bnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSkpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIENHQ29u
dGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBjZ1RleHREcmF3aW5nTW9kZShzdGF0ZS50
ZXh0RHJhd2luZ01vZGUpKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpUZXh0RHJhd2luZ01vZGU6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7
CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0
U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzOgorICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3Vs
ZEFudGlhbGlhcyk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAg
ICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9v
dGhGb250cyk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hv
dWxkU21vb3RoRm9udHM6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250
cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7CisgICAgICAgICAgICBicmVhazsK
IAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRp
b25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpCi0gICAgICAgIHNldENHU2hhZG93KCp0aGlzLCBzdGF0
ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7
CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OnNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCkBAIC0xMTI1LDcgKzExNDUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgbGluZVdpZHRoKQogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250
ZXh0KCk7CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlmIChhdXRv
IHN0cm9rZUdyYWRpZW50ID0gdGhpcy0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICBpZiAo
aGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRvdWJsZUxpbmVXaWR0aCA9
IGxpbmVXaWR0aCAqIDI7CiAgICAgICAgICAgICBmbG9hdCBhZGp1c3RlZFdpZHRoID0gY2VpbGYo
cmVjdC53aWR0aCgpICsgZG91YmxlTGluZVdpZHRoKTsKQEAgLTExNDksOCArMTE2OSw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4
dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0
aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQp
OwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25j
YXRDVE0obGF5ZXJDb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAg
ICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAKICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0
aCk7CiAgICAgICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55
KCkgLSBsaW5lV2lkdGgpOwpAQCAtMTE2MSwxMyArMTE4MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRo
KQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAg
ICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShjb250ZXh0LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAg
ICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VQYXR0
ZXJuKQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVy
bigpOwogCiAgICAgLy8gVXNpbmcgQ0dDb250ZXh0QWRkUmVjdCBhbmQgQ0dDb250ZXh0U3Ryb2tl
UGF0aCB0byBzdHJva2UgcmVjdCByYXRoZXIgdGhhbgpAQCAtMTQyMiw3ICsxNDQyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKGNvbnN0IEZs
b2F0UmVjdCYgZWxsaXBzZSkKIHsKICAgICAvLyBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdCBv
bmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KLSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQg
fHwgbV9zdGF0ZS5maWxsUGF0dGVybikgeworICAgIGlmIChmaWxsR3JhZGllbnQoKSB8fCBmaWxs
UGF0dGVybigpKSB7CiAgICAgICAgIGZpbGxFbGxpcHNlQXNQYXRoKGVsbGlwc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTQzNCw3ICsxNDU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6c3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB7CiAg
ICAgLy8gQ0dDb250ZXh0U3Ryb2tlRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNv
bG9ycy4KLSAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCB8fCBtX3N0YXRlLnN0cm9rZVBh
dHRlcm4pIHsKKyAgICBpZiAoc3Ryb2tlR3JhZGllbnQoKSB8fCBzdHJva2VQYXR0ZXJuKCkpIHsK
ICAgICAgICAgc3Ryb2tlRWxsaXBzZUFzUGF0aChlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5oCmluZGV4IDYwM2IwZTkzNmVmYjUyOGNhYzNkN2FkYzg2NmU5OTU3
ZWUzMGViZWMuLmExYTI2YmZkMjg0ZDg0NDYzZWMyMGZiMDE0ZmEzMzY5Yzg4Yzk5NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9y
dHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250
ZXh0U3RhdGUmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Vc2VTaGFkb3dCbHVyKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApp
bmRleCBlZmJjMWU0OTU0NDFiZWRlNzM0ZTk0OGRkMjZkMzcxNDQxNjU1M2UwLi5kMGJlYzhkNjM4
NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC05Niw1MiArOTYsMjQgQEAgRHJhd0dseXBoc1Jl
Y29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25z
dHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIG1f
b3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBjb250ZXh0U3RhdGUuZmlsbENvbG9yOwot
ICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUuZmls
bEdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRTcGFjZVRy
YW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBt
X29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuZmlsbFBhdHRl
cm47Ci0KLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBjb250ZXh0U3Rh
dGUuc3Ryb2tlQ29sb3I7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50
ID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJv
a2VTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRl
cm4gPSBjb250ZXh0U3RhdGUuc3Ryb2tlUGF0dGVybjsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmls
bEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxCcnVzaDsKKyAgICBtX29yaWdpbmFsU3RhdGUuc3Ry
b2tlQnJ1c2ggPSBjb250ZXh0U3RhdGUuc3Ryb2tlQnJ1c2g7CiAKICAgICBtX29yaWdpbmFsU3Rh
dGUuY3RtID0gbV9vd25lci5nZXRDVE0oKTsgLy8gRklYTUU6IERlYWwgd2l0aCBiYXNlIENUTS4K
IAotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0ID0gY29udGV4dFN0YXRlLnNoYWRv
d09mZnNldDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIgPSBjb250ZXh0U3RhdGUu
c2hhZG93Qmx1cjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yID0gY29udGV4dFN0
YXRlLnNoYWRvd0NvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNm
b3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLQotICAgIG1fY3Vy
cmVudFN0YXRlID0gbV9vcmlnaW5hbFN0YXRlOworICAgIG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hh
ZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFkb3c7CisgICAgbV9vcmlnaW5hbFN0YXRlLmlnbm9y
ZVRyYW5zZm9ybXMgPSBjb250ZXh0U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiB9CiAK
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsQ29udGV4dChjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIGlmIChtX29yaWdpbmFs
U3RhdGUuZmlsbFN0eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRl
eHQtPnNldEZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yKTsKLSAgICBl
bHNlIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50KQotICAgICAgICBtX2lu
dGVybmFsQ29udGV4dC0+c2V0RmlsbEdyYWRpZW50KCptX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHls
ZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVy
bikKLSAgICAgICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsUGF0dGVybigqbV9vcmln
aW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAobV9vcmlnaW5h
bFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldFN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcik7
Ci0gICAgZWxzZSBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50KQotICAg
ICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0
ZS5zdHJva2VTdHlsZS5ncmFkaWVudCwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9vcmlnaW5h
bFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pOwotICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRl
LnN0cm9rZVN0eWxlLnBhdHRlcm4pCi0gICAgICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0
U3Ryb2tlUGF0dGVybigqbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pOwotICAg
IH0KKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbEJydXNoKG1fb3JpZ2luYWxTdGF0ZS5m
aWxsQnJ1c2gpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VCcnVzaChtX29yaWdp
bmFsU3RhdGUuc3Ryb2tlQnJ1c2gpOwogCiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldENUTSht
X29yaWdpbmFsU3RhdGUuY3RtKTsKIAotICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMp
OwotICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNoYWRv
dy5vZmZzZXQsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRlLnNo
YWRvdy5jb2xvciwgY29udGV4dFN0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworICAgIG1faW50ZXJu
YWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuaWdu
b3JlVHJhbnNmb3Jtcyk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldERyb3BTaGFkb3cobV9v
cmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRl
eHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKTsKIH0KQEAgLTE2NSw5
NSArMTM3LDM5IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJlSW50ZXJuYWxDb250
ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9vdGhpbmdNCiB2b2lkIERyYXdHbHlwaHNSZWNv
cmRlcjo6Y29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKQogewogICAgIHVwZGF0ZUNUTShtX29yaWdp
bmFsU3RhdGUuY3RtKTsKLSAgICB1cGRhdGVGaWxsQ29sb3IobV9vcmlnaW5hbFN0YXRlLmZpbGxT
dHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudC5nZXQoKSwgbV9v
cmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuLmdldCgpKTsKLSAgICB1cGRhdGVTdHJva2VD
b2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5z
dHJva2VTdHlsZS5ncmFkaWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBh
dHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVNoYWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9m
ZnNldCwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93
LmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPyBTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtczo6WWVzIDogU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Ok5vKTsKKyAg
ICB1cGRhdGVGaWxsQnJ1c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCk7CisgICAgdXBkYXRl
U3Ryb2tlQnJ1c2gobV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJydXNoKTsKKyAgICB1cGRhdGVTaGFk
b3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3csIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFu
c2Zvcm1zID8gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcyA6IFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOjpObyk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQsIFBhdHRlcm4q
IG5ld1BhdHRlcm4pCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbEJydXNoKGNv
bnN0IFNvdXJjZUJydXNoJiBuZXdCcnVzaCkKIHsKLSAgICAvLyBUaGlzIGNoZWNrIGxvb2tzIHdy
b25nIGJ1dCBpdCBhY3R1YWxseSBpc24ndCwgZm9yIG91ciBsaW1pdGVkIHVzZS4KLSAgICAvLyBD
VCB3aWxsIG9ubHkgZXZlciBzZXQgdGhpcyB0byBhIHNvbGlkIGNvbG9yLCB3aGljaCB0aGlzIGlz
IHRoZSBjb3JyZWN0IGNoZWNrIGZvci4KLSAgICAvLyBJbiBjb25jbHVkZUludGVybmFsQ29udGV4
dCgpIHdlIHNldCBpdCBiYWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdpbmFsbHksIHdoaWNoIHRoaXMg
Y2hlY2sgd29ya3MgY29ycmVjdGx5IGZvciB0b28uCi0gICAgaWYgKG5ld0NvbG9yID09IG1fY3Vy
cmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUuZmlsbENvbG9yID0gbmV3Q29s
b3I7Ci0gICAgaWYgKG5ld0dyYWRpZW50KQotICAgICAgICBuZXdTdGF0ZS5maWxsR3JhZGllbnQg
PSBuZXdHcmFkaWVudDsKLSAgICBpZiAobmV3UGF0dGVybikKLSAgICAgICAgbmV3U3RhdGUuZmls
bFBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3Rh
dGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSB9KTsKLSAgICBtX2N1
cnJlbnRTdGF0ZS5maWxsU3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKKyAgICBtX293bmVyLnNldEZp
bGxCcnVzaChuZXdCcnVzaCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVT
dHJva2VDb2xvcihjb25zdCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmFkaWVudCwg
UGF0dGVybiogbmV3UGF0dGVybikKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJv
a2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgbmV3QnJ1c2gpCiB7Ci0gICAgLy8gVGhpcyBjaGVj
ayBsb29rcyB3cm9uZyBidXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2Uu
Ci0gICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hp
Y2ggdGhpcyBpcyB0aGUgY29ycmVjdCBjaGVjayBmb3IuCi0gICAgLy8gSW4gY29uY2x1ZGVJbnRl
cm5hbENvbnRleHQoKSB3ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3
aGljaCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJlY3RseSBmb3IgdG9vLgotICAgIGlmIChuZXdDb2xv
ciA9PSBtX2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUuc3Ryb2tl
Q29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQpCi0gICAgICAgIG5ld1N0YXRl
LnN0cm9rZUdyYWRpZW50ID0gbmV3R3JhZGllbnQ7Ci0gICAgaWYgKG5ld1BhdHRlcm4pCi0gICAg
ICAgIG5ld1N0YXRlLnN0cm9rZVBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIuZGlk
VXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gbmV3Q29s
b3I7CisgICAgbV9vd25lci5zZXRTdHJva2VCcnVzaChuZXdCcnVzaCk7CiB9CiAKIHZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjp1cGRhdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0pCiB7
Ci0gICAgaWYgKGN0bSA9PSBtX2N1cnJlbnRTdGF0ZS5jdG0pCisgICAgaWYgKG1fb3duZXIuZ2V0
Q1RNKCkgPT0gY3RtKQogICAgICAgICByZXR1cm47Ci0KICAgICBtX293bmVyLnNldENUTShjdG0p
OwotICAgIG1fY3VycmVudFN0YXRlLmN0bSA9IGN0bTsKIH0KIAotc3RhdGljIGJvb2wgc2hhZG93
SXNDbGVhcmVkKGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVy
KQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93
JiBkcm9wU2hhZG93LCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcykKIHsKLSAgICByZXR1cm4gc2hhZG93T2Zmc2V0ID09IEZsb2F0U2l6ZSgpICYmICFzaGFk
b3dCbHVyOwotfQotCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0
IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYg
c2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKQotewotICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMgaWYgbm9ib2R5IGhhcyBhbnkgc2hhZG93cy4KLSAgICBpZiAoc2hhZG93SXNDbGVh
cmVkKHNoYWRvd09mZnNldCwgc2hhZG93Qmx1cikgJiYgc2hhZG93SXNDbGVhcmVkKG1fY3VycmVu
dFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mgc3RhdGVDaGFuZ2VGbGFnczsKLQot
ICAgIGlmIChzaGFkb3dPZmZzZXQgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCB8fCBz
aGFkb3dCbHVyICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyIHx8IHNoYWRvd0NvbG9yICE9
IG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xvcikgewotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dP
ZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd0JsdXIgPSBzaGFk
b3dCbHVyOwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dDb2xvciA9IHNoYWRvd0NvbG9yOwotICAg
ICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hh
bmdlKTsKLSAgICB9Ci0gICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICE9IFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCAmJiAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMg
PT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6OlllcykgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93
Lmlnbm9yZVRyYW5zZm9ybXMpIHsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXM6Olllcyk7Ci0gICAgICAgIHN0YXRlQ2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7Ci0gICAgfQotICAgIGlmIChzdGF0
ZUNoYW5nZUZsYWdzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fb3duZXIuZGlk
VXBkYXRlU3RhdGUobmV3U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOwotCi0gICAgbV9jdXJyZW50
U3RhdGUuc2hhZG93Lm9mZnNldCA9IHNoYWRvd09mZnNldDsKLSAgICBtX2N1cnJlbnRTdGF0ZS5z
aGFkb3cuYmx1ciA9IHNoYWRvd0JsdXI7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmNvbG9y
ID0gc2hhZG93Q29sb3I7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9y
bXMgPSAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6
Olllcyk7CisgICAgbV9vd25lci5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cpOworICAgIG1fb3du
ZXIuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0g
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjp1cGRhdGVTaGFkb3coQ0dTdHlsZVJlZiBzdHlsZSkKIHsKICAgICBpZiAoQ0dTdHlsZUdl
dFR5cGUoc3R5bGUpICE9IGtDR1N0eWxlU2hhZG93KSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IG1vcmUga2luZHMgb2YgQ0dTdHlsZXMuCi0gICAgICAgIHVwZGF0ZVNoYWRvdyh7MCwgMH0s
IDAsIENvbG9yKCksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCk7CisgICAg
ICAgIHVwZGF0ZVNoYWRvdyh7IH0sIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmll
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2MSw3ICsxNzcsNyBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KENHU3R5bGVSZWYgc3R5bGUpCiAgICAgYXV0
byByYWQgPSBkZWcycmFkKHNoYWRvd1N0eWxlLmF6aW11dGggLSAxODApOwogICAgIGF1dG8gc2hh
ZG93T2Zmc2V0ID0gRmxvYXRTaXplKHN0ZDo6Y29zKHJhZCksIHN0ZDo6c2luKHJhZCkpICogc2hh
ZG93U3R5bGUuaGVpZ2h0OwogICAgIGF1dG8gc2hhZG93Q29sb3IgPSBDR1N0eWxlR2V0Q29sb3Io
c3R5bGUpOwotICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1N0eWxlLnJhZGl1
cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xvciksIFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgIHVwZGF0ZVNoYWRvdyh7IHNoYWRvd09mZnNl
dCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRvd1N0eWxlLnJhZGl1cyksIENvbG9yOjpjcmVhdGVB
bmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3IpIH0sIFNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkQmVnaW5MYXll
cihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENHUmVjdCkKQEAgLTMy
OCw4ICsyNDQsOCBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhD
R1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdAogCiAgICAgYXV0byBmaWxsQ29s
b3IgPSBDR0dTdGF0ZUdldEZpbGxDb2xvcihnc3RhdGUpOwogICAgIGF1dG8gc3Ryb2tlQ29sb3Ig
PSBDR0dTdGF0ZUdldFN0cm9rZUNvbG9yKGdzdGF0ZSk7Ci0gICAgdXBkYXRlRmlsbENvbG9yKENv
bG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7Ci0gICAgdXBkYXRl
U3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xv
cikpOworICAgIHVwZGF0ZUZpbGxCcnVzaChDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNw
YWNlKGZpbGxDb2xvcikpOworICAgIHVwZGF0ZVN0cm9rZUJydXNoKENvbG9yOjpjcmVhdGVBbmRQ
cmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKICAgICB1cGRhdGVTaGFkb3coQ0dHU3Rh
dGVHZXRTdHlsZShnc3RhdGUpKTsKIAogICAgIGF1dG8gZm9udFNpemUgPSBDR0dTdGF0ZUdldEZv
bnRTaXplKGdzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyZTJmNGY0ZjJj
YjU1ZDM2NWU1YWUzOTkzMjVkMDVmMmMxNzM2MWZkLi4yYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0
NGFlYjFlZGZkZTFjODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDEwICs5
MCw3IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6
OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYg
c3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTog
Zm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFn
cyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRl
Q2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3Mg
PT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5n
ZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDIzZDBiYmNjNzFjMjgxYzUy
YzM1YThjMjUyZGE5NmMwYWIxMmE5OGMuLmI2NmM4NDhhMzNiZGQ5MjM2MGZlYTg1MzM3ZmFiNWRi
MmQyZDAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE0OCwy
NCArMTQ4LDE5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmIHN0YXRlKQogICAgIHJldHVybiB0czsKIH0KIAot
U2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0YXRl
Q2hhbmdlKHN0YXRlLCBmbGFncykKLXsKLX0KLQotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKLSAgICA6IG1fc3RhdGVDaGFu
Z2Uoc3RhdGVDaGFuZ2UpCitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQorICAgIDogbV9zdGF0ZShzdGF0ZSkKIHsKIH0KIAogdm9pZCBTZXRTdGF0
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIG1fc3RhdGVDaGFuZ2Uu
YXBwbHkoY29udGV4dCk7CisgICAgY29udGV4dC51cGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAot
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0
YXRlJiBzdGF0ZSkKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKIHsKLSAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNoYW5nZSgp
OworICAgIHRzIDw8IGl0ZW0uc3RhdGUoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDk3Y2I1ZmM4ZDA0YmE4NjYyYjcyYzdkZGVlYmM0
NDE1NWMyODI1YjcuLjk2OTRkNjhkMTVlOThkNTY3ZDM4ZDNhYzliMmMwOTlmMzBkMGE1YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjQ3LDEwICsyNDcsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCi0gICAgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNo
YW5nZTsgfQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIHsg
cmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7
CkBAIC0yNTgsMjg4ICsyNTcsMjQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKLQotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGUgbV9zdGF0ZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0
YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGNoYW5nZUZs
YWdzID0gbV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzOwotICAgIGVuY29kZXIgPDwgY2hhbmdl
RmxhZ3M7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZTsKLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3Jh
ZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VHcmFkaWVudCk7Ci0g
ICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIH0KLQotICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSkpIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAg
ICBlbmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdl
KSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuZmlsbEdyYWRpZW50KTsKLSAgICAgICAgZW5jb2Rl
ciA8PCAqc3RhdGUuZmlsbEdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAg
ICAgIEFTU0VSVChzdGF0ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRl
LmZpbGxQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBlbmNvZGVyIDw8IHN0
YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dCbHVyOwot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAo
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VDb2xvcjsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5maWxsQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkK
LSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxSdWxlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwotCi0gICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmJsZW5kTW9kZTsKLQotICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmFscGhhOwotCi0g
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRB
bnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZEFudGlhbGlh
czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3Vs
ZFNtb290aEZvbnRzOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOworICAgIGVuY29kZXIgPDwgbV9zdGF0ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KIHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzPiBjaGFuZ2VGbGFnczsKLSAgICBkZWNvZGVyID4+IGNoYW5nZUZsYWdz
OwotICAgIGlmICghY2hhbmdlRmxhZ3MpCisgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRl
eHRTdGF0ZT4gc3RhdGU7CisgICAgZGVjb2RlciA+PiBzdGF0ZTsKKyAgICBpZiAoIXN0YXRlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2Ugc3RhdGVDaGFuZ2U7Ci0gICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFu
Z2VGbGFnczsKLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAgYXV0
byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlm
ICghc3Ryb2tlR3JhZGllbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKCpzdHJv
a2VHcmFkaWVudCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7Ci0g
ICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAg
ICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3Zl
KCpzdHJva2VQYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkg
ewotICAgICAgICBhdXRvIGZpbGxHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7
Ci0gICAgICAgIGlmICghZmlsbEdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1v
dmUoKmZpbGxHcmFkaWVudCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkg
ewotICAgICAgICBhdXRvIGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOwot
ICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZSgq
ZmlsbFBhdHRlcm4pOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIGRlY29kZXIg
Pj4gc2hhZG93T2Zmc2V0OwotICAgICAgICBpZiAoIXNoYWRvd09mZnNldCkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFk
b3dPZmZzZXQgPSAqc2hhZG93T2Zmc2V0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IHNoYWRvd0JsdXI7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93Qmx1cjsKLSAgICAgICAgaWYg
KCFzaGFkb3dCbHVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKLQotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzaGFkb3dDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBz
aGFkb3dDb2xvcjsKLSAgICAgICAgaWYgKCFzaGFkb3dDb2xvcikKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xv
ciA9ICpzaGFkb3dDb2xvcjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFNoYWRvd1JhZGl1c01v
ZGU+IHNoYWRvd1JhZGl1c01vZGU7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93UmFkaXVzTW9k
ZTsKLSAgICAgICAgaWYgKCFzaGFkb3dSYWRpdXNNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd1JhZGl1c01v
ZGUgPSBXVEZNb3ZlKCpzaGFkb3dSYWRpdXNNb2RlKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
VGhpY2tuZXNzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzdHJva2VU
aGlja25lc3M7Ci0gICAgICAgIGRlY29kZXIgPj4gc3Ryb2tlVGhpY2tuZXNzOwotICAgICAgICBp
ZiAoIXN0cm9rZVRoaWNrbmVzcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSAqc3Ryb2tlVGhp
Y2tuZXNzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKSB7Ci0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsK
LSAgICAgICAgZGVjb2RlciA+PiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAgIGlmICghdGV4dERy
YXdpbmdNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IFdURk1vdmUoKnRleHREcmF3aW5n
TW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPENvbG9yPiBzdHJva2VDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzdHJv
a2VDb2xvcjsKLSAgICAgICAgaWYgKCFzdHJva2VDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9
ICpzdHJva2VDb2xvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4g
ZmlsbENvbG9yOwotICAgICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAq
ZmlsbENvbG9yOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpIHsKLSAgICAg
ICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdpbmRS
dWxlPiBmaWxsUnVsZTsKLSAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKLSAgICAgICAgaWYg
KCFmaWxsUnVsZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUnVsZSA9ICpmaWxsUnVsZTsKLSAgICB9Ci0KLSAgICBp
ZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENv
bXBvc2l0ZU9wZXJhdG9yPiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgZGVjb2RlciA+PiBj
b21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgaWYgKCFjb21wb3NpdGVPcGVyYXRvcikKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5jb21wb3NpdGVPcGVyYXRvciA9ICpjb21wb3NpdGVPcGVyYXRvcjsKLSAgICB9Ci0KLSAgICBp
ZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6QmxlbmRNb2RlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4g
YmxlbmRNb2RlOwotICAgICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKLSAgICAgICAgaWYgKCFi
bGVuZE1vZGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuYmxlbmRNb2RlID0gKmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBp
ZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAg
ICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgICAgICBpZiAo
IWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSA9ICppbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgIH0KLQotICAgIGlmIChzdGF0
ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBo
YUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGE7Ci0gICAgICAg
IGRlY29kZXIgPj4gYWxwaGE7Ci0gICAgICAgIGlmICghYWxwaGEpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxwaGEgPSAq
YWxwaGE7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRBbnRpYWxpYXM7Ci0gICAgICAgIGRlY29kZXIg
Pj4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBpZiAoIXNob3VsZEFudGlhbGlhcykKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXMgPSAqc2hvdWxkQW50aWFsaWFzOwotICAgIH0KLQotICAgIGlmIChz
dGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBz
aG91bGRTbW9vdGhGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTbW9vdGhGb250czsK
LSAgICAgICAgaWYgKCFzaG91bGRTbW9vdGhGb250cykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250
cyA9ICpzaG91bGRTbW9vdGhGb250czsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHM7Ci0gICAgICAgIGlmICghc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5n
ZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hh
bmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAg
ICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgIH0KLQotICAgIHJldHVybiB7
IHsgc3RhdGVDaGFuZ2UgfSB9OworICAgIHJldHVybiBTZXRTdGF0ZSgqc3RhdGUpOwogfQogCiBj
bGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAppbmRleCBlZWU0NDcxZDM1NGU3NTE1MzEyNTE4OWRmY2M5NDE4YTM5NDUxNGExLi5hZTRhYTUw
ZGU1YjhkYjY5YTEzMWNhNzZjNjgxZjBkNmEyNzY3OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01Myw0NSArNTMsMzQgQEAgUmVjb3JkZXI6On5SZWNv
cmRlcigpCiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMg
ZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KIH0KIAotc3RhdGlj
IGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBpbmxpbmVTdGF0ZUNoYW5n
ZUZsYWdzIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSwKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLAot
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLAotICAgIH07Ci0K
LSAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lU3RhdGVDaGFuZ2VG
bGFncykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpICYmICFjaGFuZ2Vz
Lm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBBU1NFUlQoc3RhdGUuY2hhbmdlcygpKTsKKyAgICAKKyAgICBpZiAoc3Rh
dGUuaGFzT25seVByaW1pdGl2ZUNoYW5nZXMoKSkgeworICAgICAgICBpZiAoc3RhdGUuY2hhbmdl
cygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCkpCisg
ICAgICAgICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmZpbGxDb2xvcigpLnRyeUdldEFz
U1JHQkFCeXRlcygpKTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xv
ci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlN0cm9rZUJydXNoKSkKKyAgICAgICAgICAgIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpz
dHJva2VDb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIHJldHVybiB0cnVlOwot
fQorICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCisgICAgICAgICAgICByZWNvcmRTZXRTdHJv
a2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKCkpOwogCi12b2lkIFJlY29yZGVyOjphcHBlbmRT
dGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQotewot
ICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNoYW5nZUZs
YWdzKSkgewotICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLnN0cm9r
ZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1h
Z2UoKSk7Ci0gICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuZmlsbFBh
dHRlcm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2Uo
KSk7Ci0gICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3Mp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29y
ZFNldElubGluZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0
QXNTUkdCQUJ5dGVzKCkpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBw
YXR0ZXJuID0gZmlsbFBhdHRlcm4oKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBh
dHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAg
IHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZUJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gc3Ry
b2tlUGF0dGVybigpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGls
ZUltYWdlKCkpOworICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5l
RmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygp
KTsKKyAgICByZWNvcmRTZXRTdGF0ZShzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKQEAgLTk5LDI1ICs4OCwyNSBAQCB2b2lkIFJl
Y29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgY3VycmVudGx5IGludm9rZWQgaW4gYW4gYWQtaG9jIG1hbm5lciB3aGVuIHJlY29y
ZGluZyBkcmF3aW5nIGl0ZW1zLiBXZSBzaG91bGQgY29uc2lkZXIgZWl0aGVyCiAgICAgLy8gc3Bs
aXR0aW5nIEdyYXBoaWNzQ29udGV4dCBzdGF0ZSBjaGFuZ2VzIGludG8gaW5kaXZpZHVhbCBkaXNw
bGF5IGxpc3QgaXRlbXMsIG9yIHJlZmFjdG9yaW5nIHRoZSBjb2RlIHN1Y2ggdGhhdAogICAgIC8v
IHRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgaW52b2tlZCB3aGVuIHJlY29yZGluZyBhIGRy
YXdpbmcgaXRlbS4KLSAgICBhdXRvJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0
ZUNoYW5nZTsKLSAgICBhdXRvIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNo
YW5nZXNGcm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0gICAgaWYg
KCFjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkKKyAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgp
LnN0YXRlOworICAgIGlmICghc3RhdGUuY2hhbmdlcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBz
YXZpbmcgc3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMu
bV9zdGF0ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKLSAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW0oc3RhdGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgc3RhdGVDaGFuZ2Vz
Lm1fY2hhbmdlRmxhZ3MgPSB7IH07Ci0gICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0
ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IHN0YXRlKTsKKyAg
ICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdl
cygpOworICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZTsKIH0KIAog
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIFJlY29yZGVyOjpzdGF0ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAgcmV0dXJu
IGN1cnJlbnRTdGF0ZSgpLnN0YXRlOwogfQogCi12b2lkIFJlY29yZGVyOjpkaWRVcGRhdGVTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUo
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRl
Q2hhbmdlLmFjY3VtdWxhdGUoc3RhdGUsIGZsYWdzKTsKKyAgICBjdXJyZW50U3RhdGUoKS5zdGF0
ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwor
ICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5l
Q2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTIyMiwxMiArMjExLDE1IEBAIHZvaWQgUmVjb3JkZXI6
OmRyYXdQYXR0ZXJuKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwKIAogdm9pZCBSZWNvcmRlcjo6c2F2ZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0
OjpzYXZlKCk7CiAgICAgcmVjb3JkU2F2ZSgpOwotICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9z
dGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CisgICAgbV9zdGF0ZVN0YWNrLmFwcGVu
ZChtX3N0YXRlU3RhY2subGFzdCgpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCiB7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCk7CisKICAgICBpZiAoIW1fc3RhdGVTdGFj
ay5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc1LDE2ICsyNjcsMjQgQEAgQWZmaW5l
VHJhbnNmb3JtIFJlY29yZGVyOjpnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNl
U2NhbGUpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxv
YXQgb3BhY2l0eSkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIob3BhY2l0eSk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwog
ICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9zdGF0ZVN0
YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIo
KSk7CisgICAgCisgICAgbV9zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKKyAgICBHcmFwaGljc0Nv
bnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
bV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIG1fc3RhdGUuZGlkRW5kVHJhbnNwYXJl
bmN5TGF5ZXIoY3VycmVudFN0YXRlKCkuc3RhdGUuYWxwaGEpOwogfQogCiB2b2lkIFJlY29yZGVy
OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDg0NWVjMDA3NzJlZDJj
NTRhMWU2Y2IyNmIyMTUxZGFiYWE2ZWMwNzUuLmEyYTIyNjhlNWVkNWViNWMwYTljZmUzY2ZlZWJh
NzcwMWMyYWVmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAt
NjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldElubGlu
ZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRT
ZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRT
ZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29y
ZFNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKQEAgLTEzNSwz
MCArMTM1LDI1IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3VyY2VV
c2UoRm9udCYpID0gMDsKIAogICAgIHN0cnVjdCBDb250ZXh0U3RhdGUgeworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0Nv
bnRleHRTdGF0ZT4gbGFzdERyYXdpbmdTdGF0ZTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0
bTsKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBs
YXN0RHJhd2luZ1N0YXRlOwogCi0gICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFJlY3QmIGNsaXApCi0gICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCi0gICAgICAg
ICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKLSAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0ZShz
dGF0ZSkKKyAgICAgICAgQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcEJv
dW5kcykKKyAgICAgICAgICAgIDogc3RhdGUoc3RhdGUpCisgICAgICAgICAgICAsIGN0bShjdG0p
CisgICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcEJvdW5kcykKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yU2F2ZSgpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIENvbnRleHRTdGF0ZSBzdGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0s
IGNsaXBCb3VuZHMpOwotICAgICAgICAgICAgc3RhdGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5n
ZTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICAgICAgfQotCiAgICAgICAgIENvbnRl
eHRTdGF0ZSBjbG9uZUZvclRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QKICAgICAgICAgewotICAg
ICAgICAgICAgYXV0byBzdGF0ZSA9IGNsb25lRm9yU2F2ZSgpOwotICAgICAgICAgICAgc3RhdGUu
bGFzdERyYXdpbmdTdGF0ZS5hbHBoYSA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7Cisg
ICAgICAgICAgICBhdXRvIGNvcHkgPSAqdGhpczsKKyAgICAgICAgICAgIGNvcHkuc3RhdGUuZGlk
QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgaWYgKGNvcHkubGFzdERyYXdp
bmdTdGF0ZSkKKyAgICAgICAgICAgICAgICBjb3B5Lmxhc3REcmF3aW5nU3RhdGUtPmRpZEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHJldHVybiBjb3B5OwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CkBAIC0xODksNyAr
MTg0LDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zm
c2V0KSBmaW5hbDsKQEAgLTI3MCw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBo
aWNzQ29udGV4dDo6Um91bmRpbmdNb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKTsKKyAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0o
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAKaW5kZXggMWZkYzZiYTU2YmZkYjI2MzZlZmIzNDYyYWRhMmE5OTBkMzM4OTk0NS4uNjAwMTk4
MWYzZDZiNjc2ZTM1ODJhNjhlMGE1ZDBmOTIwOWNkNzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAg
ICAgYXBwZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4odGhpY2tuZXNzKTsKIH0KIAotdm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKQogewotICAgIGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUsIGNoYW5nZUZsYWdzKTsK
KyAgICBhcHBlbmQ8U2V0U3RhdGU+KHN0YXRlKTsKIH0KIAogdm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuaAppbmRleCA2NDIyNjVmMDk4MDIyY2YyYjA1ZjE4MGMxNzRmYTAz
NDYyZjJkZDQwLi5hYzJkMzE3OTY3NThjNjJjYzYxNTBhMTU0OWQ3YTA5NDA2ZWVmYWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVp
bnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JB
PHVpbnQ4X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9h
dCkgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgcmVj
b3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggOGZmMTlkMDAzNTRjZGJlZGUzYTVi
YTFhZjc1OGNmZjAyM2EyNWEyMi4uZjNjOGM5MGNkODhiYmUwYzUxZTFkNGZhMTMzYzUxZTgzYjgw
YjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtOTcs
MTAgKzk3LDEwIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfTsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBh
dHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5zdHJva2VQ
YXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJu
VGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkpCiAg
ICAgICAgIHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVu
dGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5t
X3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIg
PSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0
ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAogICAgIHNldFN0YXRl
SXRlbS5hcHBseShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggOTExNDZkZmM2ZmQ4NGRmOGUyOTU0ZjAz
NzdkMDA2NmE3NzIzM2NjOS4uMTQxNjlhMDc1NThkNjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4OGIw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcihQYWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQogICAg
IG1fc3RhdGVTdGFjay5hcHBlbmQoeyB7IH0sIHsgfSwgRmxvYXRSZWN0OjppbmZpbml0ZVJlY3Qo
KSB9KTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRV
cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkgeworICAgIGlm
IChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlVGhpY2tuZXNzKSkgewogICAgICAgICBzdHJ1Y3QgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
IGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8ZmxvYXQ+IHsKICAgICAg
ICAgICAgIHZpcnR1YWwgflN0cm9rZVRoaWNrbmVzc0NoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPFN0cm9rZVRoaWNrbmVzc0NoYW5nZT4oc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KSk7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZVN0eWxlQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpIHsKICAgICAgICAgc3RydWN0IFN0
cm9rZVN0eWxlQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
U3Ryb2tlU3R5bGU+IHsKICAgICAgICAgICAgIHZpcnR1YWwgflN0cm9rZVN0eWxlQ2hhbmdlKCkg
PSBkZWZhdWx0OwogCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcK
ICAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0
cm9rZVN0eWxlKSk7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCku
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpIHsK
ICAgICAgICAgc3RydWN0IENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSBmaW5hbCA6IFBhaW50aW5n
T3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU+IHsK
ICAgICAgICAgICAgIHZpcnR1YWwgfkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSgpID0gZGVmYXVs
dDsKIApAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
aWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21w
b3NpdGVPcGVyYXRpb25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVu
ZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlPihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9k
ZS5ibGVuZE1vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMpKSB7
CiAgICAgICAgIHN0cnVjdCBTaG91bGRBbnRpYWxpYXNDaGFuZ2UgZmluYWwgOiBQYWludGluZ09w
ZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxib29sPiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TaG91
bGRBbnRpYWxpYXNDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTE1NSw2ICsxNTUsOCBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgRwogCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3Vs
ZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CiAgICAgfQorCisgICAg
c3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6c2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCkBAIC0yOTIsNyArMjk0LDcgQEAgdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdy
YWRpZW50JiBncmFkaWVudCkKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0
ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5j
cmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pKSk7Cisg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBh
dHRlcm4oMS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMxNiw3ICszMTgsNyBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRl
KCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21w
b3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0
ZS5jb21wb3NpdGVPcGVyYXRvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0
PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24pKTsKIH0KIAogdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcm91bmRlZFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKQEAgLTM0Niw3ICszNDgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdAogICAgIH07
CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8RmlsbFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCwgY29sb3IsIHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBh
cHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwg
c3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC01MzMsNyArNTM1
LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSwgcG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250
LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSksCiAgICAgICAgIGZvbnQuc3ludGhldGljQm9s
ZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdp
bmdNb2RlLAotICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNl
dCwgc3RhdGUuc2hhZG93Q29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKKyAgICAgICAgc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5j
b2xvciwgZm9udFNtb290aGluZykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKQEAgLTU5OSw3ICs2MDEsNyBA
QCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRo
aXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJv
cmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUu
c3Ryb2tlQ29sb3IpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UmVjdD4ocmVjdCwg
Ym9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5
bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50MikKQEAgLTYyMiw3ICs2MjQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2lu
dAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0g
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5z
dHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3Rh
dGUuc2hvdWxkQW50aWFsaWFzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+
KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29s
b3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKIH0K
IAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhz
LCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVybGluZXMsIFN0cm9rZVN0eWxlKQpAQCAt
NjQ1LDcgKzY0Nyw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5n
LCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VDb2xvcikpOworICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJp
bnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0K
IAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBA
IC02ODQsNyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhp
cy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwg
c3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0
YXRlLnN0cm9rZVRoaWNrbmVzcykpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdFbGxp
cHNlPihyZWN0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0
YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0
aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4
IDgzYzZkMjdkNmVhMzZjNzliZWJkNzgyNWY5OWI3YzQzOTA4ZWU1NGIuLmI5NTI4NjMxMzQzMzAw
MmZhZTcyYmRlNDc4MGQzMjU2OGRjNTgxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRVcGRhdGVTdGF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBzZXRMaW5lQ2FwKFdlYkNvcmU6OkxpbmVDYXApIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0TGluZURhc2goY29uc3QgV2ViQ29yZTo6RGFzaEFycmF5JiwgZmxvYXQpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5k
ZXggN2VkNTM3YzkyNzkzNzcwZjQ0ODhhZTI5ZGY0MDcyN2Q3ZWIxYTNhOS4uNjE3OGFlYjFjODc2
Mzc3MjE5NWY5ZTQ0NzYxMGU0OTBlNzY0ZjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02OSw3ICs2OSw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJTVkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdAog
c3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIGlmIChhdXRvIGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQot
ICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQsIGNvbnRleHQuc3RhdGUo
KS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQoKmdyYWRpZW50LCBjb250ZXh0LnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgZWxzZSBpZiAoUGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ryb2tlUGF0dGVy
bigpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNTQzODE4MmRkZTg3NjNlYmFkMzhm
MTkyZGY3OTVhYTA2MGI2NTFiYi4uOWUzNzg2ZTBmZGNkYjg5ZmIwNjYyOGM4ZmNjNmRjODdiNzdj
M2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI4LDEwICsxMjgsMTAg
QEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShEaXNwbGF5TGlzdDo6
U2V0U3RhdGUmJiBpdGVtKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCi0gICAgaWYg
KCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBh
dHRlcm4uZ2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlKCku
ZmlsbEJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZml4UGF0
dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5nZXQo
KSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVz
aC5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBoYW5kbGVJdGVtKFdURk1vdmUo
aXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmlu
ZGV4IDg1NzdjYmJkZTZkMzkwMWQzNDcwNzYxZWQzMGY3OWQ5OGU4MmI5OGQuLjliYWY5YTM1Yzk3
MGY5Yjc1MTAzMDU2Y2I1YmQ3ODE2YWVjYWQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRo
aWNrbmVzcykKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpT
ZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKSk7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUgeyBz
dGF0ZSwgZmxhZ3MgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0YXRlIH0pKTsKIH0KIAog
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldExpbmVDYXAoTGlu
ZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgK
aW5kZXggOWIzM2EwNjdmZDE2YmNjZjE0MDQyYzE5NzRkZDY5MTk0MjI2MjQ2OC4uYmVkMzYzZTA2
MjQ1MzUyN2Y5YTA2MjA4OGNlNjc3YzJiOTkyMjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWludDhfdD4pIGZpbmFs
OwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWlu
dDhfdD4pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSBm
aW5hbDsKLSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVDYXAoV2ViQ29y
ZTo6TGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChjb25zdCBXZWJD
b3JlOjpEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIHJlY29y
ZFNldExpbmVKb2luKFdlYkNvcmU6OkxpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTY2YTUzOWM3MTJjNGM3NGVlNjZk
NDYxNjVkZjI0YmMxN2Y5ZThjLi5lMzNlN2MwNDZiOGYxMDRlZDFhNDJmZTA2OTlkZjJhZDdhN2M0
ODUxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRl
IGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMjItMDMtMTcgIEpvbmF0aGFuIEJlZGFyZCAgPEpvbldCZWRh
cmRAZ21haWwuY29tPgogCiAgICAgICAgIGNvbmZpZ3VyZS14Y29kZS1mb3ItZW1iZWRkZWQtZGV2
ZWxvcG1lbnQgZmFpbHMgd2l0aCBYY29kZSAxMy4zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAKaW5kZXggMjQ3MzU4MGYxOTBlMGZkNjc0YzM2N2RhNDdjOWYxOTJiYTI0ODVlNC4uMjE1YzE3
YzY2NTdhZWRhNmE2ZTJjZDBhZTBjOWM5MjZmM2JkODJiMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRU
ZXN0c0NHLmNwcApAQCAtNTIsNyArNTIsNyBAQCBURVNUKEdyYXBoaWNzQ29udGV4dFRlc3RzLCBE
cmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBvc2l0ZU9wZXJhdG9yKQogICAgIEdyYXBoaWNz
Q29udGV4dENHIGN0eChjZ0NvbnRleHQuZ2V0KCkpOwogCiAgICAgRVhQRUNUX0VRKGN0eC5jb21w
b3NpdGVPcGVyYXRpb24oKSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIpOwotICAgIEVY
UEVDVF9FUShjdHguYmxlbmRNb2RlT3BlcmF0aW9uKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAg
ICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZSgpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAKICAgICBh
dXRvIGdyZWVuUGl4ZWxDRyA9IGdyZWVuSW1hZ2UoKTsKICAgICBhdXRvIGdyZWVuUGl4ZWxOYXRp
dmUgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGdyZWVuUGl4ZWxDRy5nZXQoKSk7CkBAIC03MSw3ICs3
MSw3IEBAIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdHMsIERyYXdOYXRpdmVJbWFnZURvZXNOb3RM
ZWFrQ29tcG9zaXRlT3BlcmF0b3IpCiAgICAgRVhQRUNUX0VRKHByaW1hcnlEYXRhWzJdLCAwKTsK
IAogICAgIEVYUEVDVF9FUShjdHguY29tcG9zaXRlT3BlcmF0aW9uKCksIENvbXBvc2l0ZU9wZXJh
dG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZU9wZXJhdGlvbigp
LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGUoKSwgQmxl
bmRNb2RlOjpOb3JtYWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNDFhM2RhZmY3Zjk2M2I5NWFkNjViODBiMDUzNGRjZDZlMDFlNmMxYS4uZmI4Nzk1ODlhZTdh
ODg3MGEyYTdkYWViZDYzOWFhZWFmYWZlNGNmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIy
LTAzLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFUgUHJvY2Vzc10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNoYW5n
ZXMgdGlsbCB0aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzgwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5z
Zm9ybXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXkt
bGlzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMi0wMy0xNyAgTWF0dGVvIEZsb3JlcyAgPG1hdHRlb19mbG9yZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI5MTEyOS1yMjkxMTI4KTogW1dLMSBFV1NdIDMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9hbmltYXRpb24tbW9k
ZWwvYW5pbWF0aW9uLXR5cGVzLyogdGVzdHMgYXJlIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVz
LXNoYWRvdy1leHBlY3RlZC50eHQKaW5kZXggNTExYjdjMGM1NGQzMzIxNmI3YzZlYWYwNDNhNzVj
MTY3NjZkMDQyNy4uYjI5ZmUyZjUzOWFkOTY2ZjUwMmE1M2I3Mzc5MWVmZTE0YTBlOWNiMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVk
ZXMtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtNCwxMSArNCwxMiBAQAogICAoeSAwLjAwKSkKIChz
YXZlKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZsYWdzIDUxMikKLSAgKHNoYWRvdy1ibHVyIDEy
LjAwKQotICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChzaGFkb3ctY29s
b3IgIzAwMDAwMCkKLSAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisgIChjaGFuZ2Ut
ZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAgKGRyb3Atc2hhZG93CisgICAgKHNoYWRvdy1vZmZzZXQg
d2lkdGg9MTAgaGVpZ2h0PTIwKQorICAgIChzaGFkb3ctYmx1ciAxMi4wMCkKKyAgICAoc2hhZG93
LWNvbG9yICMwMDAwMDApCisgICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpKQogKGZp
bGwtY29tcG9zaXRlZC1yZWN0CiAgIChyZWN0IGF0ICg1MCw1MCkgc2l6ZSAxMDB4MTAwKQogICAo
Y29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRl
bnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5
bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0CmluZGV4IDM4NmUz
OTQxMTg1ZjA5YTNjNjhlYzZjMmFlODhkZjExYzcwYjBhNjkuLjFkY2FiYmU3Y2UwNWJjYmU5NGUy
MzM2NGViZTI5ZWE3NmZmMGY1OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dApA
QCAtNiwxMSArNiwxMiBAQAogICAoY3RtIHttPSgoMC44NywwLjUwKSgtMC41MCwwLjg3KSkgdD0o
ODEuNzAsLTE4LjMwKX0pKQogKHNhdmUpCiAoc2V0LXN0YXRlCi0gIChjaGFuZ2UtZmxhZ3MgNTEy
KQotICAoc2hhZG93LWJsdXIgMTIuMDApCi0gIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdo
dD0yMCkKLSAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQotICAoc2hhZG93cy11c2UtbGVnYWN5LXJh
ZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFncyBbZHJvcC1zaGFkb3ddKQorICAoZHJvcC1zaGFkb3cK
KyAgICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjApCisgICAgKHNoYWRvdy1ibHVy
IDEyLjAwKQorICAgIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKKyAgICAoc2hhZG93cy11c2UtbGVn
YWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1jb21wb3NpdGVkLXJlY3QKICAgKHJlY3QgYXQgKDAsMCkg
c2l6ZSAxMDB4MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CmluZGV4IGJjMTdi
NTExNDk5ZjgyNTZjOTkyOTBkYWU4NjE0ZDQ4OTRjYWY5Y2MuLjRkYTA2YjNjMzg3NjJlZDcyNTY4
NTRjNGUzZjRlMDc4M2E2NWZiNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0
cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZGlzcGxh
eWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dApAQCAtOCw5ICs4LDEwIEBACiAg
IChjb21wb3NpdGUtb3BlcmF0aW9uIHNvdXJjZS1vdmVyKQogICAoYmxlbmQtbW9kZSBub3JtYWwp
IGV4dGVudCBhdCAoMCwwKSBzaXplIDEwNHgxMDQpCiAoc2V0LXN0YXRlCi0gIChjaGFuZ2UtZmxh
Z3MgMzI5NjApCi0gIChmaWxsLWNvbG9yICMwMDAwRkYpCi0gIChzdHJva2Utc3R5bGUgMCkKKyAg
KGNoYW5nZS1mbGFncyBbZmlsbC1icnVzaCwgc3Ryb2tlLXN0eWxlLCBzaG91bGQtYW50aWFsaWFz
XSkKKyAgKGZpbGwtYnJ1c2gKKyAgICAoY29sb3IgIzAwMDBGRikpCisgIChzdHJva2Utc3R5bGUg
Tk8tU1RST0tFKQogICAoc2hvdWxkLWFudGlhbGlhcyAwKSkKIChkcmF3LXJlY3QKICAgKHJlY3Qg
YXQgKDAsMCkgc2l6ZSAxMDR4MikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDNjOWYyMWIzZGUzYzE4OTFlNWZhZTEyYmY1YjY4MGMwOGQ5NWJkYWQuLmI3YmYx
ZWRlZDkzYWYyMWQxZmQ0ZGVjNDhjN2YxNTZkOWM4ZGFmYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMSwyMSArMSwxMSBAQAogIyBHb29kIHN0YXJ0aW5n
IHBvaW50IGlzIHRvIGxvb2sgYXQgdGhlIGJvdHMgb24gcmVzdWx0cy53ZWJraXQub3JnIGZpcnN0
CiAKICMgSW5jb3JyZWN0IHNpemUKLXdlYmtpdC5vcmcvYi8yMzY5MDYgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLWJyZWFrcy0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9saW5lLWJyZWFrL2xpbmUtYnJlYWst
YW55d2hlcmUtYW5kLXdoaXRlLXNwYWNlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8yMzY5MDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRleHQvd2hpdGUtc3BhY2UvYnJlYWstc3BhY2VzLTAwNi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMzY5MDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd2hpdGUtc3BhY2UvYnJlYWstc3BhY2VzLXdpdGgtb3Zl
cmZsb3ctd3JhcC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiAKICMgVGhlcmUg
aXMgdGV4dCBpbi9uZWFyIHRoZSBib3gKLXdlYmtpdC5vcmcvYi8yMzY5MDcgZmFzdC9zaGFkb3ct
ZG9tL250aC1ub2RlLW9uLXNoYWRvdy1jaGlsZC1pbnZhbGlkYXRpb24uaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3NoYWRvdy1kb20vbnRoLW5vZGUt
b24tc2hhZG93LWNoaWxkLW5vLWppdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTA3IGZhc3Qvc2hhZG93LWRvbS9udGgtbm9kZS1vbi1zaGFkb3ctY2hpbGQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3Qtc3R5bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3Mtc2NvcGluZy9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdC1zdHlsZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IG1hdGhtbC9wcmVzZW50YXRpb24vbXJv
b3QtcHJlZi13aWR0aC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRh
aW4tc2l6ZS1tdWx0aWNvbC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29udGFp
bi9jb250YWluLXNpemUtbXVsdGljb2wtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvbnRhaW4vY29udGFpbi1zaXplLW11bHRpY29sLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1mbGV4Ym94L2Nzcy1mbGV4Ym94LXRlc3QxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAogIyBNaXNwbGFjZWQgdGV4dApAQCAtMzcsNjAgKzI3LDcgQEAgd2Via2l0Lm9yZy9iLzIz
NjkxMiBodHRwL3dwdC9jc3MvY3NzLWhpZ2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZGVjb3Jh
dGlvbnMuaHQKIAogIyBXcm9uZyB0ZXh0IGNvbG9yCiB3ZWJraXQub3JnL2IvMjM2OTEzIGZhc3Qv
Y3NzL3ZhcmlhYmxlcy90ZXN0LXN1aXRlLzAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNz
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC9keW5h
bWljL2luc2VydC1zcGFubmVyLWFmdGVyLWNvbnRlbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL2R5bmFt
aWMvaW5zZXJ0LXNwYW5uZXItYmVmb3JlLWNvbnRlbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL2R5bmFt
aWMvaW5zZXJ0LXNwYW5uZXItYWZ0ZXItc3Bhbm5lci1iZWZvcmUtY29udGVudC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3Qv
bXVsdGljb2wvdmVydGljYWwtbHIvZmxvYXQtY29udGVudC1icmVhay5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGlj
b2wvdmVydGljYWwtcmwvZmxvYXQtY29udGVudC1icmVhay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvdGFs
bC1saW5lLWluLXNob3J0LWJsb2NrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRh
aW4vY29udGFpbi1sYXlvdXQtc3VwcHJlc3MtYmFzZWxpbmUtMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLWJsb2NrLTAwMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4tc2l6ZS1ibG9jay0wMDQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94X3Jvd3NwYW4tb3ZlcmZsb3ctYXV0
b21hdGljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleGJveF9yb3dz
cGFuLW92ZXJmbG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnRzL2ZpcnN0LWF2
YWlsYWJsZS1mb250LTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLSMgTm90IGEgZ3Jl
ZW4gbGluZSBvbiB0aGUgbGVmdCBzaWRlIG9mIGEgeWVsbG93IHNxdWFyZQotd2Via2l0Lm9yZy9i
LzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0
eWxlcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVu
dC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMv
c3ZnLWRvY3VtZW50LXN0eWxlcy0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDYuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3Vt
ZW50LXN0eWxlcy0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9k
b2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDkuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxl
cy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1z
dHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3Zn
LWRvY3VtZW50LXN0eWxlcy0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFs
LXN0eWxlcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRl
cm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0w
MDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHls
ZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDYuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4
dGVybmFsLXN0eWxlcy0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDkuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0
eWxlcy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5h
bC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMTMu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2
Zy1pbmxpbmUtc3R5bGVzLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0w
MDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVz
L3N2Zy1pbmxpbmUtc3R5bGVzLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDA1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxl
cy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5
bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDA5Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0
eWxlcy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUt
c3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1zdHlsZXMtMDEyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5l
LXN0eWxlcy0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCi0jIFRoZXJlIGlzIHJlZAot
d2Via2l0Lm9yZy9iLzIzNjkxNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9ncmFkaWVudFRyYW5zZm9ybS9zdmctZ3JhZGllbnRUcmFuc2Zvcm0tMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTUgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZ3JhZGllbnRUcmFuc2Zv
cm0vc3ZnLWdyYWRpZW50VHJhbnNmb3JtLWNvbWJpbmF0aW9uLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2dyYWRpZW50VHJhbnNmb3JtL3N2Zy1ncmFkaWVudFRy
YW5zZm9ybS1jb21iaW5hdGlvbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRo
ZXJlIGFyZSBzbWFsbCByZWN0YW5nbGVzIG9yIGNoYXJhY3RlcnMgYmVsb3cgbWFpbiBjaGFyYWN0
ZXIKIHdlYmtpdC5vcmcvYi8yMzY5MTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXZhbHVlcy9jaC11bml0LTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0x
MDEsMTUyICszOCw2IEBAIHdlYmtpdC5vcmcvYi8yMzY5MTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9pYy11bml0LTAxMC5oCiB3ZWJraXQub3JnL2IvMjM2
OTE2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YWx1ZXMvaWMtdW5p
dC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkxNiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFsdWVzL2ljLXVuaXQtMDEyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBUcmFuc2Zvcm0gZmFpbHVyZXMKLXdlYmtpdC5v
cmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJh
dGlvbnMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDAyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2Vw
YXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmct
dHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxp
c3Qtc2VwYXJhdGlvbnMtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlv
bnMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA3Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJh
dGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA4Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJh
bnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qt
c2VwYXJhdGlvbnMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMt
MDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1sZW5ndGgtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3Ro
LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1v
cmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDcuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tbGVuZ3RoLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxl
bmd0aC1jbS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWNtLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgt
Y20tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1sZW5ndGgtaW4tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1pbi0wMDMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tbGVuZ3RoLWluLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtaW4tMDA1Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLWxlbmd0aC1wdC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1s
ZW5ndGgtcHQtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1wdC0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3Ro
LXB0LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwMy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdp
bi1yZWxhdGl2ZS1sZW5ndGgtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
MDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEwLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtMDE2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTcuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLTAxOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDE5Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LXJlbGF0aXZlLWxlbmd0aC0wMjAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDIyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0w
MjMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1s
ZW5ndGgtMDI1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjYuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVs
YXRpdmUtbGVuZ3RoLTAyNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI4Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC0wMjkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzMC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDMxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0
aC0wMzIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
b3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzMy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2
ZS1sZW5ndGgtMDM0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4t
cmVsYXRpdmUtbGVuZ3RoLTAzNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM3Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmct
b3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAz
OS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxl
bmd0aC0wNDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0Mi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxh
dGl2ZS1sZW5ndGgtMDQzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wNDQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tcmVsYXRpdmUtbGVuZ3RoLTA0NS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQ2Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2
ZS1sZW5ndGgtaW52YWxpZC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQt
MDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwNC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWlu
dmFsaWQtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwNy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVu
Z3RoLWludmFsaWQtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAxMC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMTEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLWludmFsaWQtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBNdWx0
aWNvbCBmYWlsdXJlcwotd2Via2l0Lm9yZy9iLzIzNjkxOSBpZXRlc3RjZW50ZXIvY3NzMy9tdWx0
aWNvbHVtbi9jb2x1bW4tY29udGFpbmluZy1ibG9jay0wMDMuaHRtIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ibG9jay1uby1jbGlwLTAwMS54aHQgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWJsb2NrLW5vLWNsaXAtMDAyLnhodCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY2xpcC0wMDEueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jbGlwLTAwMi54aHQgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvbHVtbnMtaW52YWxpZC0w
MDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb2x1bW5z
LWludmFsaWQtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtY29sdW1ucy10b29sb25nLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLWNvbnRhaW5pbmctMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtY29udGFpbmluZy0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1uZWdhdGl2ZS0wMDEueGh0IFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1uZWdhdGl2ZS0wMDIueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1ub24taW50ZWdl
ci0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3Vu
dC1ub24taW50ZWdlci0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1jb3VudC1ub24taW50ZWdlci0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tdWx0aWNvbC9tdWx0aWNvbC1maWxsLWF1dG8tMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUg
UGFzcyBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1maWxsLWF1dG8tMDAzLnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZmlsbC1hdXRvLWJsb2NrLWNoaWxkcmVu
LTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWZpbGwt
YmFsYW5jZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNv
bC1nYXAtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
Z2FwLTAwMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWdh
cC1sYXJnZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNv
bC1nYXAtbGFyZ2UtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVs
dGljb2wtZ2FwLW5lZ2F0aXZlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLWhlaWdodC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1oZWlnaHQtYmxvY2stY2hpbGQtMDAxLnhodCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW1hcmdpbi0wMDIueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1tYXJnaW4tMDAzLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW1hcmdpbi1jaGlsZC0wMDEueGh0IFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1uZXN0ZWQtY29sdW1uLXJ1bGUt
MDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtb3ZlcmZs
b3dpbmctMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
cnVsZS0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1y
dWxlLWNvbG9yLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRp
Y29sLXJ1bGUtZnJhY3Rpb24tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGlj
b2wvbXVsdGljb2wtcnVsZS1mcmFjdGlvbi0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLWxhcmdlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtcGVyY2VudC0wMDEueGh0IFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLXNhbWVsZW5ndGgtMDAxLnhodCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1zaG9ydGhhbmQt
MDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1h
bGwtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bh
bi1hbGwtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
c3Bhbi1hbGwtMDAzLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtc3Bhbi1hbGwtbWFyZ2luLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLXNwYW4tYWxsLW1hcmdpbi1ib3R0b20tMDAxLnhodCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1mbG9hdC0wMDEueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC10YWJsZS1jZWxsLXZlcnRpY2FsLWFs
aWduLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXdp
ZHRoLXNtYWxsLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0aW9uL211bHRp
Y29sL3Zsci1sdHItbHRyLWluLW11bHRpY29scy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wb3NpdGlvbi9tdWx0aWNvbC92cmwtbHRyLWx0ci1pbi1tdWx0aWNvbHMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotCiAjIENTUyBTaGFwZXMgZmFpbHVyZXMKIHdlYmtpdC5vcmcvYi8yMzY5
MjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNoYXBlcy9zaGFwZS1v
dXRzaWRlL3NoYXBlLWltYWdlL3NoYXBlLWltYWdlLTAwMi5odG1sCiB3ZWJraXQub3JnL2IvMjM2
OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFwZXMvc2hhcGUt
b3V0c2lkZS9zaGFwZS1pbWFnZS9zaGFwZS1pbWFnZS0wMDMuaHRtbApAQCAtMjgyLDI1ICs3Myw5
IEBAIHdlYmtpdC5vcmcvYi8yMzY5MjIgc3lzdGVtLXByZXZpZXcvYmFkZ2UuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogIyBOby9iYWQgY29sb3JlZCBib3hlcwogd2Via2l0Lm9yZy9iLzIzNjky
MyBmYXN0L2Nzcy9wYWludC1vcmRlci1zaGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRlZC9ibGluay9zdmcvdGV4dC9vYmItcGFpbnRzZXJ2
ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21hdGhtbC9yZWxhdGlvbnMvY3NzLXN0eWxpbmcvY29s
b3ItMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0aW9uL3N0aWNreS9wb3Np
dGlvbi1zdGlja3ktaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0aW9u
L3N0aWNreS9wb3NpdGlvbi1zdGlja3ktd3JpdGluZy1tb2Rlcy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy12YXJpYWJsZXMvdmFycy1mb250LXNob3J0aGFuZC0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCiAjIE5vL2JhZCBncmFkaWVudC9wYXR0ZXJuCi13ZWJraXQub3JnL2Iv
MjM2OTI0IGltcG9ydGVkL21vemlsbGEvc3ZnL2xpbmVhckdyYWRpZW50LWJhc2ljLTAzLnN2ZyBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBpbXBvcnRlZC9tb3ppbGxh
L3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybWVkLTAxLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL2dyYWRpZW50LWZsaXBwZWQtc3RhcnQtZW5k
LXBvaW50cy5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3Zn
L2dyYWRpZW50cy9zcHJlYWRNZXRob2Quc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kQWxwaGEuc3ZnIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0
aG9kRGlhZ29uYWwuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0
IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kRGlhZ29uYWwyLnN2ZyBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZERpYWdv
bmFsMy5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dy
YWRpZW50cy9zcHJlYWRNZXRob2REaWFnb25hbDQuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kRHVwbGljYXRlU3Rv
cC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRp
ZW50cy9zcHJlYWRNZXRob2RSZXZlcnNlZC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zdG9wQWxwaGEuc3ZnIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy90cmFuc2Zvcm1zL3RyYW5zZm9ybWVkLXRl
eHQtZmlsbC1ncmFkaWVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjM2OTI0IHN2Zy90cmFuc2Zvcm1zL3RyYW5zZm9ybWVkLXRleHQtZmlsbC1wYXR0ZXJuLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBNZWRpYSBmYWlsdXJlcwo=
</data>
<flag name="review"
          id="483133"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="483140"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455298</attachid>
            <date>2022-03-21 16:43:42 -0700</date>
            <delta_ts>2022-03-21 20:52:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220321164341.patch</filename>
            <type>text/plain</type>
            <size>222046</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uYWIyODM0Y2YxNzFhZTU0ZGZmZDgzYTlkNTE2MTBl
Njc2NTYyMGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4OSBAQAorMjAyMi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIEEgbWVtYmVyIG9mIHR5cGUgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzIHdp
bGwgYmUgYWRkZWQgdG8KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgdG8ga2VlcCB0cmFj
ayBvZiB3aGF0IGhhcyBjaGFuZ2VzIHNpbmNlIGl0IHdhcyBsYXN0CisgICAgICAgIGFwcGxpZWQu
IFNvIHdlIGNhbiBlbGltaW5hdGUgdGhlIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZS4KKworICAgICAgICBXZSB3aWxsIGhhdmUgdG8gaGF2ZSBhIHNpbmdsZSBtZW1iZXIgZm9yIGV2
ZXJ5IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UuIAorCisgICAgICAgIDEuIFNvIHdlIHdp
bGwgY29tYmluZSB0aGUgY29sb3IsIHRoZSBwYXR0ZXJuLCB0aGUgZ3JhZGllbnQgYW5kIHRoZSBn
cmFkaWVudAorICAgICAgICAgICBzcGFjZSB0cmFuc2Zvcm0gaW4gb25lIGNsYXNzIGNhbGxlZCAn
U291cmNlQnJ1c2gnLgorCisgICAgICAgIDIuIFdlIHdpbGwgY29tYmluZSB0aGUgc2hhZG93IG9m
ZnNldCwgdGhlIHNoYWRvdyBibHVyUmFkaXVzLCB0aGUgc2hhZG93CisgICAgICAgICAgIGNvbG9y
IGFuZCB0aGUgcmFkaXVzIG1vZGUgaW4gb25lIHN0cnVjdCBjYWxsZWQgJ0Ryb3BTaGFkb3cnCisK
KyAgICAgICAgMy4gQW5kIHdlIHdpbGwgY29tYmluZSB0aGUgQ29tcG9zaXRlT3BlcmF0b3IgYW5k
IHRoZSBCbGVkTW9kZSBpbiBvbmUgc3RydWN0IAorICAgICAgICAgIGNhbGxlZCAnQ29tcG9zaXRl
TW9kZScuCisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgd2lsbCBoYW5kbGUgc2V0dGlu
ZyBpdHMgbWVtYmVycywgaXRzIGVuY29kaW5nIGFuZAorICAgICAgICBkZWNvZGluZyBhbmQgaXRz
IHN0cmVhbWluZyB0byB0ZXh0LgorCisgICAgICAgIEFkZGluZyBhIHRyYW5zcGFyZW5jeSBsYXll
ciBpbiBDRyBzZXRzIHRoZSBnbG9iYWwgYWxwaGEgdG8gMS4gV2UgbmVlZCB0bworICAgICAgICBz
eW5jIHRoZSBtZW1iZXIgR3JhcGhpY3NDb250ZXh0U3RhdGUuYWxwaGEgd2l0aCB0aGUgcGxhdGZv
cm0gYWxwaGEgd2hlbgorICAgICAgICB3ZSBiZWdpblRyYW5zcGFyZW5jeUxheWVyKCkgYW5kIHdo
ZW4gd2UgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKS4KKworICAgICAgICBEaXNwbGF5TGlzdDo6UmVj
b3JkZXIgd2lsbCBrZWVwIGl0cyBzdGFjayBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZS4gVGhlCisg
ICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc3RhdGUgb2YgR3JhcGhpY3NDb250ZXh0IGFu
ZCB0aGUgc3RhdGUgb2YgdGhlIAorICAgICAgICBSZWNvcmRlciBpcyB3ZSBlYWdlcmx5IGFwcGx5
IHRoZSBmb3JtZXIgdG8gdGhlIHBsYXRmb3JtIGNvbnRleHQgYnV0IHdlCisgICAgICAgIGxhemls
eSByZWNvcmQgdGhlIGNoYW5nZXMgb2YgdGhlIGxhdGVyLiBSZWNvcmRlcjo6ZGlkVXBkYXRlU3Rh
dGUoKQorICAgICAgICBvdmVycmlkZXMgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHRvIGp1c3QgbWVy
Z2UgdGhlIGNoYW5nZXMgZnJvbSB0aGUgYmFzZQorICAgICAgICBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ6Om1fc3RhdGUgdG8gUmVjb3JkZXI6OmN1cnJlbnRTdGF0ZSgpLnN0YXRlLgorICAgICAgICBS
ZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKCkgcmVjb3JkcyB0aGUgYWNjdW11bGF0ZWQg
Y2hhbmdlcyBpbiB0aGUKKyAgICAgICAgY3VycmVudFN0YXRlKCkgc2luY2UgdGhlIGxhc3QgZHJh
d2luZy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjplbmRU
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ry
YXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBh
dHRlcm4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRG
aWxsUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZUdyYWRpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0RmlsbEdyYWRpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbEdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxCcnVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJ1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
R3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNo
YWRvd09mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNo
YWRvd0JsdXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaGFk
b3dDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERy
b3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omhhc1Zpc2libGVTaGFkb3cgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVkU2hhZG93IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aGFzU2hhZG93IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRlTW9kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU9wZXJhdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJsZW5kTW9kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdNb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91
bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91
bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVzZURhcmtBcHBlYXJhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmxlbmRNb2RlT3BlcmF0aW9uIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Omhh
c09ubHlQcmltaXRpdmVDaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YXRlQ2hhbmdlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2Vz
RnJvbVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBseSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6ZHVtcCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y2hhbmdl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQXBw
bHlDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsQnJ1c2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZp
bGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0Rmls
bEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRG
aWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
RmlsbFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0
cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0
U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldENvbXBvc2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OnNldERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OnNldEFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OnNldERyYXdMdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZU1vZGU6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVNb2RlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJvcFNoYWRvdzo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BT
aGFkb3c6OmlzQmx1cnJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9wU2hhZG93Ojpo
YXNPdXRzZXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRyb3BTaGFkb3c6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6U2hhZG93Qmx1cik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJydXNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
cnVzaDo6U291cmNlQnJ1c2gpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6
OmdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpwYXR0ZXJu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpzZXRHcmFkaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVz
aC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpjb2xvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0Q29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnJ1c2g6OmJydXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJydXNoOjpzZXRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6aXNQ
cmltaXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRp
ZW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86
OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0cm9r
ZVNvdXJjZTo6U3Ryb2tlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dT
dGF0ZTo6U2hhZG93U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDYWlybzo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENh
aXJvOjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
Rzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Q0c6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRD
Rzo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dENHOjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpkcmF3UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRlZFJlY3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDR1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q0c6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6
OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJv
a2VFbGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNS
ZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVzaCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUJydXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVN0cm9rZUNvbG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0lzQ2xlYXJlZCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OlNldFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6YXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNoYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjph
cHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6Y2xvbmVGb3JTYXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBs
eVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChOaWNvc2lh
OjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChOaWNvc2lhOjpD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgIChOaWNvc2lh
OjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChOaWNvc2lhOjpD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKE5pY29zaWE6
OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdFbGxpcHNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKwogMjAyMi0wMy0xNyAgTWF0dCBXb29kcm93
ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIFN1YmdyaWQgaXRlbXMgc2hvdWxk
IGFsd2F5cyBiZSBzdHJldGNoZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmZWU2Y2JjOWM4OTdiOWNlYWFkMDZi
ZTdmOGNlZTA4NjBlMzI5MWUuLjg4YWMwMTVmMjc2NmVmZmVkNDAzNmE5ODA5ZjU3ZTY3ODU1ODYy
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDMtMjAgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBo
aWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxp
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2
NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZFNldFN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMy0xNyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENhbGwgZG9EYWlseUFjdGl2aXR5
SW5NYW5hZ2VyIG9uIG1haW4gdGhyZWFkIGluIGFkYXR0cmlidXRpb25kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCAyZGVkMDk3Y2FhNmEzMTRkODVkZTUzMTA4YTg1MGRhNTE4YzQ4OWZjLi5lYmNiNTMx
N2NkN2YzOWJiYWFlNDIzMGE4ZWY1ZGIxNmYzMDRhYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTE1NzEsNiArMTU3MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Sb3VuZGVkUmVjdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hvdWxkTG9jYWxpemVB
eGlzTmFtZXMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VJbWFnZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDQzY2MxMmY3YzI1OWE1MDY2ZmIzMzM5ZmY4ZjIy
NGVmNmE4NmNmYjkuLmViNzZhMTg2ZDM0OGQ0YjM2ODlmMjM0ZjNkYmY2MjgyYWFhZGUwNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0yMDg1LDYgKzIwODUsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NDBmODljZjFm
MzQyZDhlNDVhNjZjODhmMzY1YjY1OGU4ZDBkODMyLi41YzlhNTVkMThkNjcwOTRlYjJlZmRjMmNl
ZGQ1M2ZjM2ViNTNkNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY0LDYgKzIzNjQsNyBAQAogCQk3MkQ3MzY0NDI3ODQ2
MUEwMDAzOTg2NjMgLyogRmlsdGVyUmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMUI1RDYyNzY1MzY4MjAwNzZGRUY4IC8qIEZpbHRlclJl
c3VsdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MkY2NjdFMTI2MEMyNkFDMDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjY2N0RGMjYw
QzI2NDQwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRjdFNzQ2Mjc5QjhGNzUwMEQ4
MkQyRCAvKiBTb3VyY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzJGN0U3NDQyNzlCOEY3NDAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJGRDMwQUMy
N0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNl
QnJ1c2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0
NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0
MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNz
YWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2Fn
ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTc5M0VDNzBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTEx
NDI4LDYgKzExNDI5LDggQEAKIAkJNzJGQjIzODcyMjQ5N0IxNTAwN0U1QUM3IC8qIFNWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyRkIyMzg4MjI0OTdCMTUwMDdFNUFDNyAvKiBTVkdWYWx1ZVByb3BlcnR5
TGlzdEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJG
QjIzOTYyMjRCMDdCOTAwN0U1QUM3IC8qIFNWR1BhdGhTZWdJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTZWdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyRkQzMEE5MjdFMzIxN0EwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VCcnVzaC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyRkQzMEFBMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3Vy
Y2VCcnVzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCcnVzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUg
LyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRTgwMEQwQ0UwQjMwMDdG
QzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
OTE1Miw2ICsyOTE1NSw4IEBACiAJCQkJMEYzREQ0NEQxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRv
d0JsdXIuY3BwICovLAogCQkJCTBGM0RENDRFMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVy
LmggKi8sCiAJCQkJMUM0REIwMjQyNzMzOUU1RTAwN0IwQUQxIC8qIFNob3VsZExvY2FsaXplQXhp
c05hbWVzLmggKi8sCisJCQkJNzJGRDMwQTkyN0UzMjE3QTAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmNwcCAqLywKKwkJCQk3MkZEMzBBQTI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1c2guaCAq
LywKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oICovLApAQCAtMzczNzcsNiArMzczODIsNyBAQAogCQkJCTUxMEQ0QTM4MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEE4MUYzRTBGQzdERkYwMDA5NTUzMDAgLyogU291cmNl
QWxwaGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyRkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBT
b3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQy
IC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NjUxN0E5RDAxQjAw
Mjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjEzNTA5
MjRDOUZDQTMwMDQzMkUxRSAvKiBTb3VyY2VCdWZmZXJQYXJzZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5
OGZjNmM4ZWZhNGNiMmEyLi5hY2QwODZmMjJhMmMyMTc4OWZiYjU5OTgzMWE5Y2EzZTBjMjc5NmNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTE2LDE0ICsxMTYsMTggQEAgdm9p
ZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihvcGFjaXR5KTsKICAgICBtX3ByaW1hcnlDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9zZWNvbmRhcnlDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIob3BhY2l0eSk7CisgICAgbV9zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7
CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAg
ICBtX3ByaW1hcnlDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9zZWNvbmRh
cnlDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgbV9zdGF0ZS5kaWRFbmRUcmFu
c3BhcmVuY3lMYXllcihtX3ByaW1hcnlDb250ZXh0LmFscGhhKCkpOwogfQogCiB2b2lkIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQ6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZmFjdG9y
KQpAQCAtNDMwLDEzICs0MzQsMTQgQEAgYm9vbCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Ojpz
dXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogICAgIHJldHVybiBtX3ByaW1hcnlDb250ZXh0
LnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpOwogfQogCi12b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSkKIHsKICAgICAvLyBUaGlzIGNhbGxzIHVwZGF0ZVN0YXRlKCkgaW5zdGVhZCBvZiBk
aWRVcGRhdGVTdGF0ZSgpIHNvIHRoYXQgY2hhbmdlcwogICAgIC8vIGFyZSBhbHNvIGFwcGxpZWQg
dG8gZWFjaCBjb250ZXh0J3MgR3JhcGhpY3NDb250ZXh0U3RhdGUsIHNvIHRoYXQgY29kZQogICAg
IC8vIGludGVybmFsIHRvIHRoZSBjaGlsZCBjb250ZXh0cyB0aGF0IHJlYWRzIGZyb20gdGhlIHN0
YXRlIGdldHMgdGhlIHJpZ2h0IHZhbHVlcy4KLSAgICBtX3ByaW1hcnlDb250ZXh0LnVwZGF0ZVN0
YXRlKHN0YXRlLCBmbGFncyk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0
YXRlLCBmbGFncyk7CisgICAgbV9wcmltYXJ5Q29udGV4dC51cGRhdGVTdGF0ZShzdGF0ZSk7Cisg
ICAgbV9zZWNvbmRhcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBzdGF0ZS5kaWRB
cHBseUNoYW5nZXMoKTsKIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJUk8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZjU4YjM0YzkxNDM0MmI3Mzc3NzI3YzExYTczYjZkODIx
OGUxNTU2Zi4uYTNmMGQxOTg2ZmYxZTM1OGQ3NjE0YzgwYzQyZTM2N2RkMzdmMDIwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNz
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgc3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVw
ZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogI2lmIE9TKFdJTkRPV1MpICYmICFVU0UoQ0FJ
Uk8pCiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBkZXByZWNhdGVkUHJpdmF0
ZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMjVhM2QzZmU4NzczMzFkZGEz
OTU3ODAxMWI2ZDg5MGYyMTJjNzJlNi4uZWE2OTM1YmQwNjgyMmYxMTNkYmJiMDYxNDFlMzBkZjhh
MjI1NGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJh
d0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTg0LDE1ICs4NCwxNSBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiwgRm9udFNtb290aGluZ01vZGUp
OwogICAgIHZvaWQgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIAotICAgIHZvaWQgdXBkYXRl
RmlsbENvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGllbnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBu
dWxscHRyKTsKLSAgICB2b2lkIHVwZGF0ZVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgR3JhZGll
bnQqID0gbnVsbHB0ciwgUGF0dGVybiogPSBudWxscHRyKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGxC
cnVzaChjb25zdCBTb3VyY2VCcnVzaCYpOworICAgIHZvaWQgdXBkYXRlU3Ryb2tlQnJ1c2goY29u
c3QgU291cmNlQnJ1c2gmKTsKICAgICB2b2lkIHVwZGF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKTsKICAgICBlbnVtIGNsYXNzIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsKICAgICAgICAg
VW5zcGVjaWZpZWQsCiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQg
dXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dC
bHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsK
KyAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiwgU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICB2
b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKQEAgLTExMSwyNyArMTExLDEzIEBAIHByaXZh
dGU6CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fb3JpZ2luYWxUZXh0TWF0cml4OwogCiAgICAgc3Ry
dWN0IFN0YXRlIHsKLSAgICAgICAgc3RydWN0IFN0eWxlIHsKLSAgICAgICAgICAgIENvbG9yIGNv
bG9yOwotICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKLSAgICAgICAgICAg
IEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgICAgICAgICAgUmVm
UHRyPFBhdHRlcm4+IHBhdHRlcm47Ci0gICAgICAgIH07Ci0gICAgICAgIFN0eWxlIGZpbGxTdHls
ZTsKLSAgICAgICAgU3R5bGUgc3Ryb2tlU3R5bGU7Ci0KKyAgICAgICAgU291cmNlQnJ1c2ggZmls
bEJydXNoOworICAgICAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaDsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGN0bTsKLQotICAgICAgICBzdHJ1Y3QgU2hhZG93U3RhdGUgewotICAgICAgICAg
ICAgRmxvYXRTaXplIG9mZnNldDsKLSAgICAgICAgICAgIGZsb2F0IGJsdXIgeyAwIH07Ci0gICAg
ICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGJvb2wgaWdub3JlVHJhbnNmb3JtcyB7
IGZhbHNlIH07Ci0gICAgICAgIH07Ci0gICAgICAgIFNoYWRvd1N0YXRlIHNoYWRvdzsKKyAgICAg
ICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgICAgICBib29sIGlnbm9yZVRyYW5zZm9ybXMg
eyBmYWxzZSB9OwogICAgIH07CiAgICAgU3RhdGUgbV9vcmlnaW5hbFN0YXRlOwotICAgIFN0YXRl
IG1fY3VycmVudFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5k
ZXggM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0NDZhNWY3YWJjOGEzZTg2My4uOWU0ZDA2NmIwMzli
NmQ1ZmU0YzUyY2Q1YWE0OTdkNDI5OWE2ZmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00Myw2ICs0MywxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0dyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3Mp
CisgICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQoreworfQorCiBHcmFwaGljc0NvbnRleHQ6On5H
cmFwaGljc0NvbnRleHQoKQogewogICAgIEFTU0VSVChtX3N0YWNrLmlzRW1wdHkoKSk7CkBAIC03
MCwxMCArNzUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgICAgICBt
X3N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRl
KEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRTdGF0ZT4mIGxhc3REcmF3aW5nU3RhdGUpCiB7Ci0gICAgbV9zdGF0ZS5tZXJnZUNo
YW5nZXMoc3RhdGUsIGZsYWdzKTsKLSAgICBkaWRVcGRhdGVTdGF0ZShzdGF0ZSwgZmxhZ3MpOwor
ICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRlLCBsYXN0RHJhd2luZ1N0YXRlKTsKKyAgICBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdS
YWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlwc2VD
b2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQpAQCAtOTMsODQgKzk4LDE1IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UmFpc2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBlbGxpCiAgICAgcmVzdG9yZSgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIG1fc3RhdGUu
c3Ryb2tlQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0
cjsKLSAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBudWxscHRyOwotICAgIGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgU2hhZG93UmFkaXVzTW9kZSByYWRp
dXNNb2RlKQotewotICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zmc2V0OwotICAgIG1fc3Rh
dGUuc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9IHJhZGl1c01vZGU7Ci0gICAgZGlkVXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCi17Ci0gICAgbV9zdGF0ZS5zaGFk
b3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKLSAgICBtX3N0YXRlLnNoYWRvd0JsdXIgPSAwOwotICAg
IG1fc3RhdGUuc2hhZG93Q29sb3IgPSBDb2xvcigpOwotICAgIG1fc3RhdGUuc2hhZG93UmFkaXVz
TW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQ7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7Ci19Ci0KIGJvb2wgR3Jh
cGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0JiBibHVyLCBD
b2xvciYgY29sb3IpIGNvbnN0CiB7Ci0gICAgb2Zmc2V0ID0gbV9zdGF0ZS5zaGFkb3dPZmZzZXQ7
Ci0gICAgYmx1ciA9IG1fc3RhdGUuc2hhZG93Qmx1cjsKLSAgICBjb2xvciA9IG1fc3RhdGUuc2hh
ZG93Q29sb3I7CisgICAgb2Zmc2V0ID0gZHJvcFNoYWRvdygpLm9mZnNldDsKKyAgICBibHVyID0g
ZHJvcFNoYWRvdygpLmJsdXJSYWRpdXM7CisgICAgY29sb3IgPSBkcm9wU2hhZG93KCkuY29sb3I7
CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIG1fc3RhdGUuZmlsbENvbG9y
ID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3Rh
dGUuZmlsbFBhdHRlcm4gPSBudWxscHRyOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpOwotfQotCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQotewotICAg
IG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9
IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsK
LSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVy
bihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQotewotICAgIG1fc3RhdGUuZmlsbENvbG9yID0geyB9
OwotICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKLSAgICBtX3N0YXRlLmZpbGxQ
YXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCi17Ci0g
ICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50
ID0gV1RGTW92ZShncmFkaWVudCk7Ci0gICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJh
bnNmb3JtID0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gPSBudWxscHRyOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKQotewotICAgIG1fc3Rh
dGUuZmlsbENvbG9yID0geyB9OwotICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGTW92ZShn
cmFkaWVudCk7Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRy
OwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
R3JhZGllbnRDaGFuZ2UpOwotICAgIC8vIEZJWE1FOiBhbHNvIGZpbGwgcGF0dGVybj8KLX0KLQog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQpCiB7CiAg
ICAgKyttX3RyYW5zcGFyZW5jeUxheWVyQ291bnQ7CkBAIC00OTEsMTMgKzQyNyw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQotewotICAgIG1f
c3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247Ci0gICAgbV9zdGF0
ZS5ibGVuZE1vZGUgPSBibGVuZE1vZGU7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSk7Ci19Ci0KIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjphZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYg
cDEsIEZsb2F0UG9pbnQmIHAyLCBmbG9hdCBzdHJva2VXaWR0aCwgU3Ryb2tlU3R5bGUgcGVuU3R5
bGUpCiB7CiAgICAgLy8gRm9yIG9kZCB3aWR0aHMsIHdlIGFkZCBpbiAwLjUgdG8gdGhlIGFwcHJv
cHJpYXRlIHgveSBzbyB0aGF0IHRoZSBmbG9hdCBhcml0aG1ldGljCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDM5ZjMwMWRl
NjBmYzUzOTRjMmNhMTQ0ZWU3NTEwOGIzZmM2ZDNmZWYuLjEzY2MzYjAzNzc5MTE2NmY5M2MyNmVh
ODJlODFkNzZlNDYxYjQwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC02NCw5ICs2NCw4IEBAIHN0cnVjdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzogICAKLQotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dCgpID0g
ZGVmYXVsdDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiA9IHsgfSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
aGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTgwLDgzICs3
OSw5MyBAQCBwdWJsaWM6CiAKICAgICAvLyBDb250ZXh0IFN0YXRlCiAKLSAgICB2b2lkIHNldFN0
cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0ZS5zdHJva2VUaGlja25lc3Mg
PSB0aGlja25lc3M7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VUaGlja25lc3NDaGFuZ2UpOyB9Ci0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAgICBjb25zdCBTb3Vy
Y2VCcnVzaCYgZmlsbEJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2g7IH0K
KyAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
QnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgpOyB9CisgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKTsgfQorICAgIFBhdHRlcm4qIGZp
bGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpOyB9
CisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IG1fc3Rh
dGUuc2V0RmlsbEJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2
b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRGaWxsQ29s
b3IoY29sb3IpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0RmlsbEdy
YWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBz
cGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGdy
YWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAg
IHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBtX3N0YXRlLnNl
dEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsg
fQogCi0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRl
LnN0cm9rZVN0eWxlID0gc3R5bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSk7IH0KLSAgICBTdHJva2VTdHlsZSBzdHJva2VT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KKyAgICBXaW5kUnVs
ZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7IH0KKyAgICB2b2lk
IHNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuc2V0RmlsbFJ1bGUoZmls
bFJ1bGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorCisgICAgY29uc3QgU291cmNlQnJ1
c2gmIHN0cm9rZUJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVzaDsgfQor
ICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ry
b2tlQnJ1c2guY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAg
UGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1
c2gucGF0dGVybigpOyB9CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVz
aCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5z
ZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0
dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3RhdGUuc2V0U3Ryb2tlUGF0dGVybihXVEZNb3ZlKHBhdHRl
cm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBjb25zdCBDb2xvciYgc3Ryb2tl
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9CisgICAgZmxvYXQg
c3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7
IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpIHsgbV9zdGF0
ZS5zZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVy
bj4mJik7Ci0gICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuc3Ryb2tlUGF0dGVybi5nZXQoKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tl
U3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpIHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7
IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9
IHsgfSk7Ci0gICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5zdHJva2VHcmFkaWVudC5nZXQoKTsgfQorICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BT
aGFkb3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyb3BTaGFkb3c7IH0KKyAgICBGbG9hdFNp
emUgc2hhZG93T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLm9mZnNldDsgfQor
ICAgIGZsb2F0IHNoYWRvd0JsdXIoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuYmx1clJh
ZGl1czsgfQorICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGRy
b3BTaGFkb3coKS5jb2xvcjsgfQorICAgIHZvaWQgc2V0RHJvcFNoYWRvdyhjb25zdCBEcm9wU2hh
ZG93JiBkcm9wU2hhZG93KSB7IG1fc3RhdGUuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIGNsZWFyU2hhZG93KCkgeyBzZXREcm9w
U2hhZG93KHsgfSk7IH0KIAotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUp
IHsgbV9zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOyB9Ci0gICAgV2luZFJ1bGUgZmls
bFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9CisgICAgLy8gRklYTUU6
IFVzZSBkcm9wU2hhZG93KCkgYW5kIHNldERyb3BTaGFkb3coKSBpbnN0ZWFkIG9mIGNhbGxpbmcg
dGhlc2UgZnVuY3Rpb25zLgorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0U2hhZG93KEZsb2F0
U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKKyAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBG
bG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1clJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBT
aGFkb3dSYWRpdXNNb2RlIHNoYWRvd1JhZGl1c01vZGUgPSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZh
dWx0KSB7IHNldERyb3BTaGFkb3coeyBvZmZzZXQsIGJsdXJSYWRpdXMsIGNvbG9yLCBzaGFkb3dS
YWRpdXNNb2RlIH0pOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwotICAgIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmZpbGxDb2xvcjsgfQorICAgIGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0
IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5pc1Zpc2libGUoKTsgfQorICAgIGJvb2wgaGFzQmx1cnJl
ZFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5pc0JsdXJyZWQoKTsgfQorICAg
IGJvb2wgaGFzU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmhhc091dHNldHMo
KTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVy
bj4mJik7Ci0gICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmZpbGxQYXR0ZXJuLmdldCgpOyB9CisgICAgQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5jb21wb3NpdGVNb2RlOyB9CisgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gY29tcG9zaXRlTW9kZSgp
Lm9wZXJhdGlvbjsgfQorICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBj
b21wb3NpdGVNb2RlKCkuYmxlbmRNb2RlOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENv
bXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSkgeyBtX3N0YXRlLnNldENvbXBvc2l0ZU1vZGUoY29t
cG9zaXRlTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxl
bmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIHsgc2V0Q29tcG9zaXRlTW9kZSh7IG9wZXJhdGlv
biwgYmxlbmRNb2RlIH0pOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxHcmFk
aWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgPSB7IH0pOwotICAg
IEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxHcmFk
aWVudC5nZXQoKTsgfQorICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5h
bHBoYTsgfQorICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgbV9zdGF0ZS5zZXRBbHBo
YShhbHBoYSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICB2b2lkIHNldFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgbV9zdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyBkaWRV
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXNDaGFuZ2UpOyB9Ci0gICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnRleHREcmF3aW5nTW9kZTsgfQorICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3
aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSkgeyBtX3N0YXRlLnNldFRleHREcmF3aW5nTW9k
ZSh0ZXh0RHJhd2luZ01vZGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIAorICAg
IEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKyAgICB2b2lkIHNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSkgeyBtX3N0YXRlLnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAK
LSAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0
YXRlLnNob3VsZEFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhczsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSk7IH0KICAg
ICBib29sIHNob3VsZEFudGlhbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50
aWFsaWFzOyB9CisgICAgdm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxp
YXMpIHsgbV9zdGF0ZS5zZXRTaG91bGRBbnRpYWxpYXMoc2hvdWxkQW50aWFsaWFzKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hvdWxkU21vb3RoRm9udHMoYm9v
bCBzaG91bGRTbW9vdGhGb250cykgeyBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gc2hvdWxk
U21vb3RoRm9udHM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZFNtb290aEZvbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250czsgfQorICAgIHZvaWQg
c2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBtX3N0YXRlLnNl
dFNob3VsZFNtb290aEZvbnRzKHNob3VsZFNtb290aEZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAogICAgIC8vIE5vcm1hbGx5IENHIGVuYWJsZXMgc3VicGl4ZWwtcXVhbnRpemF0
aW9uIGJlY2F1c2UgaXQgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIGFsaWduaW5nIGdseXBo
cy4KICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIGhhdmUgdG8gZGlzYWJsZSB0byB0byBlbnN1cmUg
YSBoaWdoLXF1YWxpdHkgb3V0cHV0IG9mIHRoZSBnbHlwaHMuCi0gICAgdm9pZCBzZXRTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsg
bV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHM7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpOyB9CiAgICAgYm9vbCBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250czsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7IGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSkgeyBtX3N0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgPSBxdWFsaXR5OyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSk7IH0KLSAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9Ci0KLSAgICB2b2lkIHNldEFs
cGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuYWxwaGEgPSBhbHBoYTsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKTsgfQotICAgIGZsb2F0
IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hbHBoYTsgfQotCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOyB9
Ci0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuYmxlbmRNb2RlOyB9CisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICB2b2lkIHNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsg
bV9zdGF0ZS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICB2b2lkIHNldERyYXdMdW1pbmFu
Y2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFz
ayA9IGRyYXdMdW1pbmFuY2VNYXNrOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpOyB9CiAgICAgYm9vbCBkcmF3THVt
aW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7IH0K
LQotICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUp
IHsgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBtb2RlOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKTsgfQotICAgIFRl
eHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUudGV4dERyYXdpbmdNb2RlOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYWRv
dyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIFNoYWRvd1JhZGl1
c01vZGUgPSBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgY2xlYXJTaGFkb3coKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFNo
YWRvdyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7Ci0KLSAgICBib29sIGhhc1Zp
c2libGVTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmlzaWJs
ZSgpOyB9Ci0gICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBoYXNWaXNpYmxlU2hh
ZG93KCkgJiYgKG1fc3RhdGUuc2hhZG93Qmx1ciB8fCBtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0
aCgpIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsgfQotICAgIGJvb2wgaGFzQmx1
cnJlZFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiBtX3N0YXRl
LnNoYWRvd0JsdXI7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1
bWluYW5jZU1hc2spIHsgbV9zdGF0ZS5zZXREcmF3THVtaW5hbmNlTWFzayhkcmF3THVtaW5hbmNl
TWFzayk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBw
ZWFyYW5jZSkgeyBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0gdXNlRGFya0FwcGVhcmFuY2U7
IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBw
ZWFyYW5jZUNoYW5nZSk7IH0KICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0Fw
cGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBtX3N0YXRlLnNldFVzZURhcmtBcHBl
YXJhbmNlKHVzZURhcmtBcHBlYXJhbmNlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICNl
bmRpZgogCiAgICAgdmlydHVhbCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9IHN0
ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBDYWxsZWQgKmFmdGVyKiBhbnkgY2hhbmdlIHRvIEdyYXBo
aWNzQ29udGV4dFN0YXRlOyBnZW5lcmFsbHkgdXNlZCB0byBwcm9wYWdhdGUgY2hhbmdlcwogICAg
IC8vIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0J3Mgc3RhdGUuCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXN0
b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggNTJjYWRkNjQ5MTkzNTQwODY2NGMyNzZmY2Uz
ZDU5OWU2MTRmOWFmMy4uYTcyNTUzYTJhODIxNDNiOGI2MTg4MjQyNjJhNTU1Njc4N2ZlMDMxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dFN0YXRlLmNwcApAQCAtMjYsMzAxICsyNiwxODAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgogCi0jaW5jbHVkZSAiR3Jh
ZGllbnQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJQYXR0ZXJu
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoZmxhZywgcHJvcGVydHkp
IFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCi0gICAgICAg
IGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZyk7Ci0KLUdyYXBoaWNz
Q29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAgOiBzaG91bGRBbnRpYWxp
YXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCi0gICAgLCBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZh
bHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCitHcmFwaGljc0NvbnRleHRTdGF0
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzKQor
ICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0
YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9
IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
Ym9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29udGFpbnNPbmx5SW5saW5lQ2hhbmdlcygpIGNv
bnN0CiB7Ci0gICAgYXV0byBzdHJva2VGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYg
KGZsYWdzLmNvbnRhaW5zQW55KHN0cm9rZUZsYWdzKSkgewotICAgICAgICBzdHJva2VDb2xvciA9
IHN0YXRlLnN0cm9rZUNvbG9yOwotICAgICAgICBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9r
ZUdyYWRpZW50OwotICAgICAgICBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tlUGF0dGVybjsK
LSAgICB9Ci0KLSAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlIH07Ci0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zQW55KGZpbGxGbGFncykpIHsKLSAgICAgICAgZmlsbENvbG9yID0gc3RhdGUuZmls
bENvbG9yOwotICAgICAgICBmaWxsR3JhZGllbnQgPSBzdGF0ZS5maWxsR3JhZGllbnQ7Ci0gICAg
ICAgIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgfQotCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAg
ICAgIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNldDsKLSAgICAgICAgc2hhZG93Qmx1
ciA9IHN0YXRlLnNoYWRvd0JsdXI7Ci0gICAgICAgIHNoYWRvd0NvbG9yID0gc3RhdGUuc2hhZG93
Q29sb3I7Ci0gICAgICAgIHNoYWRvd1JhZGl1c01vZGUgPSBzdGF0ZS5zaGFkb3dSYWRpdXNNb2Rl
OwotICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgc3Ryb2tlVGhpY2tuZXNzID0gc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0ZXh0RHJhd2luZ01vZGUg
PSBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgc3Ryb2tlU3R5bGUg
PSBzdGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBmaWxsUnVsZSA9IHN0YXRlLmZp
bGxSdWxlOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpB
bHBoYUNoYW5nZSkpCi0gICAgICAgIGFscGhhID0gc3RhdGUuYWxwaGE7Ci0KLSAgICBpZiAoZmxh
Z3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7Ci0gICAg
ICAgIGNvbXBvc2l0ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAg
IGJsZW5kTW9kZSA9IHN0YXRlLmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAg
ICAgIHNob3VsZEFudGlhbGlhcyA9IHN0YXRlLnNob3VsZEFudGlhbGlhczsKKyAgICBzdGF0aWMg
Y29uc3RleHByIENoYW5nZUZsYWdzIGlubGluZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VU
aGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07CiAKLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZv
bnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0ZS5zaG91bGRTbW9v
dGhGb250czsKKyAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lQ2hh
bmdlRmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5n
ZSkpCi0gICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250czsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdl
OjpTdHJva2VCcnVzaCkgJiYgIXN0cm9rZUJydXNoLmlzSW5saW5lQ29sb3IoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6RmlsbEJydXNoKSAmJiAhZmlsbEJydXNoLmlzSW5s
aW5lQ29sb3IoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0gICAg
ICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAordm9p
ZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4m
IGxhc3REcmF3aW5nU3RhdGUpCit7CisgICAgYXV0byBtZXJnZUNoYW5nZSA9IFsmXShDaGFuZ2Ug
Y2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAg
aWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpIHx8IHRoaXMtPipwcm9wZXJ0
eSA9PSBzdGF0ZS4qcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMt
Pipwcm9wZXJ0eSA9IHN0YXRlLipwcm9wZXJ0eTsKKyAgICAgICAgY2hhbmdlRmxhZ3Muc2V0KGNo
YW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVydHkg
IT0gdGhpcy0+KnByb3BlcnR5KTsKKyAgICB9OworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpG
aWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmls
bEJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VU
aGlja25lc3MsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhp
Y2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkRy
b3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9w
U2hhZG93KTsKKworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsKKyAgICBtZXJnZUNoYW5n
ZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
Ojp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRBbnRp
YWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFs
aWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7CisgICAgbWVy
Z2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0g
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFy
YW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFya0Fw
cGVhcmFuY2U7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOwogI2Vu
ZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
U3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdyYWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hB
TkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hhbmdlLCBzdHJva2VQYXR0ZXJuKTsKLSAgICBD
SEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsR3JhZGllbnRDaGFuZ2UsIGZpbGxHcmFkaWVu
dCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFBhdHRlcm5DaGFuZ2UsIGZp
bGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAgICAgICYmIChtX3N0YXRlLnNoYWRvd09mZnNl
dCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Qmx1
ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAgICAgICB8fCBtX3N0YXRlLnNoYWRvd0NvbG9y
ICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJP
UEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJva2VUaGlja25lc3MpOwotICAgIENIRUNL
X0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5nTW9kZUNoYW5nZSwgdGV4dERyYXdpbmdN
b2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VDb2xvckNoYW5nZSwg
c3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxDb2xvckNo
YW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VT
dHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
QW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KQotICAgICAgICAmJiAobV9zdGF0
ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciB8fCBtX3N0YXRl
LmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUpKSB7Ci0gICAgICAgIGNoYW5nZUZsYWdzLmFk
ZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKLSAgICAg
ICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2Up
OwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZEFudGlhbGlh
c0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJU
WShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hvdWxkU21vb3RoRm9udHMpOwotICAgIENIRUNL
X0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9Q
RVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwgc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKERyYXdMdW1pbmFuY2VNYXNrQ2hh
bmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5jZSk7
CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKSBz
ZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4gS2VlcCBvdXIgYWxwaGEgaW4gc3luYy4KKyAg
ICBhbHBoYSA9IDE7CiAjZW5kaWYKLQotICAgIHJldHVybiBjaGFuZ2VGbGFnczsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkRW5kVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3JpZ2luYWxPcGFjaXR5KQogewotICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0
YXRlLCBmbGFncyk7Ci0KLSAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFk
aWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsK
LSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKQotICAgICAgICBtX2NoYW5n
ZUZsYWdzLnJlbW92ZShzdHJva2VGbGFncyk7Ci0KLSAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hh
bmdlIH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZpbGxGbGFncykpCi0gICAgICAgIG1f
Y2hhbmdlRmxhZ3MucmVtb3ZlKGZpbGxGbGFncyk7Ci0KLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJh
dG9yRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFu
Z2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxh
Z3MuY29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdl
RmxhZ3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOwotCi0gICAgbV9jaGFuZ2VGbGFn
cy5hZGQoZmxhZ3MpOworI2lmIFVTRShDRykKKyAgICAvLyBDR0NvbnRleHRCZWdpblRyYW5zcGFy
ZW5jeUxheWVyKCkgc2V0cyB0aGUgQ0cgZ2xvYmFsIGFscGhhIHRvIDEuIFJlc29yZSBvdXIgYWxw
aGEgbm93LgorICAgIGFscGhhID0gb3JpZ2luYWxPcGFjaXR5OworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ob3JpZ2luYWxPcGFjaXR5KTsKKyNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGF0
aWMgY29uc3QgY2hhciogc3RhdGVDaGFuZ2VOYW1lKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2UgY2hhbmdlKQogewotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlR3JhZGllbnQoKm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQsIG1fc3RhdGUuc3Ryb2tlR3JhZGll
bnRTcGFjZVRyYW5zZm9ybSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQu
c2V0U3Ryb2tlUGF0dGVybigqbV9zdGF0ZS5zdHJva2VQYXR0ZXJuKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFu
Z2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqbV9zdGF0ZS5maWxsR3JhZGll
bnQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIHN3aXRjaCAoY2hh
bmdlKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2g6
CisgICAgICAgIHJldHVybiAiZmlsbC1icnVzaCI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAg
ICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlOgorICAgICAgICByZXR1cm4g
ImZpbGwtcnVsZSI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBjb250
ZXh0LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1
c2g6CisgICAgICAgIHJldHVybiAic3Ryb2tlLWJydXNoIjsKIAotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAg
ICBjb250ZXh0LnNldFNoYWRvdyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dC
bHVyLCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzOgorICAg
ICAgICByZXR1cm4gInN0cm9rZS10aGlja25lc3MiOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlOgor
ICAgICAgICByZXR1cm4gInN0cm9rZS1zdHlsZSI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZToK
KyAgICAgICAgcmV0dXJuICJjb21wb3NpdGUtbW9kZSI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdzoKKyAgICAgICAgcmV0
dXJuICJkcm9wLXNoYWRvdyI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IobV9zdGF0ZS5maWxsQ29sb3IpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6QWxwaGE6CisgICAgICAgIHJldHVybiAiYWxwaGEiOwogCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hh
bmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtX3N0YXRlLnN0cm9rZVN0eWxl
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHk6CisgICAgICAgIHJldHVybiAiaW1hZ2UtaW50ZXJwb2xhdGlvbi1xdWFsaXR5
IjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsUnVsZUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbFJ1bGUobV9zdGF0ZS5m
aWxsUnVsZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJh
d2luZ01vZGU6CisgICAgICAgIHJldHVybiAidGV4dC1kcmF3aW5nLW1vZGUiOwogCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdl
KSkKLSAgICAgICAgY29udGV4dC5zZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhczoKKyAgICAgICAgcmV0
dXJuICJzaG91bGQtYW50aWFsaWFzIjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
QW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5i
bGVuZE1vZGUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxk
U21vb3RoRm9udHM6CisgICAgICAgIHJldHVybiAic2hvdWxkLXNtb290aC1mb250cyI7CiAKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
QW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMobV9z
dGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOgorICAgICAgICByZXR1cm4gInNob3Vs
ZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKG1fc3RhdGUuc2hvdWxkU21vb3RoRm9u
dHMpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM6CisgICAgICAgIHJldHVybiAic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyI7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXREcmF3
THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzazoKKyAgICAgICAgcmV0
dXJuICJkcmF3LWx1bWluYW5jZS1tYXNrIjsKIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRVc2VEYXJrQXBw
ZWFyYW5jZShtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlOgorICAgICAgICByZXR1cm4gInVz
ZS1kYXJrLWFwcGVhcmFuY2UiOwogI2VuZGlmCisgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorVGV4dFN0cmVhbSYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZsYWdzLnRvUmF3KCkpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtZ3Jh
ZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUuc3Ry
b2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJmaWxsLWdyYWRpZW50IiwgbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCkpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQ
YXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXBhdHRlcm4iLCBt
X3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0JsdXIpOwotICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInNoYWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNoYWRvd09mZnNldCk7Ci0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9zdGF0ZS5zaGFkb3dDb2xv
cik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyIs
IG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOwot
ICAgIH0KKyAgICBhdXRvIGR1bXAgPSBbJl0oQ2hhbmdlIGNoYW5nZSwgYXV0byBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6KnByb3BlcnR5KSB7CisgICAgICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhjaGFuZ2UpKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KHN0YXRlQ2hhbmdlTmFtZShj
aGFuZ2UpLCB0aGlzLT4qcHJvcGVydHkpOworICAgIH07CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtdGhpY2tuZXNzIiwgbV9zdGF0ZS5zdHJv
a2VUaGlja25lc3MpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgY2hhbmdl
RmxhZ3MpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
dGV4dC1kcmF3aW5nLW1vZGUiLCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZS50b1JhdygpKTsKKyAg
ICBkdW1wKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKKyAgICBkdW1wKENoYW5nZTo6RmlsbFJ1bGUsICAgICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpOwogCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNv
bG9yQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtY29sb3IiLCBtX3N0
YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOworICAgIGR1bXAo
Q2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzdHJva2VUaGlja25lc3MpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CiAKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENv
bG9yQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWNvbG9yIiwgbV9zdGF0
ZS5maWxsQ29sb3IpOworICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBkdW1wKENo
YW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZHJvcFNoYWRvdyk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInN0cm9rZS1zdHlsZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUpOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBtX3N0YXRlLmZpbGxSdWxlKTsK
LQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpB
bHBoYUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0YXRlLmFs
cGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIG1fc3RhdGUu
YmxlbmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInNob3VsZC1hbnRpYWxpYXMiLCBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7Ci0KLSAgICBp
ZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21v
b3RoRm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zbW9vdGgt
Zm9udHMiLCBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJwaXhlbC1x
dWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hh
ZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJkcmF3
LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7CisgICAgZHVtcChD
aGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmFscGhhKTsKKyAgICBkdW1wKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Cisg
ICAgZHVtcChDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSk7CiAKKyAgICBkdW1wKENoYW5nZTo6U2hvdWxk
QW50aWFsaWFzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50
aWFsaWFzKTsKKyAgICBkdW1wKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOworICAgIGR1bXAoQ2hh
bmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIGR1bXAoQ2hhbmdlOjpTaGFkb3dz
SWdub3JlVHJhbnNmb3JtcywgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7CisgICAgZHVtcChDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBI
QVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFya0Fw
cGVhcmFuY2UpOworICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKKyAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2UgY2hhbmdlKQogewotICAgIHN0YXRlQ2hhbmdlLmR1bXAodHMpOworICAgIHRzIDw8IHN0YXRl
Q2hhbmdlTmFtZShjaGFuZ2UpOwogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQoreworICAgIHJldHVybiBzdGF0ZS5kdW1wKHRzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1
OTU5NTk2Ny4uZTgyNTE3ZWJlZTI2NTVmMWMzZmVmNjgyZDNhYTQ2YTE5ZGE3ZTI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5oCkBAIC0yNSwxMTYgKzI1LDIzOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxv
YXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUJy
dXNoLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3Mg
R3JhZGllbnQ7Ci1jbGFzcyBQYXR0ZXJuOwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUg
ewotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEdy
YXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhp
Y3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBlbnVtIENoYW5nZSA6IHVpbnQzMl90IHsKLSAgICAg
ICAgU3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAotICAg
ICAgICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCi0g
ICAgICAgIEZpbGxHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMiwK
LSAgICAgICAgRmlsbFBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAz
LAotICAgICAgICBTdHJva2VUaGlja25lc3NDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDQsCi0gICAgICAgIFN0cm9rZUNvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICA9IDEg
PDwgNSwKLSAgICAgICAgU3Ryb2tlU3R5bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0g
MSA8PCA2LAotICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxIDw8IDcsCi0gICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCA5LAotICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSAgICAg
ICAgICAgPSAxIDw8IDEwLAotICAgICAgICBBbHBoYUNoYW5nZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDExLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgICAg
ICAgICAgICAgICAgPSAxIDw8IDEyLAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2UgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDEzLAotICAgICAgICBUZXh0RHJhd2luZ01vZGVDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAotICAgICAgICBTaG91bGRBbnRpYWxpYXNDaGFu
Z2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBTaG91bGRTbW9vdGhGb250
c0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAotICAgICAgICBTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHNDaGFuZ2UgICAgICAgPSAxIDw8IDE3LAotICAgICAgICBEcmF3THVtaW5h
bmNlTWFza0NoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDE4LAotICAgICAgICBJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlICAgICAgICAgPSAxIDw8IDE5LAorICAgIGVudW0gY2xh
c3MgQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBGaWxsQnJ1c2ggICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDAsCisgICAgICAgIEZpbGxSdWxlICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MSwKKworICAgICAgICBTdHJva2VCcnVzaCAgICAgICAgICAgICAgICAgPSAxIDw8IDIsCisgICAg
ICAgIFN0cm9rZVRoaWNrbmVzcyAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgU3Ryb2tl
U3R5bGUgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorCisgICAgICAgIENvbXBvc2l0ZU1vZGUg
ICAgICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgRHJvcFNoYWRvdyAgICAgICAgICAgICAg
ICAgID0gMSA8PCA2LAorCisgICAgICAgIEFscGhhICAgICAgICAgICAgICAgICAgICAgICA9IDEg
PDwgNywKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlICAgICAgICAgICAgID0gMSA8PCA4LAorICAg
ICAgICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5ICAgPSAxIDw8IDksCisKKyAgICAgICAgU2hv
dWxkQW50aWFsaWFzICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICAgICAgU2hvdWxkU21vb3Ro
Rm9udHMgICAgICAgICAgID0gMSA8PCAxMSwKKyAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzID0gMSA8PCAxMiwKKyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgICAgID0g
MSA8PCAxMywKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2sgICAgICAgICAgID0gMSA8PCAxNCwK
ICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VEYXJrQXBwZWFyYW5j
ZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAorICAgICAgICBVc2VEYXJrQXBwZWFy
YW5jZSAgICAgICAgICAgPSAxIDw8IDE1LAogI2VuZGlmCiAgICAgfTsKLSAgICB1c2luZyBTdGF0
ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47CisgICAgdXNpbmcgQ2hhbmdlRmxhZ3Mg
PSBPcHRpb25TZXQ8Q2hhbmdlPjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4
dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSk7CisKKyAgICBDaGFuZ2VGbGFncyBjaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hh
bmdlcygpIHsgY2hhbmdlRmxhZ3MgPSB7IH07IH0KKworICAgIHZvaWQgc2V0RmlsbEJydXNoKGNv
bnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxC
cnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAg
ICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdyYWRpZW50KFdU
Rk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6
OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBh
dHRlcm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGNoYW5nZUZs
YWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAotICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MpOworICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpGaWxsUnVsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVs
ZSwgZmlsbFJ1bGUpOyB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50Owot
ICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOworICAgIHZvaWQgc2V0U3Ryb2tlQnJ1
c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tl
QnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIGJydXNoKTsgfQorICAg
IHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gsIHsg
Y29sb3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBn
cmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBzdHJva2VC
cnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFu
Z2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJva2VCcnVzaC5zZXRQYXR0ZXJuKFdU
Rk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0K
KworICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgeyBz
ZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KKyAgICB2b2lkIHNldFN0cm9r
ZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ry
b2tlU3R5bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUsIHN0cm9rZVN0eWxl
KTsgfQorCisgICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUgY29tcG9zaXRl
TW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0KKyAgICB2b2lkIHNldERy
b3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdywgZHJvcFNo
YWRvdyk7IH0KKworICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9Cisg
ICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5
IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9CisgICAgdm9pZCBzZXRU
ZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IHNl
dFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgdm9pZCBzZXRTaG91
bGRBbnRpYWxpYXMoYm9vbCBzaG91bGRBbnRpYWxpYXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzLCBz
aG91bGRBbnRpYWxpYXMpOyB9CisgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNo
b3VsZFNtb290aEZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMs
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMsIHNob3VsZFNtb290aEZv
bnRzKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorICAgIHZvaWQg
c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcykg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7IH0KKyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5j
ZU1hc2spIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9Cisj
aWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJh
bmNlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSwgdXNl
RGFya0FwcGVhcmFuY2UpOyB9CisjZW5kaWYKICAgICAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IGZp
bGxHcmFkaWVudDsKLSAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47CisgICAgYm9vbCBj
b250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBtZXJnZUNoYW5nZXMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNz
Q29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSA9IHN0ZDo6bnVsbG9wdCk7CiAKLSAgICBG
bG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAgIHZvaWQgZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXll
cigpOworICAgIHZvaWQgZGlkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3JpZ2luYWxPcGFj
aXR5KTsKIAotICAgIENvbG9yIHN0cm9rZUNvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29s
b3IgZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Cisg
ICAgV1RGOjpUZXh0U3RyZWFtJiBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OwogCi0gICAg
QWZmaW5lVHJhbnNmb3JtIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gZGVj
b2RlKERlY29kZXImKTsKIAotICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKLSAgICBm
bG9hdCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGZsb2F0IGFscGhhIHsgMSB9OworICAgIENoYW5n
ZUZsYWdzIGNoYW5nZUZsYWdzOwogCi0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xp
ZFN0cm9rZSB9OworICAgIFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7IENvbG9yOjpibGFjayB9Owog
ICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKLQotICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9
OwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3Bl
cmF0b3I6OlNvdXJjZU92ZXIgfTsKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2Rl
OjpOb3JtYWwgfTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaCB7IENvbG9yOjpi
bGFjayB9OworICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKKyAgICBTdHJva2VTdHls
ZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07CisgICAgCisgICAgQ29tcG9zaXRlTW9kZSBj
b21wb3NpdGVNb2RlIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6
Tm9ybWFsIH07CisgICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OworICAgIAorICAgIGZsb2F0IGFs
cGhhIHsgMSB9OwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OwotICAgIFNoYWRvd1JhZGl1
c01vZGUgc2hhZG93UmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQgfTsKKyAg
ICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6
OkZpbGwgfTsKIAotICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIDogMTsKLSAgICBib29sIHNob3Vs
ZFNtb290aEZvbnRzIDogMTsKLSAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA6
IDE7Ci0gICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA6IDE7Ci0gICAgYm9vbCBkcmF3
THVtaW5hbmNlTWFzayA6IDE7CisgICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgeyB0cnVlIH07Cisg
ICAgYm9vbCBzaG91bGRTbW9vdGhGb250cyB7IHRydWUgfTsKKyAgICBib29sIHNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyB7IHRydWUgfTsKKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zIHsgZmFsc2UgfTsKKyAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIHsgZmFsc2UgfTsKICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2Ug
OiAxOworICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UgeyBmYWxzZSB9OwogI2VuZGlmCi19Owor
ICAgIAorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0UHJv
cGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBj
b25zdCBUJiB2YWx1ZSkKKyAgICB7CisjaWYgIVVTRShDQUlSTykKKyAgICAgICAgaWYgKHRoaXMt
Pipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgICAg
ICB0aGlzLT4qcHJvcGVydHkgPSB2YWx1ZTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5n
ZSk7CisgICAgfQogCi1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgewotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKLSAgICAgICAgLCBtX2NoYW5nZUZsYWdzKGZsYWdzKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDaGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjoqcHJvcGVydHksIFQmJiB2YWx1ZSkKICAgICB7CisjaWYgIVVTRShDQUlSTykK
KyAgICAgICAgaWYgKHRoaXMtPipwcm9wZXJ0eSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKKyAg
ICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAgICAgfQorfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGF1dG8gZW5jb2RlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1
dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoY2hhbmdlKSkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgdGhpcy0+KnBy
b3BlcnR5OworICAgIH07CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyBjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgY29uc3Q7
CisgICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKIAotICAgIHZvaWQgYWNjdW11bGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzKTsKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwotICAgIAot
ICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdDsKKyAgICBlbmNvZGUoQ2hhbmdl
OjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmZpbGxCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJy
dXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1
c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBlbmNvZGUoQ2hh
bmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnN0cm9rZVN0eWxlKTsKKworICAgIGVuY29kZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7Cisg
ICAgZW5jb2RlKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKworICAgIGVuY29kZShDaGFuZ2U6OkFscGhh
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEp
OworICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZW5j
b2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxk
QW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRB
bnRpYWxpYXMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVu
Y29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBlbmNvZGUoQ2hh
bmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVt
aW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1p
bmFuY2VNYXNrKTsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGVuY29kZShD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBkZWNvZGUgPSBb
Jl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VG
bGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg
ICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRl
Y2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6
dHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm9wZXJ0eVR5cGU+IHZhbHVlOworICAgICAg
ICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHN0YXRlLipwcm9wZXJ0eSA9ICp2YWx1ZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Q2hhbmdlRmxhZ3M+IGNo
YW5nZUZsYWdzOworICAgIGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7CisgICAgaWYgKCFjaGFuZ2VG
bGFncykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlIHN0YXRlKCpjaGFuZ2VGbGFncyk7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hh
bmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmlsbEJydXNoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZShzdGF0ZSwgQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbFJ1bGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi1X
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpT
dHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
QnJ1c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVN
b2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmRyb3BTaGFkb3cpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFk
ZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHRE
cmF3aW5nTW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRl
Y29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdM
dW1pbmFuY2VNYXNrKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURh
cmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBw
ZWFyYW5jZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKKworICAgIHJl
dHVybiBzdGF0ZTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSk7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKQEAgLTE0MywyOCArMjY1LDI3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENo
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Rmls
bFBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2Us
Ci0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxl
Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
aGFkb3dDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRl
eHREcmF3aW5nTW9kZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5n
ZQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1
c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxS
dWxlLAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZUJydXNoLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpTdHJva2VUaGlja25lc3MsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVN0eWxlLAorCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3csCisKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGEsCisgICAgICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwKKyAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSwKKworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91
bGRBbnRpYWxpYXMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcmF3THVt
aW5hbmNlTWFzawogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFu
Z2UKKyAgICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VE
YXJrQXBwZWFyYW5jZQogI2VuZGlmCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCmluZGV4IDE1ZGYxZGZkYjZmM2Ex
NmFkNWVhZjY0NzI2MWZjZmM0YjdhOTNhYjQuLjI4OGI4YTVmMDAwMDZlYzdiM2UxYzJjYTVhYzY2
ZGFhYWMxZTI1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuY3BwCkBAIC0xMzYsNiArMTM2LDQ0IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgcmV0dXJuIHRz
IDw8IGJsZW5kTW9kZU5hbWUoYmxlbmRNb2RlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKQoreworICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlvbiIsIGNvbXBvc2l0ZU1vZGUub3BlcmF0
aW9uKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBjb21wb3NpdGVNb2RlLmJs
ZW5kTW9kZSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KQoreworICAgIHRzLmR1
bXBQcm9wZXJ0eSgic2hhZG93LW9mZnNldCIsIGRyb3BTaGFkb3cub2Zmc2V0KTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoInNoYWRvdy1ibHVyIiwgZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoInNoYWRvdy1jb2xvciIsIGRyb3BTaGFkb3cuY29sb3IpOworICAgIHRz
LmR1bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyIsIGRyb3BTaGFkb3cucmFk
aXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgIHJldHVybiB0czsKK30K
KworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpCit7CisgICAgc3dpdGNoIChpbnRlcnBvbGF0aW9u
UXVhbGl0eSkgeworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQ6CisgICAg
ICAgIHRzIDw8ICJkZWZhdWx0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0
aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZToKKyAgICAgICAgdHMgPDwgImRvLW5vdC1pbnRl
cnBvbGF0ZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6
OkxvdzoKKyAgICAgICAgdHMgPDwgImxvdyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50
ZXJwb2xhdGlvblF1YWxpdHk6Ok1lZGl1bToKKyAgICAgICAgdHMgPDwgIm1lZGl1bSI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2g6CisgICAgICAg
IHRzIDw8ICJoaWdoIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30K
KwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgV2luZFJ1bGUgcnVsZSkK
IHsKICAgICBzd2l0Y2ggKHJ1bGUpIHsKQEAgLTE4Miw0ICsyMjAsNDIgQEAgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgTGluZUpvaW4gam9pblN0eWxlKQogICAgIHJldHVy
biB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU3Ryb2tl
U3R5bGUgc3Ryb2tlU3R5bGUpCit7CisgICAgc3dpdGNoIChzdHJva2VTdHlsZSkgeworICAgIGNh
c2UgU3Ryb2tlU3R5bGU6Ok5vU3Ryb2tlOgorICAgICAgICB0cyA8PCAibm8tc3Ryb2tlIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6U29saWRTdHJva2U6CisgICAgICAg
IHRzIDw8ICJzb2xpZC1zdHJva2UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0
eWxlOjpEb3R0ZWRTdHJva2U6CisgICAgICAgIHRzIDw8ICJkb3R0ZWQtc3Ryb2tlIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RGFzaGVkU3Ryb2tlOgorICAgICAgICB0
cyA8PCAiZGFzaGVkLXN0cm9rZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5
bGU6OkRvdWJsZVN0cm9rZToKKyAgICAgICAgdHMgPDwgImRvdWJsZS1zdHJva2UiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpXYXZ5U3Ryb2tlOgorICAgICAgICB0cyA8
PCAid2F2eS1zdHJva2UiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOwor
fQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBUZXh0RHJhd2luZ01v
ZGUgdGV4dERyYXdpbmdNb2RlKQoreworICAgIHN3aXRjaCAodGV4dERyYXdpbmdNb2RlKSB7Cisg
ICAgY2FzZSBUZXh0RHJhd2luZ01vZGU6OkZpbGw6CisgICAgICAgIHRzIDw8ICJmaWxsIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZToKKyAgICAgICAg
dHMgPDwgInN0cm9rZSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCBkZWM0MzQ3MDJjZjc2YTg5ZmE4NjUzMGMz
Mzc2ZDhiYWM1ZDljYTllLi4zNzI5NzgzMWEyYmYzNDY4Y2FlYzhmNTIwMGYwNDc4MDc2NjZjYmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
cy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3Iu
aCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1
ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC03NCw2ICs3Niw0
MiBAQCBlbnVtIGNsYXNzIEJsZW5kTW9kZSA6IHVpbnQ4X3QgewogICAgIFBsdXNMaWdodGVyCiB9
OwogCitzdHJ1Y3QgQ29tcG9zaXRlTW9kZSB7CisgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0
aW9uOworICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ29tcG9zaXRlTW9kZSYgb3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gb3BlcmF0aW9u
ID09IG90aGVyLm9wZXJhdGlvbiAmJiBibGVuZE1vZGUgPT0gb3RoZXIuYmxlbmRNb2RlOworICAg
IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b21wb3NpdGVNb2RlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgQ29tcG9zaXRlTW9kZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBvcGVyYXRpb247CisgICAgZW5jb2RlciA8PCBibGVuZE1vZGU7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU1v
ZGU+IENvbXBvc2l0ZU1vZGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wZXJhdGlvbjsKKyAgICBkZWNvZGVyID4+IG9w
ZXJhdGlvbjsKKyAgICBpZiAoIW9wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CisgICAgZGVjb2Rl
ciA+PiBibGVuZE1vZGU7CisgICAgaWYgKCFibGVuZE1vZGUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpvcGVyYXRpb24sICpibGVuZE1vZGUgfSB9Owor
fQorCiBzdHJ1Y3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgIGVudW0gY2xhc3MgTW9k
ZSA6IHVpbnQ4X3QgewogICAgICAgICBUZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0
ZXJuYXRpdmVzLApAQCAtMTExLDYgKzE0OSw2NyBAQCBzdGQ6Om9wdGlvbmFsPERvY3VtZW50TWFy
a2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImCiAg
ICAgcmV0dXJuIHsgeyAqbW9kZSwgKnNob3VsZFVzZURhcmtBcHBlYXJhbmNlIH0gfTsKIH0KIAor
Ly8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Vi
a2l0LWJveC1zaGFkb3cuCisvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+
IDhweC4KK2VudW0gY2xhc3MgU2hhZG93UmFkaXVzTW9kZSA6IGJvb2wgeworICAgIERlZmF1bHQs
CisgICAgTGVnYWN5Cit9OworCitzdHJ1Y3QgRHJvcFNoYWRvdyB7CisgICAgRmxvYXRTaXplIG9m
ZnNldDsKKyAgICBmbG9hdCBibHVyUmFkaXVzIHsgMCB9OworICAgIENvbG9yIGNvbG9yOworICAg
IFNoYWRvd1JhZGl1c01vZGUgcmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQg
fTsKKworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gY29sb3IuaXNWaXNpYmxl
KCk7IH0KKyAgICBib29sIGlzQmx1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlzaWJsZSgpICYm
IGJsdXJSYWRpdXM7IH0KKyAgICBib29sIGhhc091dHNldHMoKSBjb25zdCB7IHJldHVybiBpc0Js
dXJyZWQoKSB8fCAoaXNWaXNpYmxlKCkgJiYgIW9mZnNldC5pc1plcm8oKSk7IH0KKworICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEcm9wU2hhZG93PiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEcm9w
U2hhZG93JiBhLCBjb25zdCBEcm9wU2hhZG93JiBiKQoreworICAgIHJldHVybiBhLm9mZnNldCA9
PSBiLm9mZnNldCAmJiBhLmJsdXJSYWRpdXMgPT0gYi5ibHVyUmFkaXVzICYmIGEuY29sb3IgPT0g
Yi5jb2xvciAmJiBhLnJhZGl1c01vZGUgPT0gYi5yYWRpdXNNb2RlOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBEcm9wU2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG9mZnNldDsKKyAgICBlbmNvZGVyIDw8IGJsdXJSYWRp
dXM7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKKyAgICBlbmNvZGVyIDw8IHJhZGl1c01vZGU7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPERyb3BTaGFkb3c+IERy
b3BTaGFkb3c6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBvZmZzZXQ7CisgICAgZGVjb2RlciA+PiBvZmZzZXQ7CisgICAgaWYgKCFvZmZz
ZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBibHVyUmFkaXVzOworICAgIGRlY29kZXIgPj4gYmx1clJhZGl1czsKKyAgICBpZiAoIWJs
dXJSYWRpdXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9yOworICAgIGlmICghY29sb3Ip
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYWRv
d1JhZGl1c01vZGU+IHJhZGl1c01vZGU7CisgICAgZGVjb2RlciA+PiByYWRpdXNNb2RlOworICAg
IGlmICghcmFkaXVzTW9kZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7IHsgKm9mZnNldCwgKmJsdXJSYWRpdXMsICpjb2xvciwgKnJhZGl1c01vZGUgfSB9Owor
fQorCiBlbnVtIGNsYXNzIEdyYWRpZW50U3ByZWFkTWV0aG9kIDogdWludDhfdCB7CiAgICAgUGFk
LAogICAgIFJlZmxlY3QsCkBAIC0xNTgsMTMgKzI1Nyw2IEBAIGVudW0gY2xhc3MgVGV4dERyYXdp
bmdNb2RlIDogdWludDhfdCB7CiB9OwogdXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRp
b25TZXQ8VGV4dERyYXdpbmdNb2RlPjsKIAotLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBp
cyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCi0vLyBJdCBoYXMgZGlm
ZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLWVudW0gY2xhc3MgU2hhZG93UmFkaXVz
TW9kZSA6IGJvb2wgewotICAgIERlZmF1bHQsCi0gICAgTGVnYWN5Ci19OwotCiBlbnVtIFRleHRC
YXNlbGluZSB7CiAgICAgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwKICAgICBUb3BUZXh0QmFzZWxp
bmUsCkBAIC0xODksOSArMjgxLDE0IEBAIGJvb2wgcGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJh
dG9yKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yJiwKIAogV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdl
YkNvcmU6OkJsZW5kTW9kZSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IpOwotV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IFdpbmRSdWxlKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBDb21wb3NpdGVNb2RlKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBEcm9wU2hhZG93Jik7
CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIExpbmVDYXApOwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIExpbmVKb2lu
KTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBTdHJva2VTdHlsZSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dERyYXdpbmdNb2RlKTsKK1dFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVs
ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGI2MjM2Nzg4
MGUzZTUzNTRiNjE3MTEzNDdjOWExMWI0MjI0Njg4NWUuLjZjMzMzMzk2MjcyMTUyNzc2ODY0NzBh
MDJiMTVmNTYyZWYxYmEwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludEludmFsaWRh
dGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXM7IH0KICAgICBi
b29sIGRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFp
bnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6RGV0ZWN0
aW5nQ29udGVudGZ1bFBhaW50OyB9CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3Rh
dGUmKSBmaW5hbCB7IH0KIAogI2lmIFVTRShDRykKICAgICB2b2lkIHNldElzQWNjZWxlcmF0ZWRD
b250ZXh0KGJvb2wpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBiYjEzOGI1Mjk3YTUyMWZiZjdkNjkzY2QxMTQxMDQ0
MDBmY2FiYzRlLi45MDI0ZjVkMWFiZmNlMzgwODE4M2EzYjIzMWZiY2UwZmZiMmZmNDE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAt
MTkxLDE3ICsxOTEsMTcgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUm
IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IEMKICAgICB1cGRhdGVTaGFk
b3dCbHVyVmFsdWVzKCk7CiB9CiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogbV9jb2xvcihzdGF0ZS5zaGFkb3dDb2xvcikK
LSAgICAsIG1fYmx1clJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyLCBzdGF0ZS5zaGFkb3dCbHVyKQot
ICAgICwgbV9vZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0KQotICAgICwgbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKK1NoYWRvd0JsdXI6OlNo
YWRvd0JsdXIoY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdywgYm9vbCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcykKKyAgICA6IG1fY29sb3IoZHJvcFNoYWRvdy5jb2xvcikKKyAgICAsIG1fYmx1
clJhZGl1cyhkcm9wU2hhZG93LmJsdXJSYWRpdXMsIGRyb3BTaGFkb3cuYmx1clJhZGl1cykKKyAg
ICAsIG1fb2Zmc2V0KGRyb3BTaGFkb3cub2Zmc2V0KQorICAgICwgbV9zaGFkb3dzSWdub3JlVHJh
bnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8g
Q29yZSBHcmFwaGljcyBpbmNvcnJlY3RseSByZW5kZXJzIHNoYWRvd3Mgd2l0aCByYWRpdXMgPiA4
cHggKDxyZGFyOi8vcHJvYmxlbS84MTAzNDQyPiksCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gcHJl
c2VydmUgdGhpcyBidWdneSBiZWhhdmlvciBmb3IgY2FudmFzIGFuZCAtd2Via2l0LWJveC1zaGFk
b3cuCi0gICAgaWYgKHN0YXRlLnNoYWRvd1JhZGl1c01vZGUgPT0gU2hhZG93UmFkaXVzTW9kZTo6
TGVnYWN5KSB7Ci0gICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSByYWRpdXNUb0xlZ2FjeVJhZGl1
cyhzdGF0ZS5zaGFkb3dCbHVyKTsKKyAgICBpZiAoZHJvcFNoYWRvdy5yYWRpdXNNb2RlID09IFNo
YWRvd1JhZGl1c01vZGU6OkxlZ2FjeSkgeworICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gcmFk
aXVzVG9MZWdhY3lSYWRpdXMoZHJvcFNoYWRvdy5ibHVyUmFkaXVzKTsKICAgICAgICAgbV9ibHVy
UmFkaXVzID0gRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIpOwogICAgIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4
IDE0ZmQ4M2VkZTFhMWJhY2YxNzdmMzMxZWNhZDFhNDMwMjkzZjYwM2EuLjhlZmQ2Mzc3YWFlYmU5
ODNlZTNhZjU4NjEzMDkxMGJlNjYxNzcxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1z
dHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7CitzdHJ1Y3QgRHJvcFNoYWRvdzsKIGNsYXNzIElt
YWdlQnVmZmVyOwogCiBjbGFzcyBTaGFkb3dCbHVyIHsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgU2hhZG93Qmx1cigpOwogICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiBy
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYsIGJvb2wgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7Ci0gICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOworICAgIFNoYWRvd0JsdXIoY29uc3QgRHJvcFNoYWRvdyYsIGJvb2wg
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKICAgICB2b2lkIHNldFNoYWRvd1Zh
bHVlcyhjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwgY29uc3QgQ29sb3ImLCBi
b29sIGlnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmVmOTQyNDBkNmFi
OTVkZjNlNTAzN2RhZGNmNmE0ZTA3MzUyNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCkBAIC0wLDAgKzEsOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvdXJjZUJydXNoLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU291cmNlQnJ1c2g6OlNvdXJjZUJydXNoKGNvbnN0IENvbG9yJiBjb2xvciwgc3RkOjpv
cHRpb25hbDxCcnVzaD4mJiBicnVzaCkKKyAgICA6IG1fY29sb3IoY29sb3IpCisgICAgLCBtX2Jy
dXNoKFdURk1vdmUoYnJ1c2gpKQoreworfQorCitjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFNvdXJj
ZUJydXNoOjpncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QWZmaW5lVHJhbnNmb3JtPiBpZGVudGl0eTsKKyAgICBpZiAoIW1fYnJ1c2gp
CisgICAgICAgIHJldHVybiBpZGVudGl0eS5nZXQoKTsKKworICAgIGlmIChhdXRvKiBncmFkaWVu
dCA9IHN0ZDo6Z2V0X2lmPEJydXNoOjpMb2dpY2FsR3JhZGllbnQ+KCZtX2JydXNoLT5icnVzaCkp
CisgICAgICAgIHJldHVybiBncmFkaWVudC0+c3BhY2VUcmFuc2Zvcm07CisKKyAgICByZXR1cm4g
aWRlbnRpdHkuZ2V0KCk7Cit9CisKK0dyYWRpZW50KiBTb3VyY2VCcnVzaDo6Z3JhZGllbnQoKSBj
b25zdAoreworICAgIGlmICghbV9icnVzaCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKGF1dG8qIGdyYWRpZW50ID0gc3RkOjpnZXRfaWY8QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4o
Jm1fYnJ1c2gtPmJydXNoKSkKKyAgICAgICAgcmV0dXJuIGdyYWRpZW50LT5ncmFkaWVudC5wdHIo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGF0dGVybiogU291cmNlQnJ1c2g6OnBhdHRl
cm4oKSBjb25zdAoreworICAgIGlmICghbV9icnVzaCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgaWYgKGF1dG8qIHBhdHRlcm4gPSBzdGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZtX2Jy
dXNoLT5icnVzaCkpCisgICAgICAgIHJldHVybiBwYXR0ZXJuLT5wdHIoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwordm9pZCBTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQoUmVmPEdyYWRpZW50
PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKQorewor
ICAgIG1fYnJ1c2ggPSB7IEJydXNoOjpMb2dpY2FsR3JhZGllbnQgeyBXVEZNb3ZlKGdyYWRpZW50
KSwgc3BhY2VUcmFuc2Zvcm0gfSB9OworfQorCit2b2lkIFNvdXJjZUJydXNoOjpzZXRQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCit7CisgICAgbV9icnVzaCA9IHsgV1RGTW92ZShwYXR0
ZXJuKSB9OworfQorCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9y
IiwgYnJ1c2guY29sb3IoKSk7CisKKyAgICBpZiAoYXV0byBncmFkaWVudCA9IGJydXNoLmdyYWRp
ZW50KCkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZ3JhZGllbnQiLCBncmFkaWVudCk7CisK
KyAgICBpZiAoYXV0byBwYXR0ZXJuID0gYnJ1c2gucGF0dGVybigpKQorICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInBhdHRlcm4iLCBwYXR0ZXJuKTsKKworICAgIHJldHVybiB0czsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnJ1c2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJydXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJkOGEzYjUwOTFkMTI4ZjRjMjNiOTNiZDNlYTFj
NmYyMzgxY2QwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJydXNoLmgKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAiUGF0dGVybi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUJydXNoIHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQnJ1c2ggeworICAgICAgICBzdHJ1Y3QgTG9naWNhbEdyYWRpZW50IHsKKyAgICAgICAg
ICAgIFJlZjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
c3BhY2VUcmFuc2Zvcm07CisKKyAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExvZ2ljYWxHcmFkaWVudD4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGQ6OnZhcmlhbnQ8TG9naWNhbEdy
YWRpZW50LCBSZWY8UGF0dGVybj4+IGJydXNoOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgfTsKKworICAgIFNvdXJjZUJydXNoKCkgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIFNvdXJjZUJydXNoKGNvbnN0IENvbG9yJiwgc3RkOjpvcHRpb25hbDxCcnVzaD4m
JiA9IHN0ZDo6bnVsbG9wdCk7CisKKyAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yOyB9CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciBjb2xvcikgeyBt
X2NvbG9yID0gY29sb3I7IH0KKworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QnJ1c2g+JiBicnVz
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnJ1c2g7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIEdyYWRp
ZW50KiBncmFkaWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBhdHRlcm4qIHBhdHRl
cm4oKSBjb25zdDsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oKSBjb25zdDsKKworICAgIHZvaWQgc2V0R3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtID0geyB9KTsKKyAgICB2b2lkIHNl
dFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOworCisgICAgYm9vbCBpc0lubGluZUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gIW1fYnJ1c2ggJiYgbV9jb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKTsgfQor
ICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9icnVzaCB8fCBtX2NvbG9yLmlz
VmlzaWJsZSgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U291cmNlQnJ1c2g+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAg
Q29sb3IgbV9jb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIHN0ZDo6b3B0aW9uYWw8QnJ1c2g+
IG1fYnJ1c2g7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUJydXNo
OjpCcnVzaDo6TG9naWNhbEdyYWRpZW50JiBhLCBjb25zdCBTb3VyY2VCcnVzaDo6QnJ1c2g6Okxv
Z2ljYWxHcmFkaWVudCYgYikKK3sKKyAgICByZXR1cm4gYS5ncmFkaWVudC5wdHIoKSA9PSBiLmdy
YWRpZW50LnB0cigpICYmIGEuc3BhY2VUcmFuc2Zvcm0gPT0gYi5zcGFjZVRyYW5zZm9ybTsKK30K
KworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VCcnVzaDo6QnJ1c2gmIGEsIGNv
bnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYikKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihh
LmJydXNoLAorICAgICAgICBbJl0gKGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdy
YWRpZW50JiBhR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiR3JhZGllbnQgPSBz
dGQ6OmdldF9pZjxTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4oJmIuYnJ1c2gp
KQorICAgICAgICAgICAgICAgIHJldHVybiBhR3JhZGllbnQgPT0gKmJHcmFkaWVudDsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8
UGF0dGVybj4mIGFQYXR0ZXJuKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYlBhdHRlcm4gPSBz
dGQ6OmdldF9pZjxSZWY8UGF0dGVybj4+KCZiLmJydXNoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gYVBhdHRlcm4ucHRyKCkgPT0gYlBhdHRlcm4tPnB0cigpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTb3VyY2VCcnVzaCYgYSwgY29uc3QgU291cmNlQnJ1c2gmIGIpCit7CisgICAgcmV0dXJu
IGEuY29sb3IoKSA9PSBiLmNvbG9yKCkgJiYgYS5icnVzaCgpID09IGIuYnJ1c2goKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJydXNoOjpMb2dp
Y2FsR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgZ3JhZGllbnQuZ2V0KCk7CisgICAgZW5jb2RlciA8PCBzcGFjZVRyYW5zZm9ybTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g6
OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ+IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRp
ZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWdyYWRpZW50KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3Jt
PiBzcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVyID4+IHNwYWNlVHJhbnNmb3JtOworICAgIGlm
ICghc3BhY2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSwgKnNwYWNlVHJhbnNmb3JtIH0gfTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OkJydXNoOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXVEY6OnN3aXRjaE9uKGJydXNoLAor
ICAgICAgICBbJl0gKGNvbnN0IExvZ2ljYWxHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAgICAg
ICAgIGVuY29kZXIgPDwgdHJ1ZSA8PCBncmFkaWVudDsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
IChjb25zdCBSZWY8UGF0dGVybj4mIHBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwg
ZmFsc2UgPDwgcGF0dGVybi5nZXQoKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoOjpCcnVzaD4gU291
cmNlQnJ1c2g6OkJydXNoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGhhc0dyYWRpZW50OworICAgIGRlY29kZXIgPj4gaGFzR3JhZGllbnQ7Cisg
ICAgaWYgKCFoYXNHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGlmICgqaGFzR3JhZGllbnQpIHsKKyAgICAgICAgYXV0byBncmFkaWVudCA9IExvZ2ljYWxHcmFk
aWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICBpZiAoIWdyYWRpZW50KQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpncmFk
aWVudCkgfSB9OworICAgIH0KKworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShk
ZWNvZGVyKTsKKyAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYXR0ZXJuKSB9IH07Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUJydXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7CisgICAgZW5jb2RlciA8PCBtX2JydXNo
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VCcnVz
aD4gU291cmNlQnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0
aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4gY29sb3I7CisgICAgaWYgKCFjb2xv
cikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxCcnVzaD4+IGJydXNoOworICAgIGRlY29kZXIgPj4gYnJ1c2g7CisgICAgaWYg
KCFicnVzaCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBTb3Vy
Y2VCcnVzaCgqY29sb3IsIFdURk1vdmUoKmJydXNoKSk7Cit9CisKK1dURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTb3VyY2VCcnVzaCYpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAxNTUyMzU2YTIzYTVm
ZGZiMTBhZmVjYTJjYzkyYTcyNzk0NTgxMDJlLi4yZGE0OTFmZDg3ZjZjZmJiMzNlNDdkOTgxMjMz
N2JmMjE1OGY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU1OSw0MiArNTU5LDQyIEBA
IEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiAgICAgLCBmaWxsUnVsZShzdGF0ZS5m
aWxsUnVsZSkKIHsKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pIHsKLSAgICAgICAgcGF0dGVy
bi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgaWYgKGF1dG8gZmlsbFBhdHRlcm4gPSBzdGF0
ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7CisgICAgICAgIHBhdHRlcm4ub2JqZWN0ID0gYWRvcHRS
ZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkp
OwogCi0gICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxl
SW1hZ2UoKTsKKyAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gZmlsbFBhdHRlcm4tPnRpbGVJ
bWFnZSgpOwogICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2Uuc2l6ZSgpOwotICAg
ICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFgoKTsKLSAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCkgewotICAgICAg
ICBncmFkaWVudC5iYXNlID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0
YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgcGF0dGVybi50cmFuc2Zv
cm0gPSBmaWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CisgICAgICAgIHBhdHRl
cm4ucmVwZWF0WCA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRYKCk7CisgICAgICAgIHBhdHRlcm4ucmVw
ZWF0WSA9IGZpbGxQYXR0ZXJuLT5yZXBlYXRZKCk7CisgICAgfSBlbHNlIGlmIChhdXRvIGZpbGxH
cmFkaWVudCA9IHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgpKSB7CisgICAgICAgIGdyYWRpZW50
LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmlsbEJydXNoLmdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQot
ICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0YXRlLmZpbGxHcmFkaWVudC0+
Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGZpbGxHcmFkaWVudC0+
Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbENvbG9y
OworICAgICAgICBjb2xvciA9IHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpOwogfQogCiBTdHJva2VT
b3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAg
ICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKIHsKLSAgICBpZiAoc3RhdGUuc3Ryb2tlUGF0
dGVybikKLSAgICAgICAgcGF0dGVybiA9IGFkb3B0UmVmKHN0YXRlLnN0cm9rZVBhdHRlcm4tPmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwotICAgIGVsc2UgaWYgKHN0
YXRlLnN0cm9rZUdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRpZW50LmJhc2UgPSBzdGF0ZS5zdHJv
a2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJh
bnNmb3JtKTsKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tlQnJ1c2gu
cGF0dGVybigpKQorICAgICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3Ryb2tlUGF0dGVybi0+Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgZWxzZSBpZiAoYXV0
byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCkpIHsKKyAgICAg
ICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRl
LnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0
ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0YXRl
LnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0
ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuc3Ry
b2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAg
Y29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VC
cnVzaC5jb2xvcigpOwogfQogCiBTaGFkb3dTdGF0ZTo6U2hhZG93U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogb2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNldCkK
LSAgICAsIGJsdXIoc3RhdGUuc2hhZG93Qmx1cikKLSAgICAsIGNvbG9yKHN0YXRlLnNoYWRvd0Nv
bG9yKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0KQorICAgICwgYmx1cihz
dGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMpCisgICAgLCBjb2xvcihzdGF0ZS5kcm9wU2hhZG93
LmNvbG9yKQogICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcykKICAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKQotICAgICwgZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0b3Ioc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpCisgICAgLCBnbG9iYWxDb21wb3Np
dGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
aW5kZXggYTdhZjBjZWI1MjQ5MDQwNDFlZTEyZDUxZjg5YzZkZjE2Y2IzNjAzNy4uZmU3MzhiZGY3
N2U4Y2U3NjJhY2M5YTBmMGY4NGRkODM2MWM2OWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgYXV0byYgc3RhdGUgPSBjb250ZXh0LnN0
YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksCiAg
ICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2FsZWRGb250LCBzeW50
aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKLSAgICAgICAgc3RhdGUudGV4
dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNldCwg
c3RhdGUuc2hhZG93Q29sb3IsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUu
c3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRv
dy5jb2xvciwKICAgICAgICAgZm9udFNtb290aGluZ01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3Bw
CmluZGV4IDkwMDk2YWM2NDUyMjRkYmZkYzYwYmZhNmNhY2FkMDMwNzZjYjI5N2QuLjg1N2NlZDFh
MjcwMzc2MWIxZDM3ODNiZGVlMzA4Mzc0ODczNjFmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC0y
NDcsNyArMjQ3LDcgQEAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gR3JhZGllbnQ6OmNyZWF0ZVBh
dHRlcm4oZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IEFmZmluZVQKIAogdm9pZCBHcmFkaWVudDo6
ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
LSAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0ZXJuKDEuMCwgY29udGV4dC5zdGF0ZSgpLmZp
bGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBhdXRvIHBhdHRlcm4gPSBjcmVhdGVQYXR0
ZXJuKDEuMCwgY29udGV4dC5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICBpZiAo
IXBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CmluZGV4IGMzMjMwNDQ1MzUxYjAzZjJhYTg3MzZhZWUyYmNlNzhiYzQzNjFmNDkuLmM5YmRkYzgw
YzQwYjg1MmIxMTAyNjUzZGZmYzMwMGNiMjk3OTc3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpy
ZXN0b3JlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewogICAgIEFTU0VSVCghcmVjdC5p
c0VtcHR5KCkpOwotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6
ZHJhd1JlY3QoKnRoaXMsIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBz
dGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOworICAgIENhaXJvOjpkcmF3UmVj
dCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBmaWxsQ29sb3IoKSwgc3Ryb2tlU3R5bGUo
KSwgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNTQsMTUgKzE1MywxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEs
IGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBD
YWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwg
c3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hvdWxkQW50
aWFsaWFzKTsKKyAgICBDYWlybzo6ZHJhd0xpbmUoKnRoaXMsIHBvaW50MSwgcG9pbnQyLCBzdHJv
a2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlja25lc3MoKSwgc2hvdWxkQW50aWFs
aWFzKCkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWQgdG8gZHJhdyB0aGUgbGl0
dGxlIGNpcmNsZXMgdXNlZCBpbiBsaXN0cy4KIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRy
YXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhdXRvJiBzdGF0ZSA9IHRo
aXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdFbGxpcHNlKCp0aGlzLCByZWN0LCBzdGF0ZS5m
aWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzKTsKKyAgICBDYWlybzo6ZHJhd0VsbGlwc2UoKnRoaXMsIHJlY3QsIGZpbGxD
b2xvcigpLCBzdHJva2VTdHlsZSgpLCBzdHJva2VDb2xvcigpLCBzdHJva2VUaGlja25lc3MoKSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBh
dGgpCkBAIC0xOTYsOCArMTkzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGll
bnQmIGdyYWRpZW50KQogewotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBh
dXRvIHBhdHRlcm4gPSBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1dG8gcGF0dGVybiA9IGdyYWRpZW50LmNyZWF0ZVBh
dHRlcm4oMS4wLCBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICBpZiAoIXBhdHRl
cm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA5LDcgKzIwNSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdy
YWRpZW50KQogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGF1dG8mIHN0YXRlID0gdGhp
cy0+c3RhdGUoKTsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gc3Rh
dGUuY29tcG9zaXRlT3BlcmF0b3I7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVy
YXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwogCiAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21w
b3NpdGVPcGVyYXRpb24oKnRoaXMsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOwogICAg
IENhaXJvOjpmaWxsUmVjdCgqdGhpcywgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShz
dGF0ZSkpOwpAQCAtMjY1LDcgKzI2MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRy
YXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrCiB7CiAg
ICAgaWYgKHdpZHRocy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBDYWlybzo6ZHJh
d0xpbmVzRm9yVGV4dCgqdGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywg
ZG91YmxlVW5kZXJsaW5lcywgbV9zdGF0ZS5zdHJva2VDb2xvcik7CisgICAgQ2Fpcm86OmRyYXdM
aW5lc0ZvclRleHQoKnRoaXMsIHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRv
dWJsZVVuZGVybGluZXMsIHN0cm9rZUNvbG9yKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dENhaXJvOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC0yODQsMjggKzI4MCwzMSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBD
YWlybzo6dHJhbnNsYXRlKCp0aGlzLCB4LCB5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRD
YWlybzo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkKIHsKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tu
ZXNzQ2hhbmdlKQorICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzKSkKICAgICAgICAgQ2Fpcm86OlN0YXRl
OjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CiAKLSAg
ICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpCisg
ICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTdHJva2VTdHlsZSkpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUo
KnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKTsKIAotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpIHsKKyAgICAvLyBGSVhNRTogbV9zdGF0ZSBzaG91bGQg
bm90IGJlIGNoYW5nZWQgdG8gZmxpcCB0aGUgc2hhZG93IG9mZnNldC4gVGhpcyBjYW4gaGFwcGVu
IHdoZW4gdGhlIHNoYWRvdyBpcyBhcHBsaWVkIHRvIHRoZSBwbGF0Zm9ybSBjb250ZXh0LgorICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6RHJvcFNoYWRvdykpIHsKICAgICAgICAgaWYgKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKSB7CiAgICAgICAgICAgICAvLyBNZWFuaW5nIHRoYXQgdGhpcyBncmFwaGljcyBjb250ZXh0
IGlzIGFzc29jaWF0ZWQgd2l0aCBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICAgICAgICAg
IC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUgb3Bw
b3NpdGUgWSBheGlzCi0gICAgICAgICAgICBhdXRvJiBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFk
b3dPZmZzZXQ7Ci0gICAgICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IHsgc2hhZG93T2Zm
c2V0LndpZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVpZ2h0KCkgfTsKKyAgICAgICAgICAgIGF1dG8m
IHNoYWRvd09mZnNldCA9IHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0OworICAgICAgICAgICAgbV9z
dGF0ZS5kcm9wU2hhZG93Lm9mZnNldCA9IHsgc2hhZG93T2Zmc2V0LndpZHRoKCksIC1zaGFkb3dP
ZmZzZXQuaGVpZ2h0KCkgfTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpCi0gICAgICAgIENh
aXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVP
cGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlKTsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUpKQorICAgICAg
ICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9z
aXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKIAotICAg
IGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2Up
CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3Vs
ZEFudGlhbGlhcygqdGhpcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIHN0YXRlLmRp
ZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCkBAIC00MzQsNyArNDMzLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKgogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
ICAgICBDYWlybzo6ZHJhd0dseXBocygqdGhpcywgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBD
YWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhz
LCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwKKyAgICAgICAg
c3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BT
aGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLAogICAgICAgICBmb250U21vb3Ro
aW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggNTY0NjFjMTU5YTU4M2M4
OWM2MWU4ZjAyZTRlMGJlZTdiMDU5MzJlZi4uNzMyMTQ3MGZjNGYxYzdmYjFmM2FmN2JiNDY4ZWFh
MTdjNWUxZDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAg
IEdyYXBoaWNzQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAot
ICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgdm9pZCBkaWRVcGRhdGVT
dGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVD
YXApIGZpbmFsOwogICAgIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDMyNDVjNjAwNDMxNTUyZDUxM2I3NGVlYmMw
OWYzMThlZWMzZGQ3MmEuLmJkYWVkOWYxN2U0MGEzMjFmMmQwNGFmNzEwMjgwY2M5YmMwNzk3MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE4NSwxMyArMTg1LDE0IEBAIHN0YXRpYyB2b2lkIHNl
dENHQmxlbmRNb2RlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlCiB9CiAKIEdyYXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRleHRDRyhDR0Nv
bnRleHRSZWYgY2dDb250ZXh0KQorICAgIDogR3JhcGhpY3NDb250ZXh0KHsgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpTdHJva2VCcnVzaCwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tu
ZXNzIH0pCiB7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
ZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsKICAg
ICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUu
Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UgfSk7CisgICAgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7CiAgICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
ID0gY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFs
aXR5KHBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKQEAgLTMzOCw3ICszMzksNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdl
LCBjb25zdCBGbG9hdFNpegogI2VuZGlmCiAKICAgICBhdXRvIG9sZENvbXBvc2l0ZU9wZXJhdG9y
ID0gY29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgYXV0byBvbGRCbGVuZE1vZGUgPSBibGVuZE1v
ZGVPcGVyYXRpb24oKTsKKyAgICBhdXRvIG9sZEJsZW5kTW9kZSA9IGJsZW5kTW9kZSgpOwogICAg
IHNldENHQmxlbmRNb2RlKGNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0
aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBNYWtlIHRoZSBvcmlnaW4gYmUgYXQgYWRqdXN0
ZWREZXN0UmVjdC5sb2NhdGlvbigpCkBAIC01NTUsMTMgKzU1NiwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENHOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiB7Ci0gICAgaWYgKCFtX3N0YXRl
LnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKCFzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IEFmZmluZVRyYW5zZm9ybShnZXRVc2Vy
VG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBtX3N0
YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsK
KyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IHN0cm9rZVBhdHRlcm4oKS0+Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTU3NCwxMyArNTc1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5
RmlsbFBhdHRlcm4oKQogewotICAgIGlmICghbV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAo
IWZpbGxQYXR0ZXJuKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFz
ZUNUTSA9IEFmZmluZVRyYW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0g
ICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CisgICAgYXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBm
aWxsUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAg
aWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTkxLDExICs1OTIs
MTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybigpCiAgICAgQ0dD
b250ZXh0U2V0RmlsbFBhdHRlcm4oY2dDb250ZXh0LCBwbGF0Zm9ybVBhdHRlcm4uZ2V0KCksICZw
YXR0ZXJuQWxwaGEpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01v
ZGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDR1BhdGhEcmF3aW5nTW9kZSYg
bW9kZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9kZShjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIENHUGF0aERyYXdpbmdNb2RlJiBtb2RlKQogewotICAgIGJv
b2wgc2hvdWxkRmlsbCA9IHN0YXRlLmZpbGxQYXR0ZXJuIHx8IHN0YXRlLmZpbGxDb2xvci5pc1Zp
c2libGUoKTsKLSAgICBib29sIHNob3VsZFN0cm9rZSA9IHN0YXRlLnN0cm9rZVBhdHRlcm4gfHwg
KHN0YXRlLnN0cm9rZVN0eWxlICE9IE5vU3Ryb2tlICYmIHN0YXRlLnN0cm9rZUNvbG9yLmlzVmlz
aWJsZSgpKTsKLSAgICBib29sIHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxlID09IFdpbmRSdWxl
OjpFdmVuT2RkOworICAgIGJvb2wgc2hvdWxkRmlsbCA9IGNvbnRleHQuZmlsbEJydXNoKCkuaXNW
aXNpYmxlKCk7CisgICAgYm9vbCBzaG91bGRTdHJva2UgPSBjb250ZXh0LnN0cm9rZUJydXNoKCku
aXNWaXNpYmxlKCkgfHwgY29udGV4dC5zdHJva2VTdHlsZSgpOworICAgIGJvb2wgdXNlRU9GaWxs
ID0gY29udGV4dC5maWxsUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkOwogCiAgICAgaWYgKHNo
b3VsZEZpbGwpIHsKICAgICAgICAgaWYgKHNob3VsZFN0cm9rZSkgewpAQCAtNjI0LDkgKzYyNSw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250
ZXh0KCk7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsK
IAotICAgIGlmIChzdGF0ZS5maWxsR3JhZGllbnQgfHwgc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsK
KyAgICBpZiAoZmlsbEdyYWRpZW50KCkgfHwgc3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICAv
LyBXZSBkb24ndCBoYXZlIGFueSBvcHRpbWl6ZWQgd2F5IHRvIGZpbGwgJiBzdHJva2UgYSBwYXRo
IHVzaW5nIGdyYWRpZW50cwogICAgICAgICAvLyBGSVhNRTogQmUgc21hcnRlciBhYm91dCB0aGlz
LgogICAgICAgICBmaWxsUGF0aChwYXRoKTsKQEAgLTYzNCwxMyArNjM0LDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Q0c6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0
ZXJuKCkpCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKLSAgICBpZiAoc3RhdGUuc3Ryb2tl
UGF0dGVybikKKyAgICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9rZVBh
dHRlcm4oKTsKIAogICAgIENHUGF0aERyYXdpbmdNb2RlIGRyYXdpbmdNb2RlOwotICAgIGlmIChj
YWxjdWxhdGVEcmF3aW5nTW9kZShzdGF0ZSwgZHJhd2luZ01vZGUpKSB7CisgICAgaWYgKGNhbGN1
bGF0ZURyYXdpbmdNb2RlKCp0aGlzLCBkcmF3aW5nTW9kZSkpIHsKICNpZiBIQVZFKENHX0NPTlRF
WFRfRFJBV19QQVRIX0RJUkVDVCkKICAgICAgICAgQ0dDb250ZXh0RHJhd1BhdGhEaXJlY3QoY29u
dGV4dCwgZHJhd2luZ01vZGUsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIpOwogI2Vsc2UK
QEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRl
eHQoKTsKIAotICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgeworICAgIGlmIChhdXRvIGZp
bGxHcmFkaWVudCA9IHRoaXMtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFk
b3coKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RCb3VuZGluZ1Jl
Y3QoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXpl
KHJlY3Quc2l6ZSgpKTsKQEAgLTY3MCwzMyArNjcwLDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0obGF5ZXJDb250ZXh0LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRCZWdpblBhdGgobGF5ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dEFkZFBhdGgobGF5ZXJDb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAg
IENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4
dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgICAgIGlmIChmaWxs
UnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2RkKQogICAgICAgICAgICAgICAgIENHQ29udGV4dEVP
Q2xpcChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIENH
Q29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsKIAotICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3Jh
ZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQtPnBh
aW50KGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3Qo
Y29udGV4dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRk
UGF0aChjb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENv
bmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBmaWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSgpKTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2
ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRleHQpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7CiAKLSAg
ICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAg
ICBmaWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBh
dHRlcm4oKSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwogI2lmIEhBVkUoQ0dfQ09OVEVY
VF9EUkFXX1BBVEhfRElSRUNUKQogICAgIENHQ29udGV4dERyYXdQYXRoRGlyZWN0KGNvbnRleHQs
IGZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQgPyBrQ0dQYXRoRU9GaWxsIDoga0NHUGF0
aEZpbGwsIHBhdGgucGxhdGZvcm1QYXRoKCksIG51bGxwdHIpOwpAQCAtNzE3LDcgKzcxNyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAo
bV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlmIChhdXRvIHN0cm9rZUdyYWRpZW50ID0g
dGhpcy0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAg
ICAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAg
ICAgICAgICBmbG9hdCBsaW5lV2lkdGggPSBzdHJva2VUaGlja25lc3MoKTsKQEAgLTc0Miw4ICs3
NDIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBh
dGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGxheWVyQ29udGV4dCwgcGF0aC5wbGF0
Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2Vk
UGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRl
eHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0
ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRD
b25jYXRDVE0obGF5ZXJDb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwor
ICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAKICAgICAg
ICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7
CiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5l
V2lkdGgpOwpAQCAtNzU0LDEzICs3NTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ry
b2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChj
b250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxh
Y2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xp
cChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0
YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0
Q1RNKGNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAg
ICBzdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChzdHJv
a2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAjaWYgVVNFKENH
X0NPTlRFWFRfU1RST0tFX0xJTkVfU0VHTUVOVFNfV0hFTl9TVFJPS0lOR19QQVRIKQpAQCAtNzg1
LDcgKzc4NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwogCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gZmls
bEdyYWRpZW50ID0gdGhpcy0+ZmlsbEdyYWRpZW50KCkpIHsKICAgICAgICAgQ0dDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsK
ICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Qu
c2l6ZSgpKTsKQEAgLTc5OCwxOCArNzk4LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgICAgIENHQ29udGV4dEFkZFJl
Y3QobGF5ZXJDb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKIAotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwg
bV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRl
LmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4
dENvbmNhdENUTShsYXllckNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwor
ICAgICAgICAgICAgZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4
dCwgcmVjdCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgbV9zdGF0
ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNv
bnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgZmlsbEdy
YWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigpKQog
ICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSBj
YW5Vc2VTaGFkb3dCbHVyKCk7CkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAvLyBUdXJuIG9m
ZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZv
cm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29u
dGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRy
b3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRT
aGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAg
IH0KIApAQCAtODM5LDcgKzgzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICAvLyBU
dXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3Io
cGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0Js
dXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNv
bnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkp
OwogICAgIH0KIApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZp
bGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QKICAg
ICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAg
ICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIg
Y29udGV4dFNoYWRvdyhkcm9wU2hhZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwog
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCByZWN0KTsKICAgICB9
CiAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUm91bmRl
ZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0CiAgICAgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpID0gcmVjdC5yYWRpaSgpOwogICAgIGJvb2wg
ZXF1YWxXaWR0aHMgPSAocmFkaWkudG9wTGVmdCgpLndpZHRoKCkgPT0gcmFkaWkudG9wUmlnaHQo
KS53aWR0aCgpICYmIHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSA9PSByYWRpaS5ib3R0b21MZWZ0
KCkud2lkdGgoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSA9PSByYWRpaS5ib3R0b21S
aWdodCgpLndpZHRoKCkpOwogICAgIGJvb2wgZXF1YWxIZWlnaHRzID0gKHJhZGlpLnRvcExlZnQo
KS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkgJiYgcmFkaWkuYm90dG9t
TGVmdCgpLmhlaWdodCgpID09IHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgJiYgcmFkaWkudG9w
UmlnaHQoKS5oZWlnaHQoKSA9PSByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKLSAgICBi
b29sIGhhc0N1c3RvbUZpbGwgPSBtX3N0YXRlLmZpbGxHcmFkaWVudCB8fCBtX3N0YXRlLmZpbGxQ
YXR0ZXJuOworICAgIGJvb2wgaGFzQ3VzdG9tRmlsbCA9IGZpbGxHcmFkaWVudCgpIHx8IGZpbGxQ
YXR0ZXJuKCk7CiAgICAgaWYgKCFoYXNDdXN0b21GaWxsICYmIGVxdWFsV2lkdGhzICYmIGVxdWFs
SGVpZ2h0cyAmJiByYWRpaS50b3BMZWZ0KCkud2lkdGgoKSAqIDIgPT0gci53aWR0aCgpICYmIHJh
ZGlpLnRvcExlZnQoKS5oZWlnaHQoKSAqIDIgPT0gci5oZWlnaHQoKSkKICAgICAgICAgQ0dDb250
ZXh0RmlsbEVsbGlwc2VJblJlY3QoY29udGV4dCwgcik7CiAgICAgZWxzZSB7CkBAIC05MTUsNyAr
OTE1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG8KICAgICAgICAgLy8gVHVybiBvZmYgQ0cg
c2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhkcm9wU2hh
ZG93KCksIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICBjb250ZXh0U2hhZG93
LmRyYXdJbnNldFNoYWRvdygqdGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKICAgICB9CiAK
QEAgLTk4OSw2ICs5ODksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpiZWdpblRyYW5zcGFy
ZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBvcGFjaXR5KTsK
ICAgICBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGNvbnRleHQsIDApOworICAgIAor
ICAgIG1fc3RhdGUuZGlkQmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fZGF0YS0+bV91
c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCkBAIC0x
MDAyLDE3ICsxMDA0LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmVuZFRyYW5zcGFyZW5j
eUxheWVyKCkKICAgICByZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zm
c2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dG
bG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKK3N0YXRpYyB2b2lkIGFwcGx5U2hhZG93
T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0JiB4
T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8
IFBMQVRGT1JNKFdJTikKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BB
UkFNKHhPZmZzZXQpOwogICAgIFVOVVNFRF9QQVJBTSh5T2Zmc2V0KTsKICNlbHNlCi0gICAgaWYg
KGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRv
d09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERy
YXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcg
dGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKQEAgLTEwMzAsMTAgKzEwMjksOCBA
QCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgc2V0Q0dT
aGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCitzdGF0aWMgdm9p
ZCBzZXRDR1NoYWRvdyhDR0NvbnRleHRSZWYgY29udGV4dCwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3Im
IGNvbG9yLCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCiAgICAgaWYg
KG9mZnNldC5pc1plcm8oKSAmJiAhYmx1cikgewogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dX
aXRoQ29sb3IoY29udGV4dCwgQ0dTaXplWmVybywgMCwgMCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEwNDUsNyArMTA0Miw3IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgQ0dGbG9hdCB5
T2Zmc2V0ID0gb2Zmc2V0LmhlaWdodCgpOwogICAgIENHRmxvYXQgYmx1clJhZGl1cyA9IGJsdXI7
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7
CisgICAgaWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewogICAgICAgICBDR0FmZmluZVRy
YW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gZ2V0VXNlclRvQmFzZUNUTShjb250ZXh0KTsKIAogICAg
ICAgICBDR0Zsb2F0IEEgPSB1c2VyVG9CYXNlQ1RNLmEgKiB1c2VyVG9CYXNlQ1RNLmEgKyB1c2Vy
VG9CYXNlQ1RNLmIgKiB1c2VyVG9CYXNlQ1RNLmI7CkBAIC0xMDY2LDcgKzEwNjMsOCBAQCBzdGF0
aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRmxvYXRTaXplJgogICAgIC8vIEV4dHJlbWUgImJsdXIiIHZhbHVlcyBjYW4gbWFr
ZSB0ZXh0IGRyYXdpbmcgY3Jhc2ggb3IgdGFrZSBjcmF6eSBsb25nIHRpbWVzLCBzbyBjbGFtcAog
ICAgIGJsdXJSYWRpdXMgPSBzdGQ6Om1pbihibHVyUmFkaXVzLCBuYXJyb3dQcmVjaXNpb25Ub0NH
RmxvYXQoMTAwMC4wKSk7CiAKLSAgICBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRl
ZChncmFwaGljc0NvbnRleHQsIHhPZmZzZXQsIHlPZmZzZXQpOworICAgIGlmIChyZW5kZXJpbmdN
b2RlICE9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBhcHBseVNoYWRvd09m
ZnNldFdvcmthcm91bmRJZk5lZWRlZChjb250ZXh0LCB4T2Zmc2V0LCB5T2Zmc2V0KTsKIAogICAg
IC8vIENoZWNrIGZvciBhbiBpbnZhbGlkIGNvbG9yLCBhcyB0aGlzIG1lYW5zIHRoYXQgdGhlIGNv
bG9yIHdhcyBub3Qgc2V0IGZvciB0aGUgc2hhZG93CiAgICAgLy8gYW5kIHdlIHNob3VsZCB0aGVy
ZWZvcmUganVzdCB1c2UgdGhlIGRlZmF1bHQgc2hhZG93IGNvbG9yLgpAQCAtMTA3NiwzOSArMTA3
NCw2MSBAQCBzdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJgogICAgICAgICBDR0NvbnRleHRTZXRTaGFk
b3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplTWFrZSh4T2Zmc2V0LCB5T2Zmc2V0KSwgYmx1clJh
ZGl1cywgY2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFw
aGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogeworICAgIGlmICghc3RhdGUuY2hhbmdlcygpKQorICAgICAgICByZXR1cm47CisKICAgICBh
dXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAg
Q0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIHN0ZDo6bWF4KHN0YXRlLnN0cm9rZVRoaWNr
bmVzcywgMC5mKSk7CisgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0YXRlLmNoYW5nZXMoKSkgewor
ICAgICAgICBzd2l0Y2ggKGNoYW5nZSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaDoKKyAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzOgor
ICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIHN0ZDo6bWF4KHN0YXRl
LnN0cm9rZVRoaWNrbmVzcywgMC5mKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoOgorICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xv
cihzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsK
IAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29s
b3JDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKS5nZXQoKSk7CisgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZToKKyAgICAgICAg
ICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9u
LCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgICAgICAgICBicmVhazsKIAot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hh
bmdlKSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3RhdGUuZmlsbENvbG9yKTsK
KyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93Ogor
ICAgICAgICAgICAgc2V0Q0dTaGFkb3coY29udGV4dCwgcmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5k
cm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9w
U2hhZG93LmNvbG9yLCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgICAgICAg
ICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
QWxwaGFDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBzdGF0ZS5h
bHBoYSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGE6
CisgICAgICAgICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBzdGF0ZS5hbHBoYSk7Cisg
ICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpCi0gICAgICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQs
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOworICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk6
CisgICAgICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBj
Z0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKTsK
KyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRU
ZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdp
bmdNb2RlKSk7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VGV4
dERyYXdpbmdNb2RlOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNv
bnRleHQsIGNnVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5nTW9kZSkpOworICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFu
dGlhbGlhcyhjb250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhczoKKyAgICAgICAgICAg
IENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxp
YXMpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250
ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMoY29udGV4dCwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHMp
OworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzOgorICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMoY29udGV4
dCwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0
eShjb250ZXh0LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBzZXRDR1NoYWRvdygqdGhpcywgc3RhdGUuc2hhZG93
T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Q29sb3IpOworICAgIHN0
YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzZXRN
aXRlckxpbWl0KGZsb2F0IGxpbWl0KQpAQCAtMTEyNSw3ICsxMTQ1LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDRzo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVX
aWR0aCkKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwog
Ci0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBzdHJva2VH
cmFkaWVudCA9IHRoaXMtPnN0cm9rZUdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRv
dygpKSB7CiAgICAgICAgICAgICBjb25zdCBmbG9hdCBkb3VibGVMaW5lV2lkdGggPSBsaW5lV2lk
dGggKiAyOwogICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRXaWR0aCA9IGNlaWxmKHJlY3Qud2lk
dGgoKSArIGRvdWJsZUxpbmVXaWR0aCk7CkBAIC0xMTQ5LDggKzExNjksOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGlu
ZVdpZHRoKQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXllckNvbnRleHQsIHJlY3Qp
OwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgobGF5ZXJD
b250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJDb250ZXh0KTsKLSAgICAg
ICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50
LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxh
eWVyQ29udGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAg
IHN0cm9rZUdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwogCiAgICAgICAgICAgICBjb25z
dCBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAg
ICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGlu
ZVdpZHRoKTsKQEAgLTExNjEsMTMgKzExODEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6
c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAg
ICAgICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsKICAgICAgICAgICAgIENH
Q29udGV4dENsaXAoY29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29u
dGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAg
IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIENHQ29u
dGV4dENvbmNhdENUTShjb250ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwor
ICAgICAgICAgICAgc3Ryb2tlR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAg
ICBpZiAoc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKIAog
ICAgIC8vIFVzaW5nIENHQ29udGV4dEFkZFJlY3QgYW5kIENHQ29udGV4dFN0cm9rZVBhdGggdG8g
c3Ryb2tlIHJlY3QgcmF0aGVyIHRoYW4KQEAgLTE0MjIsNyArMTQ0Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q0c6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3Qm
IGVsbGlwc2UpCiB7CiAgICAgLy8gQ0dDb250ZXh0RmlsbEVsbGlwc2VJblJlY3Qgb25seSBzdXBw
b3J0cyBzb2xpZCBjb2xvcnMuCi0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3Rh
dGUuZmlsbFBhdHRlcm4pIHsKKyAgICBpZiAoZmlsbEdyYWRpZW50KCkgfHwgZmlsbFBhdHRlcm4o
KSkgewogICAgICAgICBmaWxsRWxsaXBzZUFzUGF0aChlbGxpcHNlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE0MzQsNyArMTQ1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZp
bGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OnN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewogICAgIC8vIENH
Q29udGV4dFN0cm9rZUVsbGlwc2VJblJlY3Qgb25seSBzdXBwb3J0cyBzb2xpZCBjb2xvcnMuCi0g
ICAgaWYgKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuKSB7
CisgICAgaWYgKHN0cm9rZUdyYWRpZW50KCkgfHwgc3Ryb2tlUGF0dGVybigpKSB7CiAgICAgICAg
IHN0cm9rZUVsbGlwc2VBc1BhdGgoZWxsaXBzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuaAppbmRleCA2MDNiMGU5MzZlZmI1MjhjYWMzZDdhZGM4NjZlOTk1N2VlMzBlYmVj
Li5hMWEyNmJmZDI4NGQ4NDQ2M2VjMjBmYjAxNGZhMzM2OWM4OGM5OTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzSW50ZXJu
YWxMaW5rcygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzKSBmaW5hbDsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRl
JikgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuVXNlU2hhZG93Qmx1cigpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggZWZi
YzFlNDk1NDQxYmVkZTczNGU5NDhkZDI2ZDM3MTQ0MTY1NTNlMC4uZDBiZWM4ZDYzODQ3MDliNzhj
ZjFkZTgwYmIwMmUxZTM3ZDJmOTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcApAQCAtOTYsNTIgKzk2LDI0IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29uc3RydWN0RHJh
d0dsCiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKIHsKLSAgICBtX29yaWdpbmFs
U3RhdGUuZmlsbFN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLmZpbGxDb2xvcjsKLSAgICBtX29y
aWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0YXRlLmZpbGxHcmFkaWVu
dDsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0g
PSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9vcmlnaW5h
bFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLmZpbGxQYXR0ZXJuOwotCi0g
ICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLnN0cm9r
ZUNvbG9yOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCA9IGNvbnRl
eHRTdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUu
Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuID0gY29u
dGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCA9
IGNvbnRleHRTdGF0ZS5maWxsQnJ1c2g7CisgICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZUJydXNo
ID0gY29udGV4dFN0YXRlLnN0cm9rZUJydXNoOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9
IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKLSAgICBt
X29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCA9IGNvbnRleHRTdGF0ZS5zaGFkb3dPZmZzZXQ7
Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyID0gY29udGV4dFN0YXRlLnNoYWRvd0Js
dXI7Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciA9IGNvbnRleHRTdGF0ZS5zaGFk
b3dDb2xvcjsKLSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPSBj
b250ZXh0U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBtX2N1cnJlbnRTdGF0
ZSA9IG1fb3JpZ2luYWxTdGF0ZTsKKyAgICBtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyA9IGNv
bnRleHRTdGF0ZS5kcm9wU2hhZG93OworICAgIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zv
cm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogfQogCiB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKIHsKLSAgICBpZiAobV9vcmlnaW5hbFN0YXRlLmZp
bGxTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRG
aWxsQ29sb3IobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvcik7Ci0gICAgZWxzZSBpZiAo
bV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCkKLSAgICAgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVu
dCwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVy
bik7Ci0gICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pCi0gICAg
ICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbFBhdHRlcm4oKm1fb3JpZ2luYWxTdGF0
ZS5maWxsU3R5bGUucGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5z
dHJva2VTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IpOwotICAgIGVs
c2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCkKLSAgICAgICAgbV9p
bnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCptX29yaWdpbmFsU3RhdGUuc3Ryb2tl
U3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5z
dHJva2VTdHlsZS5wYXR0ZXJuKTsKLSAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VT
dHlsZS5wYXR0ZXJuKQotICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZVBh
dHRlcm4oKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKLSAgICB9CisgICAg
bV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxCcnVzaChtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNo
KTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlQnJ1c2gobV9vcmlnaW5hbFN0YXRl
LnN0cm9rZUJydXNoKTsKIAogICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRDVE0obV9vcmlnaW5h
bFN0YXRlLmN0bSk7CiAKLSAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBt
X2ludGVybmFsQ29udGV4dC0+c2V0U2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0
LCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29s
b3IsIGNvbnRleHRTdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKKyAgICBtX2ludGVybmFsQ29udGV4
dC0+c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5z
Zm9ybXMpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXREcm9wU2hhZG93KG1fb3JpZ2luYWxT
dGF0ZS5kcm9wU2hhZG93KTsKIAogICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dFN0YXRlLnRleHREcmF3aW5nTW9kZSk7CiB9CkBAIC0xNjUsOTUgKzEzNywz
OSBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cHJlcGFyZUludGVybmFsQ29udGV4dChjb25z
dCBGb250JiBmb250LCBGb250U21vb3RoaW5nTQogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmNv
bmNsdWRlSW50ZXJuYWxDb250ZXh0KCkKIHsKICAgICB1cGRhdGVDVE0obV9vcmlnaW5hbFN0YXRl
LmN0bSk7Ci0gICAgdXBkYXRlRmlsbENvbG9yKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29s
b3IsIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQuZ2V0KCksIG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUucGF0dGVybi5nZXQoKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IobV9v
cmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUuZ3JhZGllbnQuZ2V0KCksIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuLmdl
dCgpKTsKLSAgICB1cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1f
b3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciwg
bV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID8gU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM6OlllcyA6IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpObyk7CisgICAgdXBkYXRl
RmlsbEJydXNoKG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2gpOworICAgIHVwZGF0ZVN0cm9rZUJy
dXNoKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCk7CisgICAgdXBkYXRlU2hhZG93KG1fb3Jp
Z2luYWxTdGF0ZS5kcm9wU2hhZG93LCBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA/
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6
Tm8pOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbENvbG9yKGNvbnN0
IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0ZXJuKiBuZXdQYXR0
ZXJuKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZUZpbGxCcnVzaChjb25zdCBTb3Vy
Y2VCcnVzaCYgbmV3QnJ1c2gpCiB7Ci0gICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBidXQg
aXQgYWN0dWFsbHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2lsbCBv
bmx5IGV2ZXIgc2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUgY29y
cmVjdCBjaGVjayBmb3IuCi0gICAgLy8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3ZSBz
ZXQgaXQgYmFjayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNrIHdv
cmtzIGNvcnJlY3RseSBmb3IgdG9vLgotICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRTdGF0
ZS5maWxsU3R5bGUuY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlIG5ld1N0YXRlOwotICAgIG5ld1N0YXRlLmZpbGxDb2xvciA9IG5ld0NvbG9yOwotICAg
IGlmIChuZXdHcmFkaWVudCkKLSAgICAgICAgbmV3U3RhdGUuZmlsbEdyYWRpZW50ID0gbmV3R3Jh
ZGllbnQ7Ci0gICAgaWYgKG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0YXRlLmZpbGxQYXR0ZXJu
ID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0YXRlKG5ld1N0YXRlLCB7IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UgfSk7Ci0gICAgbV9jdXJyZW50U3Rh
dGUuZmlsbFN0eWxlLmNvbG9yID0gbmV3Q29sb3I7CisgICAgbV9vd25lci5zZXRGaWxsQnJ1c2go
bmV3QnJ1c2gpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQ29s
b3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQsIFBhdHRlcm4q
IG5ld1BhdHRlcm4pCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQnJ1c2go
Y29uc3QgU291cmNlQnJ1c2gmIG5ld0JydXNoKQogewotICAgIC8vIFRoaXMgY2hlY2sgbG9va3Mg
d3JvbmcgYnV0IGl0IGFjdHVhbGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0ZWQgdXNlLgotICAgIC8v
IENUIHdpbGwgb25seSBldmVyIHNldCB0aGlzIHRvIGEgc29saWQgY29sb3IsIHdoaWNoIHRoaXMg
aXMgdGhlIGNvcnJlY3QgY2hlY2sgZm9yLgotICAgIC8vIEluIGNvbmNsdWRlSW50ZXJuYWxDb250
ZXh0KCkgd2Ugc2V0IGl0IGJhY2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2luYWxseSwgd2hpY2ggdGhp
cyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgZm9yIHRvby4KLSAgICBpZiAobmV3Q29sb3IgPT0gbV9j
dXJyZW50U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIG5ld1N0YXRlLnN0cm9rZUNvbG9yID0g
bmV3Q29sb3I7Ci0gICAgaWYgKG5ld0dyYWRpZW50KQotICAgICAgICBuZXdTdGF0ZS5zdHJva2VH
cmFkaWVudCA9IG5ld0dyYWRpZW50OwotICAgIGlmIChuZXdQYXR0ZXJuKQotICAgICAgICBuZXdT
dGF0ZS5zdHJva2VQYXR0ZXJuID0gbmV3UGF0dGVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0
YXRlKG5ld1N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSB9
KTsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciA9IG5ld0NvbG9yOworICAg
IG1fb3duZXIuc2V0U3Ryb2tlQnJ1c2gobmV3QnJ1c2gpOwogfQogCiB2b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6dXBkYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3RtKQogewotICAgIGlm
IChjdG0gPT0gbV9jdXJyZW50U3RhdGUuY3RtKQorICAgIGlmIChtX293bmVyLmdldENUTSgpID09
IGN0bSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgbV9vd25lci5zZXRDVE0oY3RtKTsKLSAgICBt
X2N1cnJlbnRTdGF0ZS5jdG0gPSBjdG07CiB9CiAKLXN0YXRpYyBib29sIHNoYWRvd0lzQ2xlYXJl
ZChjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1cikKK3ZvaWQg
RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNo
YWRvdywgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7
Ci0gICAgcmV0dXJuIHNoYWRvd09mZnNldCA9PSBGbG9hdFNpemUoKSAmJiAhc2hhZG93Qmx1cjsK
LX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1ciwgY29uc3QgQ29sb3ImIHNoYWRvd0Nv
bG9yLCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLXsK
LSAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
IGlmIG5vYm9keSBoYXMgYW55IHNoYWRvd3MuCi0gICAgaWYgKHNoYWRvd0lzQ2xlYXJlZChzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIpICYmIHNoYWRvd0lzQ2xlYXJlZChtX2N1cnJlbnRTdGF0ZS5z
aGFkb3cub2Zmc2V0LCBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1cikpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIHN0YXRlQ2hhbmdlRmxhZ3M7Ci0KLSAgICBpZiAo
c2hhZG93T2Zmc2V0ICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQgfHwgc2hhZG93Qmx1
ciAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciB8fCBzaGFkb3dDb2xvciAhPSBtX2N1cnJl
bnRTdGF0ZS5zaGFkb3cuY29sb3IpIHsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93T2Zmc2V0ID0g
c2hhZG93T2Zmc2V0OwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dCbHVyID0gc2hhZG93Qmx1cjsK
LSAgICAgICAgbmV3U3RhdGUuc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjsKLSAgICAgICAgc3Rh
dGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7Ci0g
ICAgfQotICAgIGlmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAhPSBTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtczo6VW5zcGVjaWZpZWQgJiYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVU
cmFuc2Zvcm1zKSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
KHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMp
OwotICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOwotICAgIH0KLSAgICBpZiAoc3RhdGVDaGFuZ2VG
bGFncy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX293bmVyLmRpZFVwZGF0ZVN0
YXRlKG5ld1N0YXRlLCBzdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIG1fY3VycmVudFN0YXRlLnNo
YWRvdy5vZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJs
dXIgPSBzaGFkb3dCbHVyOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xvciA9IHNoYWRv
d0NvbG9yOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID0gKHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwor
ICAgIG1fb3duZXIuc2V0RHJvcFNoYWRvdyhkcm9wU2hhZG93KTsKKyAgICBtX293bmVyLnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBk
YXRlU2hhZG93KENHU3R5bGVSZWYgc3R5bGUpCiB7CiAgICAgaWYgKENHU3R5bGVHZXRUeXBlKHN0
eWxlKSAhPSBrQ0dTdHlsZVNoYWRvdykgewogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3Jl
IGtpbmRzIG9mIENHU3R5bGVzLgotICAgICAgICB1cGRhdGVTaGFkb3coezAsIDB9LCAwLCBDb2xv
cigpLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQpOworICAgICAgICB1cGRh
dGVTaGFkb3coeyB9LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEsNyArMTc3LDcgQEAgdm9pZCBEcmF3R2x5cGhz
UmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmIHN0eWxlKQogICAgIGF1dG8gcmFkID0g
ZGVnMnJhZChzaGFkb3dTdHlsZS5hemltdXRoIC0gMTgwKTsKICAgICBhdXRvIHNoYWRvd09mZnNl
dCA9IEZsb2F0U2l6ZShzdGQ6OmNvcyhyYWQpLCBzdGQ6OnNpbihyYWQpKSAqIHNoYWRvd1N0eWxl
LmhlaWdodDsKICAgICBhdXRvIHNoYWRvd0NvbG9yID0gQ0dTdHlsZUdldENvbG9yKHN0eWxlKTsK
LSAgICB1cGRhdGVTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dTdHlsZS5yYWRpdXMsIENvbG9y
OjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc2hhZG93Q29sb3IpLCBTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtczo6WWVzKTsKKyAgICB1cGRhdGVTaGFkb3coeyBzaGFkb3dPZmZzZXQsIHN0YXRp
Y19jYXN0PGZsb2F0PihzaGFkb3dTdHlsZS5yYWRpdXMpLCBDb2xvcjo6Y3JlYXRlQW5kUHJlc2Vy
dmVDb2xvclNwYWNlKHNoYWRvd0NvbG9yKSB9LCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6WWVz
KTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5k
ZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlLCBDR1JlY3QpCkBAIC0zMjgsOCArMjQ0
LDggQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJp
bmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKIAogICAgIGF1dG8gZmlsbENvbG9yID0gQ0dH
U3RhdGVHZXRGaWxsQ29sb3IoZ3N0YXRlKTsKICAgICBhdXRvIHN0cm9rZUNvbG9yID0gQ0dHU3Rh
dGVHZXRTdHJva2VDb2xvcihnc3RhdGUpOwotICAgIHVwZGF0ZUZpbGxDb2xvcihDb2xvcjo6Y3Jl
YXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKGZpbGxDb2xvcikpOwotICAgIHVwZGF0ZVN0cm9rZUNv
bG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKKyAg
ICB1cGRhdGVGaWxsQnJ1c2goQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShmaWxs
Q29sb3IpKTsKKyAgICB1cGRhdGVTdHJva2VCcnVzaChDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVD
b2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5
bGUoZ3N0YXRlKSk7CiAKICAgICBhdXRvIGZvbnRTaXplID0gQ0dHU3RhdGVHZXRGb250U2l6ZShn
c3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMmUyZjRmNGYyY2I1NWQzNjVl
NWFlMzk5MzI1ZDA1ZjJjMTczNjFmZC4uMmIwM2NlNGE2NmUyZDhhYTBmYWQ4MWE2NDRhZWIxZWRm
ZGUxYzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05MCwxMCArOTAsNyBAQCBi
b29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0
ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRl
c1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRl
bSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3cs
IG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBs
YXRmb3JtLXNwZWNpZmljLgotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgp
Lm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250c0NoYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCisgICAg
ICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyM2QwYmJjYzcxYzI4MWM1MmMzNWE4YzI1
MmRhOTZjMGFiMTJhOThjLi5iNjZjODQ4YTMzYmRkOTIzNjBmZWE4NTMzN2ZhYjVkYjJkMmQwMmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xNDgsMjQgKzE0OCwx
OSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVNldFN0YXRl
OjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgIDogbV9zdGF0ZUNoYW5nZShz
dGF0ZSwgZmxhZ3MpCi17Ci19Ci0KLVNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRl
Q2hhbmdlKQorU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSkKKyAgICA6IG1fc3RhdGUoc3RhdGUpCiB7CiB9CiAKIHZvaWQgU2V0U3RhdGU6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNv
bnRleHQpOworICAgIGNvbnRleHQudXBkYXRlU3RhdGUobV9zdGF0ZSk7CiB9CiAKLXN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgc3Rh
dGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0U3RhdGUmIGl0ZW0pCiB7Ci0gICAgdHMgPDwgc3RhdGUuc3RhdGVDaGFuZ2UoKTsKKyAgICB0
cyA8PCBpdGVtLnN0YXRlKCk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAppbmRleCA5N2NiNWZjOGQwNGJhODY2MmI3MmM3ZGRlZWJjNDQxNTVjMjgy
NWI3Li45Njk0ZDY4ZDE1ZTk4ZDU2N2QzOGQzYWM5YjJjMDk5ZjMwZDBhNWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI0NywxMCArMjQ3LDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKIAotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0K
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSB7IHJldHVybiBt
X3N0YXRlQ2hhbmdlOyB9CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMjU4
LDI4OCArMjU3LDI0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0KLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG1f
c3RhdGU7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXRTdGF0ZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBjaGFuZ2VGbGFncyA9IG1f
c3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFnczsKLSAgICBlbmNvZGVyIDw8IGNoYW5nZUZsYWdzOwot
Ci0gICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7Ci0KLSAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlKSkgewotICAgICAgICBBU1NFUlQoc3RhdGUuc3Ryb2tlR3JhZGllbnQpOwotICAgICAgICBl
bmNvZGVyIDw8ICpzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2Up
KSB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VQYXR0ZXJuKTsKLSAgICAgICAgZW5jb2Rl
ciA8PCAqc3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXRlLmZpbGxHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0
YXRlLmZpbGxHcmFkaWVudDsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBBU1NF
UlQoc3RhdGUuZmlsbFBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxsUGF0
dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFk
b3dPZmZzZXQ7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93Qmx1cjsKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5z
aGFkb3dSYWRpdXNNb2RlOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5zdHJva2VUaGlja25lc3M7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbENvbG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAg
IGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKLSAgICAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5ibGVuZE1vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFu
Z2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7
Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFs
cGhhQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5hbHBoYTsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFz
Q2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRBbnRpYWxpYXM7Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNt
b290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaG91bGRTbW9vdGhG
b250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8
PCBzdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0KLSAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czsKKyAgICBlbmNvZGVyIDw8IG1fc3RhdGU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CiBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncz4gY2hhbmdlRmxhZ3M7Ci0gICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKLSAgICBp
ZiAoIWNoYW5nZUZsYWdzKQorICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+
IHN0YXRlOworICAgIGRlY29kZXIgPj4gc3RhdGU7CisgICAgaWYgKCFzdGF0ZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0
YXRlQ2hhbmdlOwotICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7
Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ryb2tl
R3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIXN0cm9r
ZUdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZSgqc3Ryb2tlR3JhZGll
bnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBh
dXRvIHN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlm
ICghc3Ryb2tlUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZSgqc3Ryb2tl
UGF0dGVybik7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKLSAgICAg
ICAgYXV0byBmaWxsR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAg
ICBpZiAoIWZpbGxHcmFkaWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpmaWxs
R3JhZGllbnQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKLSAgICAg
ICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAg
aWYgKCFmaWxsUGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0
ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwotICAgICAgICBkZWNvZGVyID4+IHNoYWRv
d09mZnNldDsKLSAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zmc2V0
ID0gKnNoYWRvd09mZnNldDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzaGFkb3dC
bHVyOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd0JsdXI7Ci0gICAgICAgIGlmICghc2hhZG93
Qmx1cikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNoYWRvd0JsdXI7Ci0KLSAgICAgICAgc3RkOjpv
cHRpb25hbDxDb2xvcj4gc2hhZG93Q29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93Q29s
b3I7Ci0gICAgICAgIGlmICghc2hhZG93Q29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93Q29sb3IgPSAqc2hh
ZG93Q29sb3I7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiBzaGFk
b3dSYWRpdXNNb2RlOwotICAgICAgICBkZWNvZGVyID4+IHNoYWRvd1JhZGl1c01vZGU7Ci0gICAg
ICAgIGlmICghc2hhZG93UmFkaXVzTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gV1RG
TW92ZSgqc2hhZG93UmFkaXVzTW9kZSk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVz
c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNz
OwotICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKLSAgICAgICAgaWYgKCFzdHJv
a2VUaGlja25lc3MpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
IHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gKnN0cm9rZVRoaWNrbmVzczsK
LSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6
Om9wdGlvbmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAg
IGRlY29kZXIgPj4gdGV4dERyYXdpbmdNb2RlOwotICAgICAgICBpZiAoIXRleHREcmF3aW5nTW9k
ZSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFu
Z2UubV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBXVEZNb3ZlKCp0ZXh0RHJhd2luZ01vZGUpOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gc3Ryb2tlQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gc3Ryb2tlQ29sb3I7
Ci0gICAgICAgIGlmICghc3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlQ29sb3IgPSAqc3Ryb2tl
Q29sb3I7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpIHsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxDb2xvcj4gZmlsbENvbG9yOwotICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xv
cjsKLSAgICAgICAgaWYgKCFmaWxsQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xv
cjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKSB7Ci0gICAgICAgIFN0cm9r
ZVN0eWxlIHN0cm9rZVN0eWxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cm9rZVN0
eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwotICAgIH0KLQotICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsUnVsZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXaW5kUnVsZT4gZmls
bFJ1bGU7Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbFJ1bGU7Ci0gICAgICAgIGlmICghZmlsbFJ1
bGUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hh
bmdlLm1fc3RhdGUuZmlsbFJ1bGUgPSAqZmlsbFJ1bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGVP
cGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRl
T3BlcmF0b3I7Ci0gICAgICAgIGlmICghY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuY29tcG9z
aXRlT3BlcmF0b3IgPSAqY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5k
TW9kZUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9k
ZTsKLSAgICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7Ci0gICAgICAgIGlmICghYmxlbmRNb2Rl
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5n
ZS5tX3N0YXRlLmJsZW5kTW9kZSA9ICpibGVuZE1vZGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50
ZXJwb2xhdGlvblF1YWxpdHk+IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7Ci0gICAgICAgIGRl
Y29kZXIgPj4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAgICAgaWYgKCFpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSAq
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2Up
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhOwotICAgICAgICBkZWNvZGVy
ID4+IGFscGhhOwotICAgICAgICBpZiAoIWFscGhhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFscGhhID0gKmFscGhhOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOwotICAgICAgICBkZWNvZGVyID4+IHNob3Vs
ZEFudGlhbGlhczsKLSAgICAgICAgaWYgKCFzaG91bGRBbnRpYWxpYXMpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxk
QW50aWFsaWFzID0gKnNob3VsZEFudGlhbGlhczsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21v
b3RoRm9udHNDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21v
b3RoRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU21vb3RoRm9udHM7Ci0gICAgICAg
IGlmICghc2hvdWxkU21vb3RoRm9udHMpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSAqc2hv
dWxkU21vb3RoRm9udHM7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOwotICAgICAgICBpZiAoIXNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSAqc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAg
ICAgICAgZGVjb2RlciA+PiBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICAgICAgaWYgKCFz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9
ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB7IHN0YXRl
Q2hhbmdlIH0gfTsKKyAgICByZXR1cm4gU2V0U3RhdGUoKnN0YXRlKTsKIH0KIAogY2xhc3MgU2V0
TGluZUNhcCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
ZWVlNDQ3MWQzNTRlNzUxNTMxMjUxODlkZmNjOTQxOGEzOTQ1MTRhMS4uOTM5NDU1MWYzNTllYzFh
ZjRlYTkyYzdiM2IxNjg0ZWQyZWVkYTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtNTMsNDUgKzUzLDM0IEBAIFJlY29yZGVyOjp+UmVjb3JkZXIoKQog
ICAgIEFTU0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVzLCBp
dCBpbmRpY2F0ZXMgbWlzbWF0Y2hlZCBzYXZlL3Jlc3RvcmUuCiB9CiAKLXN0YXRpYyBib29sIGNv
bnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hh
bmdlRmxhZ3MpCit2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgaW5saW5lU3RhdGVDaGFuZ2VGbGFncyB7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UsCi0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwKLSAgICB9OwotCi0gICAgaWYg
KGNoYW5nZUZsYWdzICE9IChjaGFuZ2VGbGFncyAmIGlubGluZVN0YXRlQ2hhbmdlRmxhZ3MpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0YXRl
LnN0cm9rZUNvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQVNTRVJUKHN0YXRlLmNoYW5nZXMoKSk7CisgICAgCisgICAgaWYgKHN0YXRlLmNvbnRh
aW5zT25seUlubGluZUNoYW5nZXMoKSkgeworICAgICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCkpCisgICAgICAg
ICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmZpbGxDb2xvcigpLnRyeUdldEFzU1JHQkFC
eXRlcygpKTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSAmJiAhY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlH
ZXRBc1NSR0JBQnl0ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3Rh
dGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZUJydXNoKSkKKyAgICAgICAgICAgIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpzdHJva2VD
b2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIAotICAgIHJldHVybiB0cnVlOwotfQorICAg
ICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCisgICAgICAgICAgICByZWNvcmRTZXRTdHJva2VUaGlj
a25lc3Moc3Ryb2tlVGhpY2tuZXNzKCkpOwogCi12b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNo
YW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQotewotICAgIGlm
ICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkg
ewotICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRl
cm4pCi0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7
Ci0gICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuZmlsbFBhdHRlcm4p
Ci0gICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0g
ICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIHJlY29yZFNldElu
bGluZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdC
QUJ5dGVzKCkpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJu
ID0gZmlsbFBhdHRlcm4oKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4t
PnRpbGVJbWFnZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHJlY29y
ZFNldFN0cm9rZVRoaWNrbmVzcyhjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAg
ICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlN0cm9rZUJydXNoKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gc3Ryb2tlUGF0
dGVybigpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUltYWdl
KCkpOworICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENv
bG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKKyAg
ICByZWNvcmRTZXRTdGF0ZShzdGF0ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRl
Q2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKQEAgLTk5LDI1ICs4OCwyNSBAQCB2b2lkIFJlY29yZGVy
OjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCiAgICAgLy8gRklYTUU6IFRoaXMg
aXMgY3VycmVudGx5IGludm9rZWQgaW4gYW4gYWQtaG9jIG1hbm5lciB3aGVuIHJlY29yZGluZyBk
cmF3aW5nIGl0ZW1zLiBXZSBzaG91bGQgY29uc2lkZXIgZWl0aGVyCiAgICAgLy8gc3BsaXR0aW5n
IEdyYXBoaWNzQ29udGV4dCBzdGF0ZSBjaGFuZ2VzIGludG8gaW5kaXZpZHVhbCBkaXNwbGF5IGxp
c3QgaXRlbXMsIG9yIHJlZmFjdG9yaW5nIHRoZSBjb2RlIHN1Y2ggdGhhdAogICAgIC8vIHRoaXMg
bWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgaW52b2tlZCB3aGVuIHJlY29yZGluZyBhIGRyYXdpbmcg
aXRlbS4KLSAgICBhdXRvJiBzdGF0ZUNoYW5nZXMgPSBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5n
ZTsKLSAgICBhdXRvIGNoYW5nZXNGcm9tTGFzdFN0YXRlID0gc3RhdGVDaGFuZ2VzLmNoYW5nZXNG
cm9tU3RhdGUoY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7Ci0gICAgaWYgKCFjaGFu
Z2VzRnJvbUxhc3RTdGF0ZSkKKyAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRl
OworICAgIGlmICghc3RhdGUuY2hhbmdlcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcg
c3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0
ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKLSAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oc3Rh
dGVDaGFuZ2VzLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSk7Ci0gICAgc3RhdGVDaGFuZ2VzLm1fY2hh
bmdlRmxhZ3MgPSB7IH07Ci0gICAgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0
YXRlQ2hhbmdlcy5tX3N0YXRlOworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0
cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAiIDw8IHN0YXRlKTsKKyAgICBhcHBl
bmRTdGF0ZUNoYW5nZUl0ZW0oc3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwor
ICAgIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZTsKIH0KIAogY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIFJlY29yZGVyOjpzdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAgcmV0dXJuIGN1cnJl
bnRTdGF0ZSgpLnN0YXRlOwogfQogCi12b2lkIFJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBSZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdl
LmFjY3VtdWxhdGUoc3RhdGUsIGZsYWdzKTsKKyAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZS5tZXJn
ZUNoYW5nZXMoc3RhdGUsIGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOworICAgIHN0
YXRlLmRpZEFwcGx5Q2hhbmdlcygpOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5lQ2FwKExp
bmVDYXAgbGluZUNhcCkKQEAgLTIyMiwxMiArMjExLDE1IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdQ
YXR0ZXJuKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwKIAogdm9pZCBSZWNvcmRlcjo6c2F2ZSgpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpzYXZl
KCk7CiAgICAgcmVjb3JkU2F2ZSgpOwotICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0
YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CisgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0
YXRlU3RhY2subGFzdCgpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCiB7CisgICAg
R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCk7CisKICAgICBpZiAoIW1fc3RhdGVTdGFjay5zaXpl
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjc1LDE2ICsyNjcsMjQgQEAgQWZmaW5lVHJhbnNm
b3JtIFJlY29yZGVyOjpnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUp
IGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3Bh
Y2l0eSkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3Bh
Y2l0eSk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHJl
Y29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSk7Cisg
ICAgCisgICAgbV9zdGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6
OmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5l
Y2Vzc2FyeSgpOwogICAgIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9zdGF0
ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIG1fc3RhdGUuZGlkRW5kVHJhbnNwYXJlbmN5TGF5
ZXIoY3VycmVudFN0YXRlKCkuc3RhdGUuYWxwaGEpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDg0NWVjMDA3NzJlZDJjNTRhMWU2
Y2IyNmIyMTUxZGFiYWE2ZWMwNzUuLmEyYTIyNjhlNWVkNWViNWMwYTljZmUzY2ZlZWJhNzcwMWMy
YWVmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjksNyAr
NjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldElubGluZUZpbGxD
b2xvcihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxp
bmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNv
cmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkU2V0TGluZUNhcChMaW5lQ2FwKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExp
bmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKQEAgLTEzNSwzMCArMTM1
LDI1IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoRm9u
dCYpID0gMDsKIAogICAgIHN0cnVjdCBDb250ZXh0U3RhdGUgeworICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZSBzdGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRT
dGF0ZT4gbGFzdERyYXdpbmdTdGF0ZTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKICAg
ICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBsYXN0RHJh
d2luZ1N0YXRlOwogCi0gICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIGNsaXApCi0gICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCi0gICAgICAgICAgICAs
IGNsaXBCb3VuZHMoY2xpcCkKLSAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0ZShzdGF0ZSkK
KyAgICAgICAgQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcEJvdW5kcykK
KyAgICAgICAgICAgIDogc3RhdGUoc3RhdGUpCisgICAgICAgICAgICAsIGN0bShjdG0pCisgICAg
ICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcEJvdW5kcykKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yU2F2ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIENvbnRleHRTdGF0ZSBzdGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBC
b3VuZHMpOwotICAgICAgICAgICAgc3RhdGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICAgICAgfQotCiAgICAgICAgIENvbnRleHRTdGF0
ZSBjbG9uZUZvclRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgYXV0byBzdGF0ZSA9IGNsb25lRm9yU2F2ZSgpOwotICAgICAgICAgICAgc3RhdGUubGFzdERy
YXdpbmdTdGF0ZS5hbHBoYSA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAg
ICAgICBhdXRvIGNvcHkgPSAqdGhpczsKKyAgICAgICAgICAgIGNvcHkuc3RhdGUuZGlkQmVnaW5U
cmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgaWYgKGNvcHkubGFzdERyYXdpbmdTdGF0
ZSkKKyAgICAgICAgICAgICAgICBjb3B5Lmxhc3REcmF3aW5nU3RhdGUtPmRpZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHJldHVybiBjb3B5OwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CkBAIC0xODksNyArMTg0LDcg
QEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRV
cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBm
aW5hbDsKQEAgLTI3MCw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEZs
b2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29u
dGV4dDo6Um91bmRpbmdNb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJ
dGVtSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzKTsKKyAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYpOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0oKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5k
ZXggMWZkYzZiYTU2YmZkYjI2MzZlZmIzNDYyYWRhMmE5OTBkMzM4OTk0NS4uNjAwMTk4MWYzZDZi
Njc2ZTM1ODJhNjhlMGE1ZDBmOTIwOWNkNzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAgICAgYXBw
ZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4odGhpY2tuZXNzKTsKIH0KIAotdm9pZCBSZWNvcmRlcklt
cGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKQogewotICAgIGFwcGVuZDxTZXRTdGF0ZT4oc3RhdGUsIGNoYW5nZUZsYWdzKTsKKyAgICBh
cHBlbmQ8U2V0U3RhdGU+KHN0YXRlKTsKIH0KIAogdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaAppbmRleCA2NDIyNjVmMDk4MDIyY2YyYjA1ZjE4MGMxNzRmYTAzNDYyZjJk
ZDQwLi5hYzJkMzE3OTY3NThjNjJjYzYxNTBhMTU0OWQ3YTA5NDA2ZWVmYWI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtNTUsNyArNTUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+
KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4
X3Q+KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgZmlu
YWw7Ci0gICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmluYWw7CiAgICAg
dm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0
TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CiAgICAg
dm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggOGZmMTlkMDAzNTRjZGJlZGUzYTViYTFhZjc1
OGNmZjAyM2EyNWEyMi4uZjNjOGM5MGNkODhiYmUwYzUxZTFkNGZhMTMzYzUxZTgzYjgwYjM5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtOTcsMTAgKzk3
LDEwIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfTsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5U
aWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5zdHJva2VQYXR0ZXJu
LmdldCgpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUlt
YWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkpCiAgICAgICAg
IHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVy
ID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRl
LmZpbGxQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQ
YXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkp
KQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAogICAgIHNldFN0YXRlSXRlbS5h
cHBseShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggOTExNDZkZmM2ZmQ4NGRmOGUyOTU0ZjAzNzdkMDA2
NmE3NzIzM2NjOS4uMTQxNjlhMDc1NThkNjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4OGIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVy
YXRpb25SZWNvcmRlcihQYWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQogICAgIG1fc3Rh
dGVTdGFjay5hcHBlbmQoeyB7IH0sIHsgfSwgRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSB9KTsK
IH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGZsYWdzKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgaWYgKGZsYWdzICYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkgeworICAgIGlmIChzdGF0
ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
VGhpY2tuZXNzKSkgewogICAgICAgICBzdHJ1Y3QgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlIGZpbmFs
IDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8ZmxvYXQ+IHsKICAgICAgICAgICAg
IHZpcnR1YWwgflN0cm9rZVRoaWNrbmVzc0NoYW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTAyLDcg
KzEwMiw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHCiAgICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPFN0cm9rZVRoaWNrbmVzc0NoYW5nZT4oc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CiAg
ICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxl
Q2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpIHsKICAgICAgICAgc3RydWN0IFN0cm9rZVN0
eWxlQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8U3Ryb2tl
U3R5bGU+IHsKICAgICAgICAgICAgIHZpcnR1YWwgflN0cm9rZVN0eWxlQ2hhbmdlKCkgPSBkZWZh
dWx0OwogCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
aWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0cm9rZVN0
eWxlKSk7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkgeworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpIHsKICAgICAg
ICAgc3RydWN0IENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0
aW9uLCBPcGVyYXRpb25EYXRhPENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU+IHsKICAgICAg
ICAgICAgIHZpcnR1YWwgfkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSgpID0gZGVmYXVsdDsKIApA
QCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKIAotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVP
cGVyYXRpb25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUp
KTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdl
PihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVu
ZE1vZGUpKTsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMpKSB7CiAgICAg
ICAgIHN0cnVjdCBTaG91bGRBbnRpYWxpYXNDaGFuZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlv
biwgT3BlcmF0aW9uRGF0YTxib29sPiB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5TaG91bGRBbnRp
YWxpYXNDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTE1NSw2ICsxNTUsOCBAQCB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSwgRwogCiAgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlh
bGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CiAgICAgfQorCisgICAgc3RhdGUu
ZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6c2V0
TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCkBAIC0yOTIsNyArMjk0LDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50
JiBncmFkaWVudCkKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwot
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQ
YXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pKSk7CisgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4o
MS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMxNiw3ICszMTgsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0g
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVP
cGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21w
b3NpdGVPcGVyYXRvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0
LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24pKTsKIH0KIAogdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
QEAgLTM0Niw3ICszNDgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdAogICAgIH07CiAKICAg
ICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
RmlsbFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCwgY29sb3IsIHN0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUu
Y29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
cm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC01MzMsNyArNTM1LDcgQEAg
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSwgcG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRm
b3JtRGF0YSgpLnNjYWxlZEZvbnQoKSksCiAgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNl
dCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2Rl
LAotICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3Rh
dGUuc2hhZG93Q29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKKyAgICAgICAgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwg
Zm9udFNtb290aGluZykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKQEAgLTU5OSw3ICs2MDEsNyBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRo
aWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tl
Q29sb3IpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVy
VGhpY2tuZXNzLCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0
YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50MikKQEAgLTYyMiw3ICs2MjQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludAogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VT
dHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hv
dWxkQW50aWFsaWFzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50
MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSwg
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKIH0KIAogdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29s
IHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVybGluZXMsIFN0cm9rZVN0eWxlKQpAQCAtNjQ1LDcg
KzY0Nyw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxE
cmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3Vi
bGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VDb2xvcikpOworICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcs
IGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKIH0KIAogdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC02ODQs
NyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3Rh
dGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUu
ZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IsIHN0YXRlLnN0
cm9rZVRoaWNrbmVzcykpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdFbGxpcHNlPihy
ZWN0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0
cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcykpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxv
YXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDgzYzZk
MjdkNmVhMzZjNzliZWJkNzgyNWY5OWI3YzQzOTA4ZWU1NGIuLmI5NTI4NjMxMzQzMzAwMmZhZTcy
YmRlNDc4MGQzMjU2OGRjNTgxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRh
dGVTdGF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRMaW5lQ2FwKFdlYkNvcmU6OkxpbmVDYXApIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
TGluZURhc2goY29uc3QgV2ViQ29yZTo6RGFzaEFycmF5JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggN2Vk
NTM3YzkyNzkzNzcwZjQ0ODhhZTI5ZGY0MDcyN2Q3ZWIxYTNhOS4uNjE3OGFlYjFjODc2Mzc3MjE5
NWY5ZTQ0NzYxMGU0OTBlNzY0ZjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02OSw3ICs2OSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJT
VkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdAogc3RhdGlj
IHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIGlmIChhdXRvIGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQotICAgICAg
ICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQsIGNvbnRleHQuc3RhdGUoKS5zdHJv
a2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGll
bnQoKmdyYWRpZW50LCBjb250ZXh0LnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAg
ICAgZWxzZSBpZiAoUGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpKQog
ICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNTQzODE4MmRkZTg3NjNlYmFkMzhmMTkyZGY3
OTVhYTA2MGI2NTFiYi4uOWUzNzg2ZTBmZGNkYjg5ZmIwNjYyOGM4ZmNjNmRjODdiNzdjM2U5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI4LDEwICsxMjgsMTAgQEAgdm9p
ZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3Rh
dGUmJiBpdGVtKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCi0gICAgaWYgKCFmaXhQ
YXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4u
Z2V0KCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJy
dXNoLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZml4UGF0dGVyblRp
bGVJbWFnZShpdGVtLnN0YXRlQ2hhbmdlKCkubV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSkpCisg
ICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0
ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDg1
NzdjYmJkZTZkMzkwMWQzNDcwNzYxZWQzMGY3OWQ5OGU4MmI5OGQuLjliYWY5YTM1Yzk3MGY5Yjc1
MTAzMDU2Y2I1YmQ3ODE2YWVjYWQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVz
cykKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpTZXRTdHJv
a2VUaGlja25lc3ModGhpY2tuZXNzKSk7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5OjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjpTZXRTdGF0ZShEaXNwbGF5TGlzdDo6U2V0U3RhdGUgeyBzdGF0ZSwg
ZmxhZ3MgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6
OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0YXRlIH0pKTsKIH0KIAogdm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFNldExpbmVDYXAoTGluZUNhcCBs
aW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXgg
OWIzM2EwNjdmZDE2YmNjZjE0MDQyYzE5NzRkZDY5MTk0MjI2MjQ2OC4uYmVkMzYzZTA2MjQ1MzUy
N2Y5YTA2MjA4OGNlNjc3YzJiOTkyMjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNv
cmRTZXRJbmxpbmVGaWxsQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWludDhfdD4pIGZpbmFsOwogICAg
IHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoV2ViQ29yZTo6U1JHQkE8dWludDhfdD4p
IGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSBmaW5hbDsK
LSAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVDYXAoV2ViQ29yZTo6TGlu
ZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lRGFzaChjb25zdCBXZWJDb3JlOjpE
YXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZFNldExp
bmVKb2luKFdlYkNvcmU6OkxpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTY2YTUzOWM3MTJjNGM3NGVlNjZkNDYxNjVk
ZjI0YmMxN2Y5ZThjLi5kZjlhNjk3NjEwOWE1Mzg5OWZjNmQyYmQ2NjZlMmU2ZDk3NWMxZTIyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjItMDMtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAg
dHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIyLTAzLTE3ICBKb25hdGhhbiBCZWRhcmQgIDxKb25XQmVkYXJkQGdtYWls
LmNvbT4KIAogICAgICAgICBjb25maWd1cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRldmVsb3BtZW50
IGZhaWxzIHdpdGggWGNvZGUgMTMuMwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmluZGV4
IDI0NzM1ODBmMTkwZTBmZDY3NGMzNjdkYTQ3YzlmMTkyYmEyNDg1ZTQuLjIxNWMxN2M2NjU3YWVk
YTZhNmUyY2QwYWUwYzljOTI2ZjNiZDgyYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgVEVTVChHcmFwaGljc0NvbnRleHRUZXN0cywgRHJhd05hdGl2
ZUltYWdlRG9lc05vdExlYWtDb21wb3NpdGVPcGVyYXRvcikKICAgICBHcmFwaGljc0NvbnRleHRD
RyBjdHgoY2dDb250ZXh0LmdldCgpKTsKIAogICAgIEVYUEVDVF9FUShjdHguY29tcG9zaXRlT3Bl
cmF0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsKLSAgICBFWFBFQ1RfRVEo
Y3R4LmJsZW5kTW9kZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRVhQRUNU
X0VRKGN0eC5ibGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogCiAgICAgYXV0byBncmVl
blBpeGVsQ0cgPSBncmVlbkltYWdlKCk7CiAgICAgYXV0byBncmVlblBpeGVsTmF0aXZlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShncmVlblBpeGVsQ0cuZ2V0KCkpOwpAQCAtNzEsNyArNzEsNyBAQCBU
RVNUKEdyYXBoaWNzQ29udGV4dFRlc3RzLCBEcmF3TmF0aXZlSW1hZ2VEb2VzTm90TGVha0NvbXBv
c2l0ZU9wZXJhdG9yKQogICAgIEVYUEVDVF9FUShwcmltYXJ5RGF0YVsyXSwgMCk7CiAKICAgICBF
WFBFQ1RfRVEoY3R4LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvcjo6U291
cmNlT3Zlcik7Ci0gICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGVPcGVyYXRpb24oKSwgQmxlbmRN
b2RlOjpOb3JtYWwpOworICAgIEVYUEVDVF9FUShjdHguYmxlbmRNb2RlKCksIEJsZW5kTW9kZTo6
Tm9ybWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQxYTNk
YWZmN2Y5NjNiOTVhZDY1YjgwYjA1MzRkY2Q2ZTAxZTZjMWEuLmI1ZDMwOTUxMjc3NjI4NWI0ZWIw
MWFhMDEzOWFiMTA3OTUwYTFmZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMy0yMCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwg
dGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIy
LTAzLTE3ICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zsb3Jlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjkxMTI5LXIyOTExMjgpOiBbV0sxIEVXU10gMyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2FuaW1hdGlvbi1tb2RlbC9hbmltYXRp
b24tdHlwZXMvKiB0ZXN0cyBhcmUgYSBjb25zdGFudCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4
cGVjdGVkLnR4dAppbmRleCA1MTFiN2MwYzU0ZDMzMjE2YjdjNmVhZjA0M2E3NWMxNjc2NmQwNDI3
Li5iMjlmZTJmNTM5YWQ5NjZmNTAyYTUzYjczNzkxZWZlMTRhMGU5Y2IzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ct
ZXhwZWN0ZWQudHh0CkBAIC00LDExICs0LDEyIEBACiAgICh5IDAuMDApKQogKHNhdmUpCiAoc2V0
LXN0YXRlCi0gIChjaGFuZ2UtZmxhZ3MgNTEyKQotICAoc2hhZG93LWJsdXIgMTIuMDApCi0gIChz
aGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKLSAgKHNoYWRvdy1jb2xvciAjMDAwMDAw
KQotICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFncyBbZHJv
cC1zaGFkb3ddKQorICAoZHJvcC1zaGFkb3cKKyAgICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBo
ZWlnaHQ9MjApCisgICAgKHNoYWRvdy1ibHVyIDEyLjAwKQorICAgIChzaGFkb3ctY29sb3IgIzAw
MDAwMCkKKyAgICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1jb21wb3Np
dGVkLXJlY3QKICAgKHJlY3QgYXQgKDUwLDUwKSBzaXplIDEwMHgxMDApCiAgIChjb2xvciAjMDAw
MEZGKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRl
cy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRl
bnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKaW5kZXggMzg2ZTM5NDExODVmMDlh
M2M2OGVjNmMyYWU4OGRmMTFjNzBiMGE2OS4uMWRjYWJiZTdjZTA1YmNiZTk0ZTIzMzY0ZWJlMjll
YTc2ZmYwZjU5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1p
bmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9kaXNwbGF5
bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0CkBAIC02LDExICs2
LDEyIEBACiAgIChjdG0ge209KCgwLjg3LDAuNTApKC0wLjUwLDAuODcpKSB0PSg4MS43MCwtMTgu
MzApfSkpCiAoc2F2ZSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyA1MTIpCi0gIChzaGFk
b3ctYmx1ciAxMi4wMCkKLSAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQotICAo
c2hhZG93LWNvbG9yICMwMDAwMDApCi0gIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApKQor
ICAoY2hhbmdlLWZsYWdzIFtkcm9wLXNoYWRvd10pCisgIChkcm9wLXNoYWRvdworICAgIChzaGFk
b3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKKyAgICAoc2hhZG93LWJsdXIgMTIuMDApCisg
ICAgKHNoYWRvdy1jb2xvciAjMDAwMDAwKQorICAgIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVz
IDApKSkKIChmaWxsLWNvbXBvc2l0ZWQtcmVjdAogICAocmVjdCBhdCAoMCwwKSBzaXplIDEwMHgx
MDApCiAgIChjb2xvciAjMDAwMEZGKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZGlzcGxheWxp
c3RzL2xheWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rpc3BsYXls
aXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQKaW5kZXggYmMxN2I1MTE0OTlmODI1
NmM5OTI5MGRhZTg2MTRkNDg5NGNhZjljYy4uNGRhMDZiM2MzODc2MmVkNzI1Njg1NGM0ZTNmNGUw
NzgzYTY1ZmI2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRp
c3BheS1saXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5
ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0CkBAIC04LDkgKzgsMTAgQEAKICAgKGNvbXBvc2l0
ZS1vcGVyYXRpb24gc291cmNlLW92ZXIpCiAgIChibGVuZC1tb2RlIG5vcm1hbCkgZXh0ZW50IGF0
ICgwLDApIHNpemUgMTA0eDEwNCkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyAzMjk2MCkK
LSAgKGZpbGwtY29sb3IgIzAwMDBGRikKLSAgKHN0cm9rZS1zdHlsZSAwKQorICAoY2hhbmdlLWZs
YWdzIFtmaWxsLWJydXNoLCBzdHJva2Utc3R5bGUsIHNob3VsZC1hbnRpYWxpYXNdKQorICAoZmls
bC1icnVzaAorICAgIChjb2xvciAjMDAwMEZGKSkKKyAgKHN0cm9rZS1zdHlsZSBOTy1TVFJPS0Up
CiAgIChzaG91bGQtYW50aWFsaWFzIDApKQogKGRyYXctcmVjdAogICAocmVjdCBhdCAoMCwwKSBz
aXplIDEwNHgyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
M2M5ZjIxYjNkZTNjMTg5MWU1ZmFlMTJiZjViNjgwYzA4ZDk1YmRhZC4uYjdiZjFlZGVkOTNhZjIx
ZDFmZDRkZWM0OGM3ZjE1NmQ5YzhkYWZhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xLDIxICsxLDExIEBACiAjIEdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMg
dG8gbG9vayBhdCB0aGUgYm90cyBvbiByZXN1bHRzLndlYmtpdC5vcmcgZmlyc3QKIAogIyBJbmNv
cnJlY3Qgc2l6ZQotd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29udGFpbi9jb250YWluLXNpemUtYnJlYWtzLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTA2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGluZS1icmVhay1hbnl3aGVyZS1h
bmQtd2hpdGUtc3BhY2UtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogd2Via2l0
Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4
dC93aGl0ZS1zcGFjZS9icmVhay1zcGFjZXMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBh
c3MgXQogd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdGV4dC93aGl0ZS1zcGFjZS9icmVhay1zcGFjZXMtd2l0aC1vdmVyZmxvdy13cmFw
LTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAogIyBUaGVyZSBpcyB0ZXh0IGlu
L25lYXIgdGhlIGJveAotd2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3NoYWRvdy1kb20vbnRoLW5v
ZGUtb24tc2hhZG93LWNoaWxkLWludmFsaWRhdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTA3IGZhc3Qvc2hhZG93LWRvbS9udGgtbm9kZS1vbi1zaGFkb3ct
Y2hpbGQtbm8taml0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MDcgZmFzdC9zaGFkb3ctZG9tL250aC1ub2RlLW9uLXNoYWRvdy1jaGlsZC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2Nv
cGluZy1zaGFkb3ctc2xvdC1zdHlsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY29w
aW5nL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LXN0eWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgbWF0aG1sL3ByZXNlbnRhdGlvbi9tcm9vdC1wcmVmLXdp
ZHRoLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLW11
bHRpY29sLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4t
c2l6ZS1tdWx0aWNvbC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkwNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29udGFpbi9j
b250YWluLXNpemUtbXVsdGljb2wtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMzY5MDcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZs
ZXhib3gvY3NzLWZsZXhib3gtdGVzdDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIE1p
c3BsYWNlZCB0ZXh0CkBAIC0zNyw2MCArMjcsNyBAQCB3ZWJraXQub3JnL2IvMjM2OTEyIGh0dHAv
d3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtdGV4dC1kZWNvcmF0aW9ucy5odAog
CiAjIFdyb25nIHRleHQgY29sb3IKIHdlYmtpdC5vcmcvYi8yMzY5MTMgZmFzdC9jc3MvdmFyaWFi
bGVzL3Rlc3Qtc3VpdGUvMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQotd2Via2l0
Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL2R5bmFtaWMvaW5zZXJ0
LXNwYW5uZXItYWZ0ZXItY29udGVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvZHluYW1pYy9pbnNlcnQt
c3Bhbm5lci1iZWZvcmUtY29udGVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvZHluYW1pYy9pbnNlcnQt
c3Bhbm5lci1hZnRlci1zcGFubmVyLWJlZm9yZS1jb250ZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC92
ZXJ0aWNhbC1sci9mbG9hdC1jb250ZW50LWJyZWFrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC92ZXJ0aWNh
bC1ybC9mbG9hdC1jb250ZW50LWJyZWFrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC90YWxsLWxpbmUtaW4t
c2hvcnQtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29udGFpbi9jb250YWlu
LWxheW91dC1zdXBwcmVzcy1iYXNlbGluZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtY29udGFpbi9jb250YWluLXNpemUtYmxvY2stMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLWJsb2NrLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhib3hfcm93c3Bhbi1vdmVyZmxvdy1hdXRvbWF0aWMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9mbGV4Ym94X3Jvd3NwYW4tb3ZlcmZs
b3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZm9udHMvZmlyc3QtYXZhaWxhYmxlLWZv
bnQtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBOb3QgYSBncmVlbiBsaW5lIG9u
IHRoZSBsZWZ0IHNpZGUgb2YgYSB5ZWxsb3cgc3F1YXJlCi13ZWJraXQub3JnL2IvMjM2OTE0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50
LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwMi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9z
dmctZG9jdW1lbnQtc3R5bGVzLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwNC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1l
bnQtc3R5bGVzLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2Rv
Y3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVz
LTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0
eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAxMC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmct
ZG9jdW1lbnQtc3R5bGVzLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQtc3R5bGVzLTAxMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2RvY3VtZW50LXN0eWxlcy9zdmctZG9jdW1lbnQt
c3R5bGVzLTAxMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVy
bmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAw
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxl
cy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwNC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0
ZXJuYWwtc3R5bGVzLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwNi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5
bGVzLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFs
LXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAxMC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9z
dmctZXh0ZXJuYWwtc3R5bGVzLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL2V4dGVybmFsLXN0eWxlcy9zdmctZXh0ZXJuYWwtc3R5bGVzLTAxMy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGluZS1z
dHlsZXMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTQg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5saW5l
LXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwMy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlubGlu
ZS1zdHlsZXMtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvaW5s
aW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwNi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlu
bGluZS1zdHlsZXMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
aW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAxMC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3Zn
LWlubGluZS1zdHlsZXMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMTIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAx
My5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLSMgVGhlcmUgaXMgcmVkCi13ZWJraXQub3Jn
L2IvMjM2OTE1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL2dyYWRpZW50VHJhbnNmb3JtL3N2Zy1ncmFkaWVudFRyYW5zZm9ybS0wMDEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9ncmFkaWVudFRyYW5zZm9ybS9zdmctZ3Jh
ZGllbnRUcmFuc2Zvcm0tY29tYmluYXRpb24tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvZ3JhZGllbnRUcmFuc2Zvcm0vc3ZnLWdyYWRpZW50VHJhbnNmb3JtLWNv
bWJpbmF0aW9uLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgVGhlcmUgYXJlIHNt
YWxsIHJlY3RhbmdsZXMgb3IgY2hhcmFjdGVycyBiZWxvdyBtYWluIGNoYXJhY3Rlcgogd2Via2l0
Lm9yZy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFs
dWVzL2NoLXVuaXQtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTEwMSwxNTIgKzM4
LDYgQEAgd2Via2l0Lm9yZy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdmFsdWVzL2ljLXVuaXQtMDEwLmgKIHdlYmtpdC5vcmcvYi8yMzY5MTYgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9pYy11bml0LTAxMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTE2IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YWx1ZXMvaWMtdW5pdC0wMTIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCi0jIFRyYW5zZm9ybSBmYWlsdXJlcwotd2Via2l0Lm9yZy9iLzIzNjkx
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1z
ZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2
Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0t
bGlzdC1zZXBhcmF0aW9ucy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0
aW9ucy0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDYuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBh
cmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10
cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlz
dC1zZXBhcmF0aW9ucy0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9u
cy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
bGlzdC1zZXBhcmF0aW9uL3N2Zy10cmFuc2Zvcm0tbGlzdC1zZXBhcmF0aW9ucy0wMTEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tbGVuZ3RoLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0
aC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
b3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDA1Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmct
b3JpZ2luLWxlbmd0aC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwNy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5n
dGgtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWNtLTAw
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmln
aW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tbGVuZ3RoLWNtLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtaW4tMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLWxlbmd0aC1pbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAwMy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1s
ZW5ndGgtaW4tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1pbi0wMDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3Ro
LXB0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1wdC0w
MDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDA1Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3Ro
LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1v
cmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwNS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDcuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDA5
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdp
bi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVu
Z3RoLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxNC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdp
bi1yZWxhdGl2ZS1sZW5ndGgtMDE1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTYuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
MDE4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTkuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLTAyMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDIxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC0wMjIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyMy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtMDI3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjguaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLTAyOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDMwLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LXJlbGF0aXZlLWxlbmd0aC0wMzEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDMzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0w
MzQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1s
ZW5ndGgtMDM2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVs
YXRpdmUtbGVuZ3RoLTAzOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM5Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC0wNDAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0MS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0
aC0wNDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
b3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0NC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2
ZS1sZW5ndGgtMDQ1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wNDYuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4t
cmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC1p
bnZhbGlkLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxl
bmd0aC1pbnZhbGlkLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDYu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA3Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC1pbnZhbGlkLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxp
ZC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0t
b3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDEwLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
aW52YWxpZC0wMTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCi0jIE11bHRpY29sIGZhaWx1
cmVzCi13ZWJraXQub3JnL2IvMjM2OTE5IGlldGVzdGNlbnRlci9jc3MzL211bHRpY29sdW1uL2Nv
bHVtbi1jb250YWluaW5nLWJsb2NrLTAwMy5odG0gWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11
bHRpY29sL211bHRpY29sLWJsb2NrLW5vLWNsaXAtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbXVsdGljb2wvbXVsdGljb2wtYmxvY2stbm8tY2xpcC0wMDIueGh0IFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jbGlwLTAwMS54aHQgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNsaXAtMDAyLnhodCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY29sdW1ucy1pbnZhbGlkLTAwMS54aHQgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvbHVtbnMtaW52YWxpZC0w
MDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb2x1bW5z
LXRvb2xvbmctMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtY29udGFpbmluZy0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1jb250YWluaW5nLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLWNvdW50LW5lZ2F0aXZlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW11bHRpY29sL211bHRpY29sLWNvdW50LW5lZ2F0aXZlLTAwMi54aHQgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvdW50LW5vbi1pbnRlZ2VyLTAwMS54aHQg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvdW50LW5vbi1pbnRl
Z2VyLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNv
dW50LW5vbi1pbnRlZ2VyLTAwMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29s
L211bHRpY29sLWZpbGwtYXV0by0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLWZpbGwtYXV0by0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1maWxsLWF1dG8tYmxvY2stY2hpbGRyZW4tMDAxLnhodCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZmlsbC1iYWxhbmNlLTAw
MS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWdhcC0wMDIu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1nYXAtMDAzLnho
dCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZ2FwLWxhcmdlLTAw
MS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWdhcC1sYXJn
ZS0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1nYXAt
bmVnYXRpdmUtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtaGVpZ2h0LTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRp
Y29sLWhlaWdodC1ibG9jay1jaGlsZC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
dWx0aWNvbC9tdWx0aWNvbC1tYXJnaW4tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLW1hcmdpbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbXVsdGljb2wvbXVsdGljb2wtbWFyZ2luLWNoaWxkLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLW5lc3RlZC1jb2x1bW4tcnVsZS0wMDEueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1vdmVyZmxvd2luZy0wMDEu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLTAwMy54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtY29sb3It
MDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1m
cmFjdGlvbi0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNv
bC1ydWxlLWZyYWN0aW9uLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29s
L211bHRpY29sLXJ1bGUtbGFyZ2UtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVs
dGljb2wvbXVsdGljb2wtcnVsZS1wZXJjZW50LTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtc2FtZWxlbmd0aC0wMDEueGh0IFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLXNob3J0aGFuZC0wMDEueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC0wMDEueGh0
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC0wMDIu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC0w
MDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFs
bC1tYXJnaW4tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtc3Bhbi1hbGwtbWFyZ2luLWJvdHRvbS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWZsb2F0LTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW11bHRpY29sL211bHRpY29sLXRhYmxlLWNlbGwtdmVydGljYWwtYWxpZ24tMDAxLnho
dCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtd2lkdGgtc21hbGwt
MDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcG9zaXRpb24vbXVsdGljb2wvdmxyLWx0
ci1sdHItaW4tbXVsdGljb2xzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0aW9u
L211bHRpY29sL3ZybC1sdHItbHRyLWluLW11bHRpY29scy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi0KICMgQ1NTIFNoYXBlcyBmYWlsdXJlcwogd2Via2l0Lm9yZy9iLzIzNjkyMCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2hhcGVzL3NoYXBlLW91dHNpZGUvc2hh
cGUtaW1hZ2Uvc2hhcGUtaW1hZ2UtMDAyLmh0bWwKIHdlYmtpdC5vcmcvYi8yMzY5MjAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNoYXBlcy9zaGFwZS1vdXRzaWRlL3No
YXBlLWltYWdlL3NoYXBlLWltYWdlLTAwMy5odG1sCkBAIC0yODIsMjUgKzczLDkgQEAgd2Via2l0
Lm9yZy9iLzIzNjkyMiBzeXN0ZW0tcHJldmlldy9iYWRnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAjIE5vL2JhZCBjb2xvcmVkIGJveGVzCiB3ZWJraXQub3JnL2IvMjM2OTIzIGZhc3QvY3Nz
L3BhaW50LW9yZGVyLXNoYWRvdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMjM2OTIzIGltcG9ydGVkL2JsaW5rL3N2Zy90ZXh0L29iYi1wYWludHNlcnZlci5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWF0aG1sL3JlbGF0aW9ucy9jc3Mtc3R5bGluZy9jb2xvci0wMDUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcG9zaXRpb24vc3RpY2t5L3Bvc2l0aW9uLXN0aWNr
eS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkyMyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcG9zaXRpb24vc3RpY2t5L3Bv
c2l0aW9uLXN0aWNreS13cml0aW5nLW1vZGVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXZhcmlhYmxlcy92YXJzLWZvbnQtc2hvcnRoYW5kLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKICMgTm8vYmFkIGdyYWRpZW50L3BhdHRlcm4KLXdlYmtpdC5vcmcvYi8yMzY5MjQgaW1w
b3J0ZWQvbW96aWxsYS9zdmcvbGluZWFyR3JhZGllbnQtYmFzaWMtMDMuc3ZnIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IGltcG9ydGVkL21vemlsbGEvc3ZnL3BhdHRl
cm4tdHJhbnNmb3JtZWQtMDEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTI0IHN2Zy9ncmFkaWVudHMvZ3JhZGllbnQtZmxpcHBlZC1zdGFydC1lbmQtcG9pbnRzLnN2
ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRz
L3NwcmVhZE1ldGhvZC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2RBbHBoYS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2REaWFnb25h
bC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRp
ZW50cy9zcHJlYWRNZXRob2REaWFnb25hbDIuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kRGlhZ29uYWwzLnN2ZyBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3Nw
cmVhZE1ldGhvZERpYWdvbmFsNC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2REdXBsaWNhdGVTdG9wLnN2ZyBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3JhZGllbnRzL3NwcmVh
ZE1ldGhvZFJldmVyc2VkLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkyNCBzdmcvZ3JhZGllbnRzL3N0b3BBbHBoYS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MjQgc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLWdy
YWRpZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MjQgc3Zn
L3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLXBhdHRlcm4uaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogCiAjIE1lZGlhIGZhaWx1cmVzCg==
</data>
<flag name="commit-queue"
          id="483282"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455326</attachid>
            <date>2022-03-21 20:52:06 -0700</date>
            <delta_ts>2022-03-21 22:27:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238066-20220321205205.patch</filename>
            <type>text/plain</type>
            <size>222146</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk0MWFjN2I0NGNlYzg5
NGFkZjc1YzY0MjQ3MjA0MDYxZTMwMDZkMC4uMjA1NjI1MTExYzg2ZDQ3YWI0ZjRhNTMwMDdlOWM3
NGFiYmM3ZTViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MCBAQAorMjAyMi0wMy0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRpbGwgdGhl
eSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY2CisgICAgICAgIHJkYXI6Ly85MDU4NTE4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBBIG1lbWJlciBvZiB0eXBlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2VGbGFncyB3aWxsIGJlIGFkZGVkIHRvCisgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCBoYXMgY2hhbmdlcyBzaW5jZSBpdCB3
YXMgbGFzdAorICAgICAgICBhcHBsaWVkLiBTbyB3ZSBjYW4gZWxpbWluYXRlIHRoZSBzdHJ1Y3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UuCisKKyAgICAgICAgV2Ugd2lsbCBoYXZlIHRvIGhh
dmUgYSBzaW5nbGUgbWVtYmVyIGZvciBldmVyeSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
LiAKKworICAgICAgICAxLiBTbyB3ZSB3aWxsIGNvbWJpbmUgdGhlIGNvbG9yLCB0aGUgcGF0dGVy
biwgdGhlIGdyYWRpZW50IGFuZCB0aGUgZ3JhZGllbnQKKyAgICAgICAgICAgc3BhY2UgdHJhbnNm
b3JtIGluIG9uZSBjbGFzcyBjYWxsZWQgJ1NvdXJjZUJydXNoJy4KKworICAgICAgICAyLiBXZSB3
aWxsIGNvbWJpbmUgdGhlIHNoYWRvdyBvZmZzZXQsIHRoZSBzaGFkb3cgYmx1clJhZGl1cywgdGhl
IHNoYWRvdworICAgICAgICAgICBjb2xvciBhbmQgdGhlIHJhZGl1cyBtb2RlIGluIG9uZSBzdHJ1
Y3QgY2FsbGVkICdEcm9wU2hhZG93JworCisgICAgICAgIDMuIEFuZCB3ZSB3aWxsIGNvbWJpbmUg
dGhlIENvbXBvc2l0ZU9wZXJhdG9yIGFuZCB0aGUgQmxlZE1vZGUgaW4gb25lIHN0cnVjdCAKKyAg
ICAgICAgICBjYWxsZWQgJ0NvbXBvc2l0ZU1vZGUnLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlIHdpbGwgaGFuZGxlIHNldHRpbmcgaXRzIG1lbWJlcnMsIGl0cyBlbmNvZGluZyBhbmQK
KyAgICAgICAgZGVjb2RpbmcgYW5kIGl0cyBzdHJlYW1pbmcgdG8gdGV4dC4KKworICAgICAgICBB
ZGRpbmcgYSB0cmFuc3BhcmVuY3kgbGF5ZXIgaW4gQ0cgc2V0cyB0aGUgZ2xvYmFsIGFscGhhIHRv
IDEuIFdlIG5lZWQgdG8KKyAgICAgICAgc3luYyB0aGUgbWVtYmVyIEdyYXBoaWNzQ29udGV4dFN0
YXRlLmFscGhhIHdpdGggdGhlIHBsYXRmb3JtIGFscGhhIHdoZW4KKyAgICAgICAgd2UgYmVnaW5U
cmFuc3BhcmVuY3lMYXllcigpIGFuZCB3aGVuIHdlIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkuCisK
KyAgICAgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHdpbGwga2VlcCBpdHMgc3RhY2sgb2YgR3Jh
cGhpY3NDb250ZXh0U3RhdGUuIFRoZQorICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHN0
YXRlIG9mIEdyYXBoaWNzQ29udGV4dCBhbmQgdGhlIHN0YXRlIG9mIHRoZSAKKyAgICAgICAgUmVj
b3JkZXIgaXMgd2UgZWFnZXJseSBhcHBseSB0aGUgZm9ybWVyIHRvIHRoZSBwbGF0Zm9ybSBjb250
ZXh0IGJ1dCB3ZQorICAgICAgICBsYXppbHkgcmVjb3JkIHRoZSBjaGFuZ2VzIG9mIHRoZSBsYXRl
ci4gUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKCkKKyAgICAgICAgb3ZlcnJpZGVzIHRoZSBiYXNl
IGNsYXNzIG1ldGhvZCB0byBqdXN0IG1lcmdlIHRoZSBjaGFuZ2VzIGZyb20gdGhlIGJhc2UKKyAg
ICAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OjptX3N0YXRlIHRvIFJlY29yZGVyOjpjdXJyZW50
U3RhdGUoKS5zdGF0ZS4KKyAgICAgICAgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbSgp
IHJlY29yZHMgdGhlIGFjY3VtdWxhdGVkIGNoYW5nZXMgaW4gdGhlCisgICAgICAgIGN1cnJlbnRT
dGF0ZSgpIHNpbmNlIHRoZSBsYXN0IGRyYXdpbmcuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0Ojp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmdldFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFN0cm9rZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0U2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6Y2xlYXJTaGFkb3cpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxDb2xvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudFNwYWNlVHJh
bnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBh
dHRlcm4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxs
QnJ1c2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdHRlcm4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VCcnVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlVGhpY2tuZXNzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlU3R5bGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyb3BTaGFkb3cgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaGFkb3dPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaGFkb3dCbHVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2hhZG93Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpo
YXNWaXNpYmxlU2hhZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6aGFzQmx1cnJlZFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6Omhhc1NoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmNvbXBvc2l0ZU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Ojpjb21wb3NpdGVPcGVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpibGVuZE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRDb21wb3NpdGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRleHREcmF3
aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFRl
eHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RHJh
d0x1bWluYW5jZU1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRV
c2VEYXJrQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJs
ZW5kTW9kZU9wZXJhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpoYXNPbmx5UHJpbWl0aXZlQ2hhbmdlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRCZWdpblRyYW5zcGFyZW5j
eUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRFbmRU
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZUNoYW5nZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBw
bHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2U6OmR1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmNoYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRpZEFwcGx5Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldEZpbGxSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRDb21wb3NpdGVNb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcm9wU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRBbHBoYSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERy
YXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRT
aG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNob3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VXNlRGFya0Fw
cGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlTW9kZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGVNb2RlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlTW9kZTo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmlzVmlzaWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEcm9wU2hhZG93Ojppc0JsdXJyZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJvcFNoYWRvdzo6aGFzT3V0c2V0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3c6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9wU2hhZG93OjpkZWNvZGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OlNoYWRvd0JsdXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OlNvdXJjZUJydXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJydXNoOjpncmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpncmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCcnVzaDo6cGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OnNl
dFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCcnVzaDo6Y29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6
OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNoOjpicnVzaCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCcnVzaDo6c2V0R3JhZGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnJ1c2g6OmlzUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OkJydXNoOjpM
b2dpY2FsR3JhZGllbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
cnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJydXNoOjpCcnVzaDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJydXNoOjpCcnVzaDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJydXNo
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnJ1c2g6OmRlY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpkcmF3UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdFbGxpcHNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDRzo6ZHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Q0c6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpz
dHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5kZWRSZWN0
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRX
b3JrYXJvdW5kSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0dTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJbnRlcm5h
bENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVG
aWxsQnJ1c2gpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVT
dHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0
ZUNUTSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlw
aHMpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29s
b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjp1cGRh
dGVTdHJva2VDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dJc0NsZWFy
ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OnNob3VsZER1bXBGb3JGbGFncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6U2V0U3RhdGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpz
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlQ2hh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRT
dGF0ZTo6c3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRpZFVw
ZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2F2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJlc3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5j
eUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmNvbnRhaW5z
T25seUlubGluZVN0YXRlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNs
b25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZFNldFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRl
U3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJl
Y3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdH
bHlwaHMpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1Jl
Y3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUp
OgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9y
VGV4dCk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxs
aXBzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJva2VTdHlsZVRvRmlsbCk6CisK
IDIwMjItMDMtMTcgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdWJncmlkIGl0ZW1zIHNob3VsZCBhbHdheXMgYmUgc3RyZXRjaGVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBlZmVlNmNiYzljODk3YjljZWFhZDA2YmU3ZjhjZWUwODYwZTMyOTFlLi40Y2RkMDc0MjBhNmVl
NzYyMmQ2MTlmNzE3MGI1NDczODJjOWUzZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIyLTAzLTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNo
YW5nZXMgdGlsbCB0aGV5IGFyZSBhcHBsaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjYKKyAgICAgICAgcmRhcjovLzkwNTg1MTgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3Rh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5oOgorCiAyMDIyLTAzLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2FsbCBkb0RhaWx5QWN0aXZpdHlJbk1hbmFn
ZXIgb24gbWFpbiB0aHJlYWQgaW4gYWRhdHRyaWJ1dGlvbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4
IDJkZWQwOTdjYWE2YTMxNGQ4NWRlNTMxMDhhODUwZGE1MThjNDg5ZmMuLmViY2I1MzE3Y2Q3ZjM5
YmJhYWU0MjMwYThlZjVkYjE2ZjMwNGFhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTU3MSw2
ICsxNTcxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaG91bGRMb2NhbGl6ZUF4aXNOYW1l
cy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdl
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNDNjYzEyZjdjMjU5YTUwNjZmYjMzMzlmZjhmMjI0ZWY2YTg2
Y2ZiOS4uZWI3NmExODZkMzQ4ZDRiMzY4OWYyMzRmM2RiZjYyODJhYWFkZTA1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIwODUsNiArMjA4NSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGlt
ZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1JvdW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJydXNoLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ0MGY4OWNmMWYzNDJkOGU0
NWE2NmM4OGYzNjViNjU4ZThkMGQ4MzIuLjVjOWE1NWQxOGQ2NzA5NGViMmVmZGMyY2VkZDUzZmMz
ZWI1M2Q2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIzNjQsNiArMjM2NCw3IEBACiAJCTcyRDczNjQ0Mjc4NDYxQTAwMDM5
ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZFRjggLyogRmlsdGVyUmVzdWx0cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRjY2
N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGNjY3REYyNjBDMjY0NDAw
RUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8q
IFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkZEMzBBQzI3RTMyMTdC
MDAyM0NEQUMgLyogU291cmNlQnJ1c2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyRkQzMEFBMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc1NTND
RkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVB
MjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBC
MzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVu
dC5oICovOyB9OwogCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUM3
MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5oICovOyB9OwpAQCAtMTE0MjgsNiAr
MTE0MjksOCBAQAogCQk3MkZCMjM4NzIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0
eUxpc3RBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJGQjIzODgyMjQ5N0IxNTAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5p
bWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0
eUxpc3RBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM5NjIy
NEIwN0I5MDA3RTVBQzcgLyogU1ZHUGF0aFNlZ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzJGRDMwQTkyN0UzMjE3QTAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUJydXNoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJydXNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1l
bGluZVJlY29yZEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTND
RkU3MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU3OTNFODAwRDBDRTBCMzAwN0ZDMEFDIC8q
IE1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTUyLDYg
KzI5MTU1LDggQEAKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5j
cHAgKi8sCiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywK
IAkJCQkxQzREQjAyNDI3MzM5RTVFMDA3QjBBRDEgLyogU2hvdWxkTG9jYWxpemVBeGlzTmFtZXMu
aCAqLywKKwkJCQk3MkZEMzBBOTI3RTMyMTdBMDAyM0NEQUMgLyogU291cmNlQnJ1c2guY3BwICov
LAorCQkJCTcyRkQzMEFBMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oICovLAogCQkJ
CTFERDEyN0FDMjU2RTNBODcwMEIyMjdENyAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLywK
IAkJCQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICov
LAogCQkJCUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50LmggKi8sCkBAIC0zNzM3Nyw2ICszNzM4Miw3IEBACiAJCQkJNTEwRDRBMzgxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0QTgxRjNFMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzJGRDMwQUMyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJy
dXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291
cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMTM1MDkyNEM5RkNB
MzAwNDMyRTFFIC8qIFNvdXJjZUJ1ZmZlclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDlmZDI1ZDgwYWQxMmRjOTFkZDExZjkxNTk4ZmM2Yzhl
ZmE0Y2IyYTIuLmFjZDA4NmYyMmEyYzIxNzg5ZmJiNTk5ODMxYTljYTNlMGMyNzk2Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMTYsMTQgKzExNiwxOCBAQCB2b2lkIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogdm9p
ZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0
IG9wYWNpdHkpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
KG9wYWNpdHkpOwogICAgIG1fcHJpbWFyeUNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihv
cGFjaXR5KTsKICAgICBtX3NlY29uZGFyeUNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihv
cGFjaXR5KTsKKyAgICBtX3N0YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAog
dm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiB7
CisgICAgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fcHJp
bWFyeUNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBtX3NlY29uZGFyeUNvbnRl
eHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5j
eUxheWVyKG1fcHJpbWFyeUNvbnRleHQuYWxwaGEoKSk7CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBmYWN0b3IpCkBAIC00
MzAsMTMgKzQzNCwxNCBAQCBib29sIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnN1cHBvcnRz
SW50ZXJuYWxMaW5rcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpbWFyeUNvbnRleHQuc3VwcG9y
dHNJbnRlcm5hbExpbmtzKCk7CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6
ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3ZvaWQgQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dDo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogewogICAgIC8vIFRoaXMgY2FsbHMgdXBkYXRlU3RhdGUoKSBpbnN0ZWFkIG9mIGRpZFVwZGF0
ZVN0YXRlKCkgc28gdGhhdCBjaGFuZ2VzCiAgICAgLy8gYXJlIGFsc28gYXBwbGllZCB0byBlYWNo
IGNvbnRleHQncyBHcmFwaGljc0NvbnRleHRTdGF0ZSwgc28gdGhhdCBjb2RlCiAgICAgLy8gaW50
ZXJuYWwgdG8gdGhlIGNoaWxkIGNvbnRleHRzIHRoYXQgcmVhZHMgZnJvbSB0aGUgc3RhdGUgZ2V0
cyB0aGUgcmlnaHQgdmFsdWVzLgotICAgIG1fcHJpbWFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3Rh
dGUsIGZsYWdzKTsKLSAgICBtX3NlY29uZGFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUsIGZs
YWdzKTsKKyAgICBtX3ByaW1hcnlDb250ZXh0LnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICBtX3Nl
Y29uZGFyeUNvbnRleHQudXBkYXRlU3RhdGUoc3RhdGUpOworICAgIHN0YXRlLmRpZEFwcGx5Q2hh
bmdlcygpOwogfQogCiAjaWYgT1MoV0lORE9XUykgJiYgIVVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaAppbmRleCBmNThiMzRjOTE0MzQyYjczNzc3MjdjMTFhNzNiNmQ4MjE4ZTE1NTZm
Li5hM2YwZDE5ODZmZjFlMzU4ZDc2MTRjODBjNDJlMzY3ZGQzN2YwMjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dC5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBw
b3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlkVXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0Nv
bnRleHRTdGF0ZSYpIGZpbmFsOwogCiAjaWYgT1MoV0lORE9XUykgJiYgIVVTRShDQUlSTykKICAg
ICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGRlcHJlY2F0ZWRQcml2YXRlQ29udGV4
dCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAyNWEzZDNmZTg3NzMzMWRkYTM5NTc4MDEx
YjZkODkwZjIxMmM3MmU2Li5lYTY5MzViZDA2ODIyZjExM2RiYmIwNjE0MWUzMGRmOGEyMjU0ZWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhz
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5
cGhzUmVjb3JkZXIuaApAQCAtODQsMTUgKzg0LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVw
YXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CiAgICAg
dm9pZCBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogCi0gICAgdm9pZCB1cGRhdGVGaWxsQ29s
b3IoY29uc3QgQ29sb3ImLCBHcmFkaWVudCogPSBudWxscHRyLCBQYXR0ZXJuKiA9IG51bGxwdHIp
OwotICAgIHZvaWQgdXBkYXRlU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBHcmFkaWVudCogPSBu
dWxscHRyLCBQYXR0ZXJuKiA9IG51bGxwdHIpOworICAgIHZvaWQgdXBkYXRlRmlsbEJydXNoKGNv
bnN0IFNvdXJjZUJydXNoJik7CisgICAgdm9pZCB1cGRhdGVTdHJva2VCcnVzaChjb25zdCBTb3Vy
Y2VCcnVzaCYpOwogICAgIHZvaWQgdXBkYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
ICAgIGVudW0gY2xhc3MgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgewogICAgICAgICBVbnNwZWNp
ZmllZCwKICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCB1cGRhdGVT
aGFkb3coY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIsIGNv
bnN0IENvbG9yJiBzaGFkb3dDb2xvciwgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIHZv
aWQgdXBkYXRlU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7CiAKICNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQogICAgIHZvaWQgdXBk
YXRlU2hhZG93KENHU3R5bGVSZWYpOwpAQCAtMTExLDI3ICsxMTEsMTMgQEAgcHJpdmF0ZToKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbV9vcmlnaW5hbFRleHRNYXRyaXg7CiAKICAgICBzdHJ1Y3QgU3Rh
dGUgewotICAgICAgICBzdHJ1Y3QgU3R5bGUgewotICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0g
ICAgICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OwotICAgICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgICAgICAgICBSZWZQdHI8UGF0
dGVybj4gcGF0dGVybjsKLSAgICAgICAgfTsKLSAgICAgICAgU3R5bGUgZmlsbFN0eWxlOwotICAg
ICAgICBTdHlsZSBzdHJva2VTdHlsZTsKLQorICAgICAgICBTb3VyY2VCcnVzaCBmaWxsQnJ1c2g7
CisgICAgICAgIFNvdXJjZUJydXNoIHN0cm9rZUJydXNoOwogICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gY3RtOwotCi0gICAgICAgIHN0cnVjdCBTaGFkb3dTdGF0ZSB7Ci0gICAgICAgICAgICBGbG9h
dFNpemUgb2Zmc2V0OwotICAgICAgICAgICAgZmxvYXQgYmx1ciB7IDAgfTsKLSAgICAgICAgICAg
IENvbG9yIGNvbG9yOwotICAgICAgICAgICAgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zIHsgZmFsc2Ug
fTsKLSAgICAgICAgfTsKLSAgICAgICAgU2hhZG93U3RhdGUgc2hhZG93OworICAgICAgICBEcm9w
U2hhZG93IGRyb3BTaGFkb3c7CisgICAgICAgIGJvb2wgaWdub3JlVHJhbnNmb3JtcyB7IGZhbHNl
IH07CiAgICAgfTsKICAgICBTdGF0ZSBtX29yaWdpbmFsU3RhdGU7Ci0gICAgU3RhdGUgbV9jdXJy
ZW50U3RhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAzYzM3
NGZkOWJhODI3Yzk0YjdmMzRiNzQ0NmE1ZjdhYmM4YTNlODYzLi45ZTRkMDY2YjAzOWI2ZDVmZTRj
NTJjZDVhYTQ5N2Q0Mjk5YTZmYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQzLDYgKzQzLDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiBjaGFuZ2VGbGFncykKKyAgICA6
IG1fc3RhdGUoY2hhbmdlRmxhZ3MpCit7Cit9CisKIEdyYXBoaWNzQ29udGV4dDo6fkdyYXBoaWNz
Q29udGV4dCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKQEAgLTcwLDEwICs3
NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSgpCiAgICAgICAgIG1fc3RhY2su
Y2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0ZVN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRlU3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4
dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSkKIHsKLSAgICBtX3N0YXRlLm1lcmdlQ2hhbmdlcyhz
dGF0ZSwgZmxhZ3MpOwotICAgIGRpZFVwZGF0ZVN0YXRlKHN0YXRlLCBmbGFncyk7CisgICAgbV9z
dGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGxhc3REcmF3aW5nU3RhdGUpOworICAgIGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgZWxsaXBzZUNvbG9yLCBj
b25zdCBDb2xvciYgc2hhZG93Q29sb3IpCkBAIC05Myw4NCArOTgsMTUgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGVsbGkKICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9zdGF0ZS5zdHJva2VD
b2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwotICAg
IG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxv
YXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBTaGFkb3dSYWRpdXNNb2RlIHJhZGl1c01vZGUp
Ci17Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgbV9zdGF0ZS5zaGFk
b3dCbHVyID0gYmx1cjsKLSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9z
dGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0gcmFkaXVzTW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKLXsKLSAgICBtX3N0YXRlLnNoYWRvd09mZnNl
dCA9IEZsb2F0U2l6ZSgpOwotICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7Ci0gICAgbV9zdGF0
ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlID0g
U2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdDsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLX0KLQogYm9vbCBHcmFwaGljc0Nv
bnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBj
b2xvcikgY29uc3QKIHsKLSAgICBvZmZzZXQgPSBtX3N0YXRlLnNoYWRvd09mZnNldDsKLSAgICBi
bHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwotICAgIGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xv
cjsKKyAgICBvZmZzZXQgPSBkcm9wU2hhZG93KCkub2Zmc2V0OworICAgIGJsdXIgPSBkcm9wU2hh
ZG93KCkuYmx1clJhZGl1czsKKyAgICBjb2xvciA9IGRyb3BTaGFkb3coKS5jb2xvcjsKIAogICAg
IHJldHVybiBoYXNTaGFkb3coKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSBjb2xv
cjsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxs
UGF0dGVybiA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0
ZS5zdHJva2VDb2xvciA9IHsgfTsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0
cjsKLSAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQ
YXR0ZXJuPiYmIHBhdHRlcm4pCi17Ci0gICAgbV9zdGF0ZS5maWxsQ29sb3IgPSB7IH07Ci0gICAg
bV9zdGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwotICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4g
PSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkKLXsKLSAgICBtX3N0
YXRlLnN0cm9rZUNvbG9yID0geyB9OwotICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZN
b3ZlKGdyYWRpZW50KTsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0g
PSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVy
biA9IG51bGxwdHI7Ci0gICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pCi17Ci0gICAgbV9zdGF0ZS5maWxs
Q29sb3IgPSB7IH07Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50
KTsKLSAgICBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtID0gZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVu
dENoYW5nZSk7Ci0gICAgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPwotfQotCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkKIHsKICAgICArK21f
dHJhbnNwYXJlbmN5TGF5ZXJDb3VudDsKQEAgLTQ5MSwxMyArNDI3LDYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXQKICAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0gICAgbV9zdGF0ZS5j
b21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBtX3N0YXRlLmJsZW5k
TW9kZSA9IGJsZW5kTW9kZTsKLSAgICBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKLX0KLQogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxv
YXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRoLCBTdHJva2VTdHlsZSBwZW5TdHlsZSkKIHsK
ICAgICAvLyBGb3Igb2RkIHdpZHRocywgd2UgYWRkIGluIDAuNSB0byB0aGUgYXBwcm9wcmlhdGUg
eC95IHNvIHRoYXQgdGhlIGZsb2F0IGFyaXRobWV0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMzlmMzAxZGU2MGZjNTM5
NGMyY2ExNDRlZTc1MTA4YjNmYzZkM2ZlZi4uMTNjYzNiMDM3NzkxMTY2ZjkzYzI2ZWE4MmU4MWQ3
NmU0NjFiNDBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKQEAgLTY0LDkgKzY0LDggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOiAgIAotCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0
OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNQbGF0
Zm9ybUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtODAsODMgKzc5LDkzIEBA
IHB1YmxpYzoKIAogICAgIC8vIENvbnRleHQgU3RhdGUKIAotICAgIHZvaWQgc2V0U3Ryb2tlVGhp
Y2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IHRoaWNr
bmVzczsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSk7IH0KLSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNo
JiBmaWxsQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaDsgfQorICAgIGNv
bnN0IENvbG9yJiBmaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5j
b2xvcigpOyB9CisgICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCk7IH0KKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
QnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgUGF0dGVybiogZmlsbFBhdHRl
cm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5wYXR0ZXJuKCk7IH0KKyAgICB2
b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRG
aWxsQnJ1c2goYnJ1c2gpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgc2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0YXRlLnNldEZpbGxDb2xvcihjb2xv
cik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRGaWxsR3JhZGllbnQo
UmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJh
bnNmb3JtID0geyB9KSB7IG1fc3RhdGUuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQp
LCBzcGFjZVRyYW5zZm9ybSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBz
ZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3RhdGUuc2V0RmlsbFBh
dHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAg
ICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc3Ryb2tl
U3R5bGUgPSBzdHlsZTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVN0eWxlQ2hhbmdlKTsgfQotICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorICAgIFdpbmRSdWxlIGZpbGxS
dWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZTsgfQorICAgIHZvaWQgc2V0Rmls
bFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9zdGF0ZS5zZXRGaWxsUnVsZShmaWxsUnVsZSk7
IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisKKyAgICBjb25zdCBTb3VyY2VCcnVzaCYgc3Ry
b2tlQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoOyB9CisgICAgY29u
c3QgQ29sb3ImIHN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVz
aC5jb2xvcigpOyB9CisgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudCgpOyB9CisgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJu
KiBzdHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVzaC5wYXR0
ZXJuKCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVz
aCkgeyBtX3N0YXRlLnNldFN0cm9rZUJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0
YXRlLnNldFN0cm9rZUNvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAg
ICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldFN0cm9r
ZUdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CisgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYm
IHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
dHJva2VDb2xvcihjb25zdCBDb2xvciYpOwotICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KKyAgICBmbG9hdCBzdHJva2VU
aGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsgfQorICAg
IHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnNldFN0
cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsK
LSAgICBQYXR0ZXJuKiBzdHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuLmdldCgpOyB9CisgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9CisgICAgdm9pZCBzZXRTdHJva2VTdHlsZShT
dHJva2VTdHlsZSBzdHlsZSkgeyBtX3N0YXRlLnNldFN0cm9rZVN0eWxlKHN0eWxlKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tl
R3JhZGllbnQoUmVmPEdyYWRpZW50PiYmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mID0geyB9KTsK
LSAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUdyYWRpZW50LmdldCgpOyB9CisgICAgY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJvcFNoYWRvdzsgfQorICAgIEZsb2F0U2l6ZSBzaGFk
b3dPZmZzZXQoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkub2Zmc2V0OyB9CisgICAgZmxv
YXQgc2hhZG93Qmx1cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5ibHVyUmFkaXVzOyB9
CisgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRv
dygpLmNvbG9yOyB9CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRy
b3BTaGFkb3cpIHsgbV9zdGF0ZS5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQorICAgIHZvaWQgY2xlYXJTaGFkb3coKSB7IHNldERyb3BTaGFkb3co
eyB9KTsgfQogCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0
YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSk7IH0KLSAgICBXaW5kUnVsZSBmaWxsUnVsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7IH0KKyAgICAvLyBGSVhNRTogVXNlIGRy
b3BTaGFkb3coKSBhbmQgc2V0RHJvcFNoYWRvdygpIGluc3RlYWQgb2YgY2FsbGluZyB0aGVzZSBm
dW5jdGlvbnMuCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwg
ZmxvYXQmLCBDb2xvciYpIGNvbnN0OworICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6
ZSYgb2Zmc2V0LCBmbG9hdCBibHVyUmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIFNoYWRvd1Jh
ZGl1c01vZGUgc2hhZG93UmFkaXVzTW9kZSA9IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpIHsg
c2V0RHJvcFNoYWRvdyh7IG9mZnNldCwgYmx1clJhZGl1cywgY29sb3IsIHNoYWRvd1JhZGl1c01v
ZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENv
bG9yJik7Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9CisgICAgYm9vbCBoYXNWaXNpYmxlU2hhZG93KCkgY29uc3QgeyByZXR1
cm4gZHJvcFNoYWRvdygpLmlzVmlzaWJsZSgpOyB9CisgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93
KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1cnJlZCgpOyB9CisgICAgYm9vbCBo
YXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsK
LSAgICBQYXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFBh
dHRlcm4uZ2V0KCk7IH0KKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBjb21wb3NpdGVNb2RlKCkub3BlcmF0
aW9uOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0
ZU1vZGUoKS5ibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRl
TW9kZSBjb21wb3NpdGVNb2RlKSB7IG1fc3RhdGUuc2V0Q29tcG9zaXRlTW9kZShjb21wb3NpdGVN
b2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUg
PSBCbGVuZE1vZGU6Ok5vcm1hbCkgeyBzZXRDb21wb3NpdGVNb2RlKHsgb3BlcmF0aW9uLCBibGVu
ZE1vZGUgfSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJl
ZjxHcmFkaWVudD4mJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiA9IHsgfSk7Ci0gICAgR3JhZGll
bnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50Lmdl
dCgpOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9
CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBtX3N0YXRlLnNldEFscGhhKGFscGhh
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0NoYW5nZSk7IH0KLSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudGV4dERy
YXdpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2RlKHRleHRE
cmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CisgICAgCisgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIHZvaWQgc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZv
aWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IG1fc3RhdGUuc2hv
dWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsgfQogICAgIGJvb2wg
c2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7
IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBt
X3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3Vs
ZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMgPSBzaG91bGRTbW9vdGhG
b250czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFNtb290aEZvbnRzQ2hhbmdlKTsgfQogICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91
bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxk
U21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsg
fQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVj
YXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAg
IC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBhIGhpZ2gt
cXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBtX3N0YXRl
LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
czsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7IH0KICAgICBib29sIHNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRlU3RhdGUo
bV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRl
cnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSA9IHF1YWxpdHk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsgfQotICAgIEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLQotICAgIHZvaWQgc2V0QWxwaGEoZmxv
YXQgYWxwaGEpIHsgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpOyB9Ci0gICAgZmxvYXQgYWxwaGEo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0KLSAgICBC
bGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5ibGVu
ZE1vZGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRl
LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2so
Ym9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gZHJh
d0x1bWluYW5jZU1hc2s7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7IH0KICAgICBib29sIGRyYXdMdW1pbmFuY2VN
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsgfQotCi0gICAg
dm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkgeyBtX3N0
YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpOyB9Ci0gICAgVGV4dERyYXdp
bmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0
RHJhd2luZ01vZGU7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hhZG93KGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgU2hhZG93UmFkaXVzTW9kZSA9
IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBjbGVhclNoYWRvdygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0U2hhZG93KEZs
b2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImKSBjb25zdDsKLQotICAgIGJvb2wgaGFzVmlzaWJsZVNo
YWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWaXNpYmxlKCk7IH0K
LSAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAm
JiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9Ci0gICAgYm9vbCBoYXNCbHVycmVkU2hh
ZG93KCkgY29uc3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUuc2hhZG93
Qmx1cjsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNl
TWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VNYXNrKTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNl
KSB7IG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UgPSB1c2VEYXJrQXBwZWFyYW5jZTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNl
Q2hhbmdlKTsgfQogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5j
ZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVhcmFuY2Uo
dXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGU7IH0KLQotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Cisg
ICAgdm9pZCB1cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlID0gc3RkOjpudWxs
b3B0KTsKIAogICAgIC8vIENhbGxlZCAqYWZ0ZXIqIGFueSBjaGFuZ2UgdG8gR3JhcGhpY3NDb250
ZXh0U3RhdGU7IGdlbmVyYWxseSB1c2VkIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzCiAgICAgLy8gdG8g
dGhlIHBsYXRmb3JtIGNvbnRleHQncyBzdGF0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVTdGF0ZShH
cmFwaGljc0NvbnRleHRTdGF0ZSYpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBzYXZlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcAppbmRleCA1MmNhZGQ2NDkxOTM1NDA4NjY0YzI3NmZjZTNkNTk5ZTYx
NGY5YWYzLi5hNzI1NTNhMmE4MjE0M2I4YjYxODgyNDI2MmE1NTU2Nzg3ZmUwMzEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuY3BwCkBAIC0yNiwzMDEgKzI2LDE4MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFN0YXRlLmgiCiAKLSNpbmNsdWRlICJHcmFkaWVudC5o
IgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2RlZmluZSBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShmbGFnLCBwcm9wZXJ0eSkgXAotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnKSAm
JiAobV9zdGF0ZS5wcm9wZXJ0eSAhPSBzdGF0ZS5wcm9wZXJ0eSkpIFwKLSAgICAgICAgY2hhbmdl
RmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnKTsKLQotR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICA6IHNob3VsZEFudGlhbGlhcyh0cnVl
KQotICAgICwgc2hvdWxkU21vb3RoRm9udHModHJ1ZSkKLSAgICAsIHNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyh0cnVlKQotICAgICwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCi0g
ICAgLCBkcmF3THVtaW5hbmNlTWFzayhmYWxzZSkKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZShjb25zdCBDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCisgICAgOiBj
aGFuZ2VGbGFncyhjaGFuZ2VGbGFncykKIHsKIH0KIAotR3JhcGhpY3NDb250ZXh0U3RhdGU6On5H
cmFwaGljc0NvbnRleHRTdGF0ZSgpID0gZGVmYXVsdDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gZGVmYXVs
dDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0Nv
bnRleHRTdGF0ZSYmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3ND
b250ZXh0U3RhdGU6Om9wZXJhdG9yPShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpID0gZGVm
YXVsdDsKLUdyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3BlcmF0
b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0gZGVmYXVsdDsKLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCitib29sIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29uc3QKIHsK
LSAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29s
b3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKSB7Ci0gICAgICAgIHN0cm9rZUNvbG9yID0gc3RhdGUu
c3Ryb2tlQ29sb3I7Ci0gICAgICAgIHN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGll
bnQ7Ci0gICAgICAgIHN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VQYXR0ZXJuOwotICAgIH0K
LQotICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9y
Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnNBbnkoZmlsbEZsYWdzKSkgewotICAgICAgICBmaWxsQ29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7
Ci0gICAgICAgIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZpbGxHcmFkaWVudDsKLSAgICAgICAgZmls
bFBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVybjsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgc2hh
ZG93T2Zmc2V0ID0gc3RhdGUuc2hhZG93T2Zmc2V0OwotICAgICAgICBzaGFkb3dCbHVyID0gc3Rh
dGUuc2hhZG93Qmx1cjsKLSAgICAgICAgc2hhZG93Q29sb3IgPSBzdGF0ZS5zaGFkb3dDb2xvcjsK
LSAgICAgICAgc2hhZG93UmFkaXVzTW9kZSA9IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7Ci0gICAg
fQotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VU
aGlja25lc3NDaGFuZ2UpKQotICAgICAgICBzdHJva2VUaGlja25lc3MgPSBzdGF0ZS5zdHJva2VU
aGlja25lc3M7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIHRleHREcmF3aW5nTW9kZSA9IHN0YXRl
LnRleHREcmF3aW5nTW9kZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICBzdHJva2VTdHlsZSA9IHN0YXRl
LnN0cm9rZVN0eWxlOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0gICAgICAgIGZpbGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7
Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hh
bmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0ZS5hbHBoYTsKLQotICAgIGlmIChmbGFncy5jb250
YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpIHsKLSAgICAgICAgY29t
cG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgYmxlbmRN
b2RlID0gc3RhdGUuYmxlbmRNb2RlOwotICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgc2hv
dWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFsaWFzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgQ2hhbmdlRmxhZ3MgaW5saW5lQ2hhbmdlRmxhZ3MgeyBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
cywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdlOjpGaWxsQnJ1c2ggfTsKIAotICAgIGlmIChm
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFu
Z2UpKQotICAgICAgICBzaG91bGRTbW9vdGhGb250cyA9IHN0YXRlLnNob3VsZFNtb290aEZvbnRz
OworICAgIGlmIChjaGFuZ2VGbGFncyAhPSAoY2hhbmdlRmxhZ3MgJiBpbmxpbmVDaGFuZ2VGbGFn
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAg
ICAgICAgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OlN0cm9r
ZUJydXNoKSAmJiAhc3Ryb2tlQnJ1c2guaXNJbmxpbmVDb2xvcigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxsQnJ1c2guaXNJbmxpbmVDb2xv
cigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAgZHJh
d0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQotICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eUNoYW5nZSkpCi0gICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBzdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OworICAgIHJldHVybiB0cnVlOworfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERy
YXdpbmdTdGF0ZSkKK3sKKyAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENoYW5nZSBjaGFuZ2Us
IGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAoIXN0
YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnByb3BlcnR5ID09IHN0
YXRlLipwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+KnByb3Bl
cnR5ID0gc3RhdGUuKnByb3BlcnR5OworICAgICAgICBjaGFuZ2VGbGFncy5zZXQoY2hhbmdlLCAh
bGFzdERyYXdpbmdTdGF0ZSB8fCAoKmxhc3REcmF3aW5nU3RhdGUpLipwcm9wZXJ0eSAhPSB0aGlz
LT4qcHJvcGVydHkpOworICAgIH07CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxCcnVz
aCwgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gp
OworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKworICAgIG1lcmdlQ2hhbmdlKENo
YW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnN0cm9rZUJydXNoKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
cywgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3Mp
OworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKworICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cp
OworCisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6VGV4
dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHRE
cmF3aW5nTW9kZSk7CisKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwor
ICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZvbnRzKTsKKyAgICBtZXJnZUNoYW5n
ZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIG1lcmdlQ2hhbmdlKENo
YW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkRy
YXdMdW1pbmFuY2VNYXNrLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3
THVtaW5hbmNlTWFzayk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hh
bmdlKSkKLSAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBzdGF0ZS51c2VEYXJrQXBwZWFyYW5j
ZTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0K
IAotR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlKSBjb25zdAordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkQmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgY2hhbmdlRmxhZ3M7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VH
cmFkaWVudENoYW5nZSwgc3Ryb2tlR3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BS
T1BFUlRZKFN0cm9rZVBhdHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENIRUNLX0ZP
Ul9DSEFOR0VEX1BST1BFUlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRl
cm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSkKLSAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0
YXRlLnNoYWRvd09mZnNldAotICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0
YXRlLnNoYWRvd0JsdXIKLSAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3Rh
dGUuc2hhZG93Q29sb3IpKQotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNoYWRvd0NoYW5nZSk7Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShT
dHJva2VUaGlja25lc3NDaGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoVGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOwot
ICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VD
b2xvcik7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBm
aWxsQ29sb3IpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hh
bmdlLCBzdHJva2VTdHlsZSk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1
bGVDaGFuZ2UsIGZpbGxSdWxlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBo
YUNoYW5nZSwgYWxwaGEpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBv
c2l0ZU9wZXJhdG9yICE9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRN
b2RlICE9IHN0YXRlLmJsZW5kTW9kZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAgICBjaGFu
Z2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7Ci0gICAg
fQotCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdl
LCBzaG91bGRBbnRpYWxpYXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3Vs
ZFNtb290aEZvbnRzQ2hhbmdlLCBzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0g
ICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRy
YXdMdW1pbmFuY2VNYXNrKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLQot
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJP
UEVSVFkoVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKKyNpZiBV
U0UoQ0cpCisgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhl
IENHIGdsb2JhbCBhbHBoYSB0byAxLiBLZWVwIG91ciBhbHBoYSBpbiBzeW5jLgorICAgIGFscGhh
ID0gMTsKICNlbmRpZgotCi0gICAgcmV0dXJuIGNoYW5nZUZsYWdzOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3Mp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRFbmRUcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcmlnaW5hbE9wYWNpdHkpCiB7Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3RhdGUsIGZs
YWdzKTsKLQotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9OwotICAgIGlm
IChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxhZ3Mu
cmVtb3ZlKHN0cm9rZUZsYWdzKTsKLQotICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdy
YWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UgfTsK
LSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VG
bGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKLQotICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0b3JGbGFn
cyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250
YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VGbGFncy5y
ZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7Ci0KLSAgICBtX2NoYW5nZUZsYWdzLmFkZChm
bGFncyk7CisjaWYgVVNFKENHKQorICAgIC8vIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoKSBzZXRzIHRoZSBDRyBnbG9iYWwgYWxwaGEgdG8gMS4gUmVzb3JlIG91ciBhbHBoYSBub3cu
CisgICAgYWxwaGEgPSBvcmlnaW5hbE9wYWNpdHk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShv
cmlnaW5hbE9wYWNpdHkpOworI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3N0YXRpYyBjb25z
dCBjaGFyKiBzdGF0ZUNoYW5nZU5hbWUoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBjaGFu
Z2UpCiB7Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFk
aWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0g
ICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9z
dGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CisgICAgc3dpdGNoIChjaGFuZ2UpIHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaDoKKyAgICAg
ICAgcmV0dXJuICJmaWxsLWJydXNoIjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRl
eHQuc2V0RmlsbFBhdHRlcm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFJ1bGU6CisgICAgICAgIHJldHVybiAiZmlsbC1y
dWxlIjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaDoKKyAg
ICAgICAgcmV0dXJuICJzdHJva2UtYnJ1c2giOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpCi0gICAgICAgIGNvbnRl
eHQuc2V0U2hhZG93KG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0JsdXIsIG1f
c3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9kZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6CisgICAgICAgIHJl
dHVybiAic3Ryb2tlLXRoaWNrbmVzcyI7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MobV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGU6CisgICAgICAg
IHJldHVybiAic3Ryb2tlLXN0eWxlIjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBj
b250ZXh0LnNldFRleHREcmF3aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgorICAgICAg
ICByZXR1cm4gImNvbXBvc2l0ZS1tb2RlIjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IobV9zdGF0ZS5zdHJva2VDb2xvcik7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93OgorICAgICAgICByZXR1cm4gImRy
b3Atc2hhZG93IjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihtX3N0YXRlLmZpbGxDb2xvcik7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpBbHBoYToKKyAgICAgICAgcmV0dXJuICJhbHBoYSI7CiAKLSAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG1fc3RhdGUuc3Ryb2tlU3R5bGUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eToKKyAgICAgICAgcmV0dXJuICJpbWFnZS1pbnRlcnBvbGF0aW9uLXF1YWxpdHkiOwogCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxS
dWxlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsUnVsZShtX3N0YXRlLmZpbGxSdWxl
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9k
ZToKKyAgICAgICAgcmV0dXJuICJ0ZXh0LWRyYXdpbmctbW9kZSI7CiAKLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldEFscGhhKG1fc3RhdGUuYWxwaGEpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzOgorICAgICAgICByZXR1cm4gInNo
b3VsZC1hbnRpYWxpYXMiOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKQotICAgICAgICBjb250ZXh0LnNldENvbXBv
c2l0ZU9wZXJhdGlvbihtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBtX3N0YXRlLmJsZW5kTW9k
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhG
b250czoKKyAgICAgICAgcmV0dXJuICJzaG91bGQtc21vb3RoLWZvbnRzIjsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxp
YXNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhtX3N0YXRlLnNo
b3VsZEFudGlhbGlhcyk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM6CisgICAgICAgIHJldHVybiAic2hvdWxkLXN1YnBp
eGVsLXF1YW50aXplLWZvbnRzIjsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIGNv
bnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNm
b3JtczoKKyAgICAgICAgcmV0dXJuICJzaGFkb3dzLWlnbm9yZS10cmFuc2Zvcm1zIjsKIAotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFu
Y2VNYXNrKG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2spOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHlDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
bV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrOgorICAgICAgICByZXR1cm4gImRy
YXctbHVtaW5hbmNlLW1hc2siOwogCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFy
a0FwcGVhcmFuY2VDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFVzZURhcmtBcHBlYXJhbmNl
KG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2U6CisgICAgICAgIHJldHVybiAidXNlLWRhcmst
YXBwZWFyYW5jZSI7CiAjZW5kaWYKKyAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CitUZXh0U3RyZWFtJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKLSAgICB0cy5kdW1w
UHJvcGVydHkoImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7Ci0KLSAgICBp
ZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3Jh
ZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIs
IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0
ZXJuLmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImZpbGwtZ3JhZGllbnQiLCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7Ci0KLSAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5D
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUu
ZmlsbFBhdHRlcm4uZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzaGFkb3ctYmx1ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7Ci0gICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2hhZG93LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKLSAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0
ZS5zaGFkb3dSYWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7Ci0gICAgfQor
ICAgIGF1dG8gZHVtcCA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjoqcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5n
ZSkpCisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoc3RhdGVDaGFuZ2VOYW1lKGNoYW5nZSks
IHRoaXMtPipwcm9wZXJ0eSk7CisgICAgfTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRlLnN0cm9rZVRoaWNr
bmVzcyk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VGbGFncyk7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRy
YXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRvUmF3KCkpOworICAgIGR1bXAo
Q2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsQnJ1c2gpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CiAKLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ry
b2tlQ29sb3IpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7CisgICAgZHVtcChDaGFuZ2U6
OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0
cm9rZVRoaWNrbmVzcyk7CisgICAgZHVtcChDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFu
Z2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxD
b2xvcik7CisgICAgZHVtcChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOworICAgIGR1bXAoQ2hhbmdlOjpE
cm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9w
U2hhZG93KTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ry
b2tlLXN0eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOwot
Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9z
aXRlLW9wZXJhdG9yIiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdl
KSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1v
ZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hv
dWxkLWFudGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250
c0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIs
IG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXpl
LWZvbnRzIiwgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWln
bm9yZS10cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1
bWluYW5jZU1hc2tDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5h
bmNlLW1hc2siLCBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKKyAgICBkdW1wKENoYW5nZTo6
QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxw
aGEpOworICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1w
KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6dGV4dERyYXdpbmdNb2RlKTsKIAorICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMp
OworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKKyAgICBkdW1wKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUoT1Nf
REFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJ1c2UtZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5j
ZSk7CisgICAgZHVtcChDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlKTsKICNlbmRpZgorICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQorVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZSBjaGFu
Z2UpCiB7Ci0gICAgc3RhdGVDaGFuZ2UuZHVtcCh0cyk7CisgICAgdHMgPDwgc3RhdGVDaGFuZ2VO
YW1lKGNoYW5nZSk7CiAgICAgcmV0dXJuIHRzOwogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgcmV0dXJuIHN0YXRlLmR1bXAodHMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuaAppbmRleCBmMzU1MTE5ZjY2OTk3ZDJjZmMwOWZmMWZkYmYwN2Y4YTU5NTk1OTY3
Li5lODI1MTdlYmVlMjY1NWYxYzNmZWY2ODJkM2FhNDZhMTlkYTdlMjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRl
LmgKQEAgLTI1LDExNiArMjUsMjM4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiU291cmNlQnJ1c2guaCIK
ICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFkaWVu
dDsKLWNsYXNzIFBhdHRlcm47Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB+R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7Ci0KLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYmKTsKLQotICAgIGVudW0gQ2hhbmdlIDogdWludDMyX3QgewotICAgICAgICBTdHJv
a2VHcmFkaWVudENoYW5nZSAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIFN0
cm9rZVBhdHRlcm5DaGFuZ2UgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKLSAgICAgICAg
RmlsbEdyYWRpZW50Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAyLAotICAgICAg
ICBGaWxsUGF0dGVybkNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCi0gICAg
ICAgIFN0cm9rZVRoaWNrbmVzc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKLSAg
ICAgICAgU3Ryb2tlQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAot
ICAgICAgICBTdHJva2VTdHlsZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYs
Ci0gICAgICAgIEZpbGxDb2xvckNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
NywKLSAgICAgICAgRmlsbFJ1bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCA4LAotICAgICAgICBTaGFkb3dDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDksCi0gICAgICAgIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9
IDEgPDwgMTAsCi0gICAgICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMTEsCi0gICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAg
ICAgICA9IDEgPDwgMTIsCi0gICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTMsCi0gICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMTQsCi0gICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMTUsCi0gICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdl
ICAgICAgICAgICAgICAgICA9IDEgPDwgMTYsCi0gICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSAgICAgICA9IDEgPDwgMTcsCi0gICAgICAgIERyYXdMdW1pbmFuY2VNYXNr
Q2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMTgsCi0gICAgICAgIEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UgICAgICAgICA9IDEgPDwgMTksCisgICAgZW51bSBjbGFzcyBDaGFu
Z2UgOiB1aW50MzJfdCB7CisgICAgICAgIEZpbGxCcnVzaCAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMCwKKyAgICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorCisg
ICAgICAgIFN0cm9rZUJydXNoICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgU3Ry
b2tlVGhpY2tuZXNzICAgICAgICAgICAgID0gMSA8PCAzLAorICAgICAgICBTdHJva2VTdHlsZSAg
ICAgICAgICAgICAgICAgPSAxIDw8IDQsCisKKyAgICAgICAgQ29tcG9zaXRlTW9kZSAgICAgICAg
ICAgICAgID0gMSA8PCA1LAorICAgICAgICBEcm9wU2hhZG93ICAgICAgICAgICAgICAgICAgPSAx
IDw8IDYsCisKKyAgICAgICAgQWxwaGEgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA3LAor
ICAgICAgICBUZXh0RHJhd2luZ01vZGUgICAgICAgICAgICAgPSAxIDw8IDgsCisgICAgICAgIElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgICA9IDEgPDwgOSwKKworICAgICAgICBTaG91bGRBbnRp
YWxpYXMgICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgICAgICBTaG91bGRTbW9vdGhGb250cyAg
ICAgICAgICAgPSAxIDw8IDExLAorICAgICAgICBTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMg
PSAxIDw8IDEyLAorICAgICAgICBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAgICAgPSAxIDw8IDEz
LAorICAgICAgICBEcmF3THVtaW5hbmNlTWFzayAgICAgICAgICAgPSAxIDw8IDE0LAogI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgIFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdl
ICAgICAgICAgICAgICAgICA9IDEgPDwgMjAsCisgICAgICAgIFVzZURhcmtBcHBlYXJhbmNlICAg
ICAgICAgICA9IDEgPDwgMTUsCiAjZW5kaWYKICAgICB9OwotICAgIHVzaW5nIFN0YXRlQ2hhbmdl
RmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdlPjsKKyAgICB1c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlv
blNldDxDaGFuZ2U+OworCisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUo
Y29uc3QgQ2hhbmdlRmxhZ3MmID0geyB9KTsKKworICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBj
b25zdCB7IHJldHVybiBjaGFuZ2VGbGFnczsgfQorICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkg
eyBjaGFuZ2VGbGFncyA9IHsgfTsgfQorCisgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291
cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbEJydXNoLCAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbEJydXNoLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCwgeyBjb2xvciB9KTsgfQorICAgIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBmaWxsQnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShn
cmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6RmlsbEJy
dXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikg
eyBmaWxsQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRk
KENoYW5nZTo6RmlsbEJydXNoKTsgfQogCi0gICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyk7CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0
eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxs
UnVsZSk7IH0KIAotICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQ7Ci0gICAgUmVm
UHRyPFBhdHRlcm4+IHN0cm9rZVBhdHRlcm47CisgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25z
dCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VCcnVzaCwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpT
dHJva2VCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCwgeyBjb2xvciB9
KTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IHN0cm9rZUJydXNoLnNl
dEdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdz
LmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihS
ZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IHN0cm9rZUJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShw
YXR0ZXJuKSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorCisgICAg
dm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNldFByb3Bl
cnR5KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9r
ZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNzKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUo
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHls
ZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUpOyB9CisK
KyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
Ojpjb21wb3NpdGVNb2RlLCBjb21wb3NpdGVNb2RlKTsgfQorICAgIHZvaWQgc2V0RHJvcFNoYWRv
dyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJv
cFNoYWRvdywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93LCBkcm9wU2hhZG93KTsg
fQorCisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OkFscGhhLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhLCBhbHBoYSk7IH0KKyAgICB2b2lk
IHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7IH0KKyAgICB2b2lkIHNldFRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERy
YXdpbmdNb2RlLCB0ZXh0RHJhd2luZ01vZGUpOyB9CisKKyAgICB2b2lkIHNldFNob3VsZEFudGlh
bGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFu
dGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNob3VsZEFu
dGlhbGlhcyk7IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21v
b3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9udHMpOyB9
CisgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9CisgICAgdm9pZCBzZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsg
fQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9v
bCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VEYXJrQXBw
ZWFyYW5jZSk7IH0KKyNlbmRpZgogICAgIAotICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRp
ZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKKyAgICBib29sIGNvbnRhaW5z
T25seUlubGluZUNoYW5nZXMoKSBjb25zdDsKKyAgICB2b2lkIG1lcmdlQ2hhbmdlcyhjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0
U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlID0gc3RkOjpudWxsb3B0KTsKIAotICAgIEZsb2F0U2l6
ZSBzaGFkb3dPZmZzZXQ7CisgICAgdm9pZCBkaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgdm9pZCBkaWRFbmRUcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcmlnaW5hbE9wYWNpdHkpOwog
Ci0gICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBDb2xvciBmaWxs
Q29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKKyAgICBXVEY6
OlRleHRTdHJlYW0mIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBkZWNvZGUoRGVj
b2RlciYpOwogCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzIHsgMCB9OwotICAgIGZsb2F0IHNo
YWRvd0JsdXIgeyAwIH07Ci0gICAgZmxvYXQgYWxwaGEgeyAxIH07CisgICAgQ2hhbmdlRmxhZ3Mg
Y2hhbmdlRmxhZ3M7CiAKLSAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tl
IH07CisgICAgU291cmNlQnJ1c2ggZmlsbEJydXNoIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgV2lu
ZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OwotCi0gICAgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07Ci0gICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVPcGVyYXRvcjo6
U291cmNlT3ZlciB9OwotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1vZGU6Ok5vcm1h
bCB9OworICAgIAorICAgIFNvdXJjZUJydXNoIHN0cm9rZUJydXNoIHsgQ29sb3I6OmJsYWNrIH07
CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzIHsgMCB9OworICAgIFN0cm9rZVN0eWxlIHN0cm9r
ZVN0eWxlIHsgU29saWRTdHJva2UgfTsKKyAgICAKKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0
ZU1vZGUgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwg
fTsKKyAgICBEcm9wU2hhZG93IGRyb3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgYWxwaGEgeyAx
IH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7
IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9kZSBz
aGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OworICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9
OwogCi0gICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3Ro
Rm9udHMgOiAxOwotICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAg
ICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFu
Y2VNYXNrIDogMTsKKyAgICBib29sIHNob3VsZEFudGlhbGlhcyB7IHRydWUgfTsKKyAgICBib29s
IHNob3VsZFNtb290aEZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgeyBm
YWxzZSB9OworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9OwogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA6IDE7Cisg
ICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CiAjZW5kaWYKLX07CisgICAgCitw
cml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRQcm9wZXJ0eShD
aGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHksIGNvbnN0IFQm
IHZhbHVlKQorICAgIHsKKyNpZiAhVVNFKENBSVJPKQorICAgICAgICBpZiAodGhpcy0+KnByb3Bl
cnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgICAgIHRoaXMt
Pipwcm9wZXJ0eSA9IHZhbHVlOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKKyAg
ICB9CiAKLXN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSB7Ci0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UoKSA9IGRlZmF1bHQ7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKLSAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQot
ICAgICAgICAsIG1fY2hhbmdlRmxhZ3MoZmxhZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICB2b2lkIHNldFByb3BlcnR5KENoYW5nZSBjaGFuZ2UsIFQgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Oipwcm9wZXJ0eSwgVCYmIHZhbHVlKQogICAgIHsKKyNpZiAhVVNFKENBSVJPKQorICAgICAg
ICBpZiAodGhpcy0+KnByb3BlcnR5ID09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworI2Vu
ZGlmCisgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IFdURk1vdmUodmFsdWUpOworICAgICAgICBj
aGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAgICB9Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgYXV0byBlbmNvZGUgPSBbJl0oQ2hhbmdlIGNoYW5nZSwgYXV0byBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5KSB7CisgICAgICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhjaGFuZ2UpKQorICAgICAgICAgICAgZW5jb2RlciA8PCB0aGlzLT4qcHJvcGVydHk7
CisgICAgfTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBjb25zdDsKKyAgICBl
bmNvZGVyIDw8IGNoYW5nZUZsYWdzOwogCi0gICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
OwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0gICAgCi0gICAgdm9p
ZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworICAgIGVuY29kZShDaGFuZ2U6OkZpbGxC
cnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJy
dXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlIG1fc3RhdGU7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgbV9jaGFuZ2VGbGFnczsKLX07CisgICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7Cisg
ICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpOworICAgIGVuY29kZShDaGFuZ2U6OlN0
cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ry
b2tlU3R5bGUpOworCisgICAgZW5jb2RlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKKyAgICBlbmNv
ZGUoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOworCisgICAgZW5jb2RlKENoYW5nZTo6QWxwaGEsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSk7CisgICAg
ZW5jb2RlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBlbmNvZGUoQ2hh
bmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlh
cyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7CisgICAgZW5jb2RlKENo
YW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIGVuY29kZShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VN
YXNrLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1h
c2spOworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgZW5jb2RlKENoYW5nZTo6
VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1
c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGRlY29kZSA9IFsmXShHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250
ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgeworICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZUZsYWdzLmNv
bnRhaW5zKGNoYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICB1c2lu
ZyBQcm9wZXJ0eVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUo
c3RkOjpkZWNsdmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPigpLipwcm9wZXJ0eSk+Ojp0eXBlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5VHlwZT4gdmFsdWU7CisgICAgICAgIGRlY29k
ZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgc3RhdGUuKnByb3BlcnR5ID0gKnZhbHVlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9OworCisgICAgc3RkOjpvcHRpb25hbDxDaGFuZ2VGbGFncz4gY2hhbmdlRmxh
Z3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFnczsKKyAgICBpZiAoIWNoYW5nZUZsYWdzKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
c3RhdGUoKmNoYW5nZUZsYWdzKTsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZp
bGxCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1
c2gpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpmaWxsUnVsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLVdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSYpOworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZUJy
dXNoLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnN0cm9rZVRoaWNrbmVzcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpE
cm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNo
YWRvdykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6YWxwaGEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpUZXh0RHJh
d2luZ01vZGUsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdN
b2RlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpEcmF3THVt
aW5hbmNlTWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5j
ZU1hc2spKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6VXNlRGFya0FwcGVh
cmFuY2UsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNl
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgorCisgICAgcmV0dXJuIHN0
YXRlOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlKTsKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApAQCAtMTQzLDI4ICsyNjUsMjcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VHcmFkaWVudENoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSwKLSAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEdyYWRpZW50Q2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsUGF0dGVy
bkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTdHJva2VDb2xvckNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGVDaGFuZ2UsCi0gICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxDb2xvckNoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFJ1bGVDaGFuZ2Us
Ci0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd0No
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkJsZW5kTW9kZUNoYW5nZSwK
LSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdp
bmdNb2RlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHNDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlCisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCwKKyAg
ICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFJ1bGUsCisK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1
c2gsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZVRoaWNrbmVzcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U3Ryb2tlU3R5bGUsCisKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdywKKworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LAorCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlh
bGlhcywKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hv
dWxkU21vb3RoRm9udHMsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsCisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyYXdMdW1pbmFuY2VN
YXNrCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICAgICAgLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZQorICAg
ICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlVzZURhcmtBcHBl
YXJhbmNlCiAjZW5kaWYKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXggMTVkZjFkZmRiNmYzYTE2YWQ1ZWFm
NjQ3MjYxZmNmYzRiN2E5M2FiNC4uMjg4YjhhNWYwMDAwNmVjN2IzZTFjMmNhNWFjNjZkYWFhYzFl
MjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKQEAgLTEzNiw2ICsxMzYsNDQgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgQmxlbmRNb2RlIGJsZW5kTW9kZSkKICAgICByZXR1cm4gdHMgPDwgYmxl
bmRNb2RlTmFtZShibGVuZE1vZGUpOwogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpCit7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJjb21wb3NpdGUtb3BlcmF0aW9uIiwgY29tcG9zaXRlTW9kZS5vcGVyYXRpb24pOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGNvbXBvc2l0ZU1vZGUuYmxlbmRNb2Rl
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpCit7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJzaGFkb3ctb2Zmc2V0IiwgZHJvcFNoYWRvdy5vZmZzZXQpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic2hhZG93LWJsdXIiLCBkcm9wU2hhZG93LmJsdXJSYWRpdXMpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2hhZG93LWNvbG9yIiwgZHJvcFNoYWRvdy5jb2xvcik7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgZHJvcFNoYWRvdy5yYWRpdXNNb2Rl
ID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bnRlcnBvbGF0aW9uUXVhbGl0eSkKK3sKKyAgICBzd2l0Y2ggKGludGVycG9sYXRpb25RdWFsaXR5
KSB7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdDoKKyAgICAgICAgdHMg
PDwgImRlZmF1bHQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVycG9sYXRpb25RdWFs
aXR5OjpEb05vdEludGVycG9sYXRlOgorICAgICAgICB0cyA8PCAiZG8tbm90LWludGVycG9sYXRl
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6TG93Ogor
ICAgICAgICB0cyA8PCAibG93IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcnBvbGF0
aW9uUXVhbGl0eTo6TWVkaXVtOgorICAgICAgICB0cyA8PCAibWVkaXVtIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6SGlnaDoKKyAgICAgICAgdHMgPDwg
ImhpZ2giOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBXaW5kUnVsZSBydWxlKQogewogICAg
IHN3aXRjaCAocnVsZSkgewpAQCAtMTgyLDQgKzIyMCw0MiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBMaW5lSm9pbiBqb2luU3R5bGUpCiAgICAgcmV0dXJuIHRzOwog
fQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTdHJva2VTdHlsZSBz
dHJva2VTdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0cm9rZVN0eWxlKSB7CisgICAgY2FzZSBTdHJv
a2VTdHlsZTo6Tm9TdHJva2U6CisgICAgICAgIHRzIDw8ICJuby1zdHJva2UiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpTb2xpZFN0cm9rZToKKyAgICAgICAgdHMgPDwg
InNvbGlkLXN0cm9rZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Ryb2tlU3R5bGU6OkRv
dHRlZFN0cm9rZToKKyAgICAgICAgdHMgPDwgImRvdHRlZC1zdHJva2UiOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN0cm9rZVN0eWxlOjpEYXNoZWRTdHJva2U6CisgICAgICAgIHRzIDw8ICJk
YXNoZWQtc3Ryb2tlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJva2VTdHlsZTo6RG91
YmxlU3Ryb2tlOgorICAgICAgICB0cyA8PCAiZG91YmxlLXN0cm9rZSI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3Ryb2tlU3R5bGU6OldhdnlTdHJva2U6CisgICAgICAgIHRzIDw8ICJ3YXZ5
LXN0cm9rZSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRleHREcmF3aW5nTW9kZSB0ZXh0
RHJhd2luZ01vZGUpCit7CisgICAgc3dpdGNoICh0ZXh0RHJhd2luZ01vZGUpIHsKKyAgICBjYXNl
IFRleHREcmF3aW5nTW9kZTo6RmlsbDoKKyAgICAgICAgdHMgPDwgImZpbGwiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlOgorICAgICAgICB0cyA8PCAi
c3Ryb2tlIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IGRlYzQzNDcwMmNmNzZhODlmYTg2NTMwYzMzNzZkOGJh
YzVkOWNhOWUuLjM3Mjk3ODMxYTJiZjM0NjhjYWVjOGY1MjAwZjA0NzgwNzY2NmNiYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKQEAg
LTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8b3B0
aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KQEAgLTc0LDYgKzc2LDQyIEBAIGVu
dW0gY2xhc3MgQmxlbmRNb2RlIDogdWludDhfdCB7CiAgICAgUGx1c0xpZ2h0ZXIKIH07CiAKK3N0
cnVjdCBDb21wb3NpdGVNb2RlIHsKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb247Cisg
ICAgQmxlbmRNb2RlIGJsZW5kTW9kZTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21w
b3NpdGVNb2RlJiBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBvcGVyYXRpb24gPT0gb3Ro
ZXIub3BlcmF0aW9uICYmIGJsZW5kTW9kZSA9PSBvdGhlci5ibGVuZE1vZGU7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0
ZU1vZGU+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBDb21wb3NpdGVNb2RlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG9wZXJhdGlvbjsKKyAgICBlbmNvZGVyIDw8IGJsZW5kTW9kZTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlTW9kZT4gQ29t
cG9zaXRlTW9kZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25h
bDxDb21wb3NpdGVPcGVyYXRvcj4gb3BlcmF0aW9uOworICAgIGRlY29kZXIgPj4gb3BlcmF0aW9u
OworICAgIGlmICghb3BlcmF0aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKKyAgICBkZWNvZGVyID4+IGJs
ZW5kTW9kZTsKKyAgICBpZiAoIWJsZW5kTW9kZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7IHsgKm9wZXJhdGlvbiwgKmJsZW5kTW9kZSB9IH07Cit9CisKIHN0
cnVjdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CiAgICAgZW51bSBjbGFzcyBNb2RlIDogdWlu
dDhfdCB7CiAgICAgICAgIFRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXMsCkBAIC0xMTEsNiArMTQ5LDY3IEBAIHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGU+IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpkZWNvZGUoRGVjb2RlciYKICAgICByZXR1
cm4geyB7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgfSB9OwogfQogCisvLyBMZWdh
Y3kgc2hhZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94
LXNoYWRvdy4KKy8vIEl0IGhhcyBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIHJhZGlpID4gOHB4Lgor
ZW51bSBjbGFzcyBTaGFkb3dSYWRpdXNNb2RlIDogYm9vbCB7CisgICAgRGVmYXVsdCwKKyAgICBM
ZWdhY3kKK307CisKK3N0cnVjdCBEcm9wU2hhZG93IHsKKyAgICBGbG9hdFNpemUgb2Zmc2V0Owor
ICAgIGZsb2F0IGJsdXJSYWRpdXMgeyAwIH07CisgICAgQ29sb3IgY29sb3I7CisgICAgU2hhZG93
UmFkaXVzTW9kZSByYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OworCisg
ICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBjb2xvci5pc1Zpc2libGUoKTsgfQor
ICAgIGJvb2wgaXNCbHVycmVkKCkgY29uc3QgeyByZXR1cm4gaXNWaXNpYmxlKCkgJiYgYmx1clJh
ZGl1czsgfQorICAgIGJvb2wgaGFzT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGlzQmx1cnJlZCgp
IHx8IChpc1Zpc2libGUoKSAmJiAhb2Zmc2V0LmlzWmVybygpKTsgfQorCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERyb3BTaGFkb3c+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERyb3BTaGFkb3cm
IGEsIGNvbnN0IERyb3BTaGFkb3cmIGIpCit7CisgICAgcmV0dXJuIGEub2Zmc2V0ID09IGIub2Zm
c2V0ICYmIGEuYmx1clJhZGl1cyA9PSBiLmJsdXJSYWRpdXMgJiYgYS5jb2xvciA9PSBiLmNvbG9y
ICYmIGEucmFkaXVzTW9kZSA9PSBiLnJhZGl1c01vZGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIERyb3BTaGFkb3c6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgb2Zmc2V0OworICAgIGVuY29kZXIgPDwgYmx1clJhZGl1czsKKyAg
ICBlbmNvZGVyIDw8IGNvbG9yOworICAgIGVuY29kZXIgPDwgcmFkaXVzTW9kZTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8RHJvcFNoYWRvdz4gRHJvcFNoYWRv
dzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNp
emU+IG9mZnNldDsKKyAgICBkZWNvZGVyID4+IG9mZnNldDsKKyAgICBpZiAoIW9mZnNldCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGJs
dXJSYWRpdXM7CisgICAgZGVjb2RlciA+PiBibHVyUmFkaXVzOworICAgIGlmICghYmx1clJhZGl1
cykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IGNvbG9yOworICAgIGRlY29kZXIgPj4gY29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93UmFkaXVz
TW9kZT4gcmFkaXVzTW9kZTsKKyAgICBkZWNvZGVyID4+IHJhZGl1c01vZGU7CisgICAgaWYgKCFy
YWRpdXNNb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqb2Zmc2V0LCAqYmx1clJhZGl1cywgKmNvbG9yLCAqcmFkaXVzTW9kZSB9IH07Cit9CisKIGVu
dW0gY2xhc3MgR3JhZGllbnRTcHJlYWRNZXRob2QgOiB1aW50OF90IHsKICAgICBQYWQsCiAgICAg
UmVmbGVjdCwKQEAgLTE1OCwxMyArMjU3LDYgQEAgZW51bSBjbGFzcyBUZXh0RHJhd2luZ01vZGUg
OiB1aW50OF90IHsKIH07CiB1c2luZyBUZXh0RHJhd2luZ01vZGVGbGFncyA9IE9wdGlvblNldDxU
ZXh0RHJhd2luZ01vZGU+OwogCi0vLyBMZWdhY3kgc2hhZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQg
Zm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRvdy4KLS8vIEl0IGhhcyBkaWZmZXJlbnQg
dHJlYXRtZW50IG9mIHJhZGlpID4gOHB4LgotZW51bSBjbGFzcyBTaGFkb3dSYWRpdXNNb2RlIDog
Ym9vbCB7Ci0gICAgRGVmYXVsdCwKLSAgICBMZWdhY3kKLX07Ci0KIGVudW0gVGV4dEJhc2VsaW5l
IHsKICAgICBBbHBoYWJldGljVGV4dEJhc2VsaW5lLAogICAgIFRvcFRleHRCYXNlbGluZSwKQEAg
LTE4OSw5ICsyODEsMTQgQEAgYm9vbCBwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3IoY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3ImLAogCiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2ViQ29yZTo6
QmxlbmRNb2RlKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvcik7Ci1XRUJDT1JFX0VY
UE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2luZFJ1
bGUpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIENvbXBvc2l0ZU1vZGUpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IERyb3BTaGFkb3cmKTsKK1dFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGluZUNhcCk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGluZUpvaW4pOworV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IFN0cm9rZVN0eWxlKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0RHJhd2luZ01vZGUpOworV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYjYyMzY3ODgwZTNlNTM1
NGI2MTcxMTM0N2M5YTExYjQyMjQ2ODg1ZS4uNmMzMzMzOTYyNzIxNTI3NzY4NjQ3MGEwMmIxNWY1
NjJlZjFiYTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9uUmVh
c29uczo6SW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlczsgfQogICAgIGJvb2wgZGV0
ZWN0aW5nQ29udGVudGZ1bFBhaW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFs
aWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpEZXRlY3RpbmdDb250
ZW50ZnVsUGFpbnQ7IH0KIAotICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmlu
YWwgeyB9CisgICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGZp
bmFsIHsgfQogCiAjaWYgVVNFKENHKQogICAgIHZvaWQgc2V0SXNBY2NlbGVyYXRlZENvbnRleHQo
Ym9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCmluZGV4IGJiMTM4YjUyOTdhNTIxZmJmN2Q2OTNjZDExNDEwNDQwMGZjYWJj
NGUuLjkwMjRmNWQxYWJmY2UzODA4MTgzYTNiMjMxZmJjZTBmZmIyZmY0MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0xOTEsMTcg
KzE5MSwxNyBAQCBTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQwogICAgIHVwZGF0ZVNoYWRvd0JsdXJW
YWx1ZXMoKTsKIH0KIAotU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBtX2NvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQotICAgICwg
bV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0JsdXIsIHN0YXRlLnNoYWRvd0JsdXIpCi0gICAgLCBt
X29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCi0gICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQorU2hhZG93Qmx1cjo6U2hhZG93Qmx1
cihjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93LCBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKQorICAgIDogbV9jb2xvcihkcm9wU2hhZG93LmNvbG9yKQorICAgICwgbV9ibHVyUmFkaXVz
KGRyb3BTaGFkb3cuYmx1clJhZGl1cywgZHJvcFNoYWRvdy5ibHVyUmFkaXVzKQorICAgICwgbV9v
ZmZzZXQoZHJvcFNoYWRvdy5vZmZzZXQpCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewogI2lmIFVTRShDRykKICAgICAvLyBDb3JlIEdy
YXBoaWNzIGluY29ycmVjdGx5IHJlbmRlcnMgc2hhZG93cyB3aXRoIHJhZGl1cyA+IDhweCAoPHJk
YXI6Ly9wcm9ibGVtLzgxMDM0NDI+KSwKICAgICAvLyBidXQgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0
aGlzIGJ1Z2d5IGJlaGF2aW9yIGZvciBjYW52YXMgYW5kIC13ZWJraXQtYm94LXNoYWRvdy4KLSAg
ICBpZiAoc3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kp
IHsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IHJhZGl1c1RvTGVnYWN5UmFkaXVzKHN0YXRl
LnNoYWRvd0JsdXIpOworICAgIGlmIChkcm9wU2hhZG93LnJhZGl1c01vZGUgPT0gU2hhZG93UmFk
aXVzTW9kZTo6TGVnYWN5KSB7CisgICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSByYWRpdXNUb0xl
Z2FjeVJhZGl1cyhkcm9wU2hhZG93LmJsdXJSYWRpdXMpOwogICAgICAgICBtX2JsdXJSYWRpdXMg
PSBGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1cik7CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggMTRmZDgz
ZWRlMWExYmFjZjE3N2YzMzFlY2FkMWE0MzAyOTNmNjAzYS4uOGVmZDYzNzdhYWViZTk4M2VlM2Fm
NTg2MTMwOTEwYmU2NjE3NzEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLXN0cnVjdCBH
cmFwaGljc0NvbnRleHRTdGF0ZTsKK3N0cnVjdCBEcm9wU2hhZG93OwogY2xhc3MgSW1hZ2VCdWZm
ZXI7CiAKIGNsYXNzIFNoYWRvd0JsdXIgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBTaGFkb3dCbHVyKCk7CiAgICAgU2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywg
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgYm9vbCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcyA9IGZhbHNlKTsKLSAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CisgICAgU2hhZG93Qmx1cihjb25zdCBEcm9wU2hhZG93JiwgYm9vbCBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIGJvb2wgaWdu
b3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnJ1c2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnJ1c2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZWY5NDI0MGQ2YWI5NWRmM2U1
MDM3ZGFkY2Y2YTRlMDczNTI0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCcnVzaC5jcHAKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU291cmNlQnJ1c2guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
b3VyY2VCcnVzaDo6U291cmNlQnJ1c2goY29uc3QgQ29sb3ImIGNvbG9yLCBzdGQ6Om9wdGlvbmFs
PEJydXNoPiYmIGJydXNoKQorICAgIDogbV9jb2xvcihjb2xvcikKKyAgICAsIG1fYnJ1c2goV1RG
TW92ZShicnVzaCkpCit7Cit9CisKK2NvbnN0IEFmZmluZVRyYW5zZm9ybSYgU291cmNlQnJ1c2g6
OmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBZmZpbmVUcmFuc2Zvcm0+IGlkZW50aXR5OworICAgIGlmICghbV9icnVzaCkKKyAgICAg
ICAgcmV0dXJuIGlkZW50aXR5LmdldCgpOworCisgICAgaWYgKGF1dG8qIGdyYWRpZW50ID0gc3Rk
OjpnZXRfaWY8QnJ1c2g6OkxvZ2ljYWxHcmFkaWVudD4oJm1fYnJ1c2gtPmJydXNoKSkKKyAgICAg
ICAgcmV0dXJuIGdyYWRpZW50LT5zcGFjZVRyYW5zZm9ybTsKKworICAgIHJldHVybiBpZGVudGl0
eS5nZXQoKTsKK30KKworR3JhZGllbnQqIFNvdXJjZUJydXNoOjpncmFkaWVudCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0
byogZ3JhZGllbnQgPSBzdGQ6OmdldF9pZjxCcnVzaDo6TG9naWNhbEdyYWRpZW50PigmbV9icnVz
aC0+YnJ1c2gpKQorICAgICAgICByZXR1cm4gZ3JhZGllbnQtPmdyYWRpZW50LnB0cigpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitQYXR0ZXJuKiBTb3VyY2VCcnVzaDo6cGF0dGVybigpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2JydXNoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAoYXV0byogcGF0dGVybiA9IHN0ZDo6Z2V0X2lmPFJlZjxQYXR0ZXJuPj4oJm1fYnJ1c2gtPmJy
dXNoKSkKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4tPnB0cigpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit2b2lkIFNvdXJjZUJydXNoOjpzZXRHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3Jh
ZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pCit7CisgICAgbV9i
cnVzaCA9IHsgQnJ1c2g6OkxvZ2ljYWxHcmFkaWVudCB7IFdURk1vdmUoZ3JhZGllbnQpLCBzcGFj
ZVRyYW5zZm9ybSB9IH07Cit9CisKK3ZvaWQgU291cmNlQnJ1c2g6OnNldFBhdHRlcm4oUmVmPFBh
dHRlcm4+JiYgcGF0dGVybikKK3sKKyAgICBtX2JydXNoID0geyBXVEZNb3ZlKHBhdHRlcm4pIH07
Cit9CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U291cmNlQnJ1c2gmIGJydXNoKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBicnVz
aC5jb2xvcigpKTsKKworICAgIGlmIChhdXRvIGdyYWRpZW50ID0gYnJ1c2guZ3JhZGllbnQoKSkK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJncmFkaWVudCIsIGdyYWRpZW50KTsKKworICAgIGlm
IChhdXRvIHBhdHRlcm4gPSBicnVzaC5wYXR0ZXJuKCkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgicGF0dGVybiIsIHBhdHRlcm4pOworCisgICAgcmV0dXJuIHRzOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCcnVzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnJ1c2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YmQ4YTNiNTA5MWQxMjhmNGMyM2I5M2JkM2VhMWM2ZjIzODFj
ZDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U291cmNlQnJ1c2guaApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU291cmNlQnJ1c2ggeworcHVibGljOgorICAgIHN0cnVjdCBC
cnVzaCB7CisgICAgICAgIHN0cnVjdCBMb2dpY2FsR3JhZGllbnQgeworICAgICAgICAgICAgUmVm
PEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBzcGFjZVRy
YW5zZm9ybTsKKworICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TG9naWNhbEdyYWRpZW50PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgICAgICB9OworCisgICAgICAgIHN0ZDo6dmFyaWFudDxMb2dpY2FsR3JhZGllbnQs
IFJlZjxQYXR0ZXJuPj4gYnJ1c2g7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxCcnVzaD4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB9OworCisgICAgU291cmNlQnJ1c2goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgU291cmNlQnJ1c2goY29uc3QgQ29sb3ImLCBzdGQ6Om9wdGlvbmFsPEJydXNoPiYmID0gc3Rk
OjpudWxsb3B0KTsKKworICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29sb3I7IH0KKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yIGNvbG9yKSB7IG1fY29sb3Ig
PSBjb2xvcjsgfQorCisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxCcnVzaD4mIGJydXNoKCkgY29u
c3QgeyByZXR1cm4gbV9icnVzaDsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgR3JhZGllbnQqIGdy
YWRpZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGF0dGVybiogcGF0dGVybigpIGNv
bnN0OworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
IGNvbnN0OworCisgICAgdm9pZCBzZXRHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pOworICAgIHZvaWQgc2V0UGF0dGVy
bihSZWY8UGF0dGVybj4mJik7CisKKyAgICBib29sIGlzSW5saW5lQ29sb3IoKSBjb25zdCB7IHJl
dHVybiAhbV9icnVzaCAmJiBtX2NvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpOyB9CisgICAgYm9v
bCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2JydXNoIHx8IG1fY29sb3IuaXNWaXNpYmxl
KCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTb3VyY2VCcnVzaD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBDb2xvciBt
X2NvbG9yIHsgQ29sb3I6OmJsYWNrIH07CisgICAgc3RkOjpvcHRpb25hbDxCcnVzaD4gbV9icnVz
aDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQnJ1c2g6OkJydXNo
OjpMb2dpY2FsR3JhZGllbnQmIGEsIGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdy
YWRpZW50JiBiKQoreworICAgIHJldHVybiBhLmdyYWRpZW50LnB0cigpID09IGIuZ3JhZGllbnQu
cHRyKCkgJiYgYS5zcGFjZVRyYW5zZm9ybSA9PSBiLnNwYWNlVHJhbnNmb3JtOworfQorCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUJydXNoOjpCcnVzaCYgYSwgY29uc3QgU291
cmNlQnJ1c2g6OkJydXNoJiBiKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGEuYnJ1c2gs
CisgICAgICAgIFsmXSAoY29uc3QgU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQm
IGFHcmFkaWVudCkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGJHcmFkaWVudCA9IHN0ZDo6Z2V0
X2lmPFNvdXJjZUJydXNoOjpCcnVzaDo6TG9naWNhbEdyYWRpZW50PigmYi5icnVzaCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGFHcmFkaWVudCA9PSAqYkdyYWRpZW50OworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxQYXR0ZXJu
PiYgYVBhdHRlcm4pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiUGF0dGVybiA9IHN0ZDo6Z2V0
X2lmPFJlZjxQYXR0ZXJuPj4oJmIuYnJ1c2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBhUGF0
dGVybi5wdHIoKSA9PSBiUGF0dGVybi0+cHRyKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICApOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNv
dXJjZUJydXNoJiBhLCBjb25zdCBTb3VyY2VCcnVzaCYgYikKK3sKKyAgICByZXR1cm4gYS5jb2xv
cigpID09IGIuY29sb3IoKSAmJiBhLmJydXNoKCkgPT0gYi5icnVzaCgpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6QnJ1c2g6OkxvZ2ljYWxHcmFk
aWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBn
cmFkaWVudC5nZXQoKTsKKyAgICBlbmNvZGVyIDw8IHNwYWNlVHJhbnNmb3JtOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VCcnVzaDo6QnJ1c2g6
OkxvZ2ljYWxHcmFkaWVudD4gU291cmNlQnJ1c2g6OkJydXNoOjpMb2dpY2FsR3JhZGllbnQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6
ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghZ3JhZGllbnQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHNwYWNl
VHJhbnNmb3JtOworICAgIGRlY29kZXIgPj4gc3BhY2VUcmFuc2Zvcm07CisgICAgaWYgKCFzcGFj
ZVRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7
IHsgV1RGTW92ZSgqZ3JhZGllbnQpLCAqc3BhY2VUcmFuc2Zvcm0gfSB9OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBTb3VyY2VCcnVzaDo6QnJ1c2g6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdURjo6c3dpdGNoT24oYnJ1c2gsCisgICAgICAg
IFsmXSAoY29uc3QgTG9naWNhbEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAgZW5j
b2RlciA8PCB0cnVlIDw8IGdyYWRpZW50OworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0
IFJlZjxQYXR0ZXJuPiYgcGF0dGVybikgeworICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZSA8
PCBwYXR0ZXJuLmdldCgpOworICAgICAgICB9CisgICAgKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlQnJ1c2g6OkJydXNoPiBTb3VyY2VCcnVz
aDo6QnJ1c2g6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaGFzR3JhZGllbnQ7CisgICAgZGVjb2RlciA+PiBoYXNHcmFkaWVudDsKKyAgICBpZiAo
IWhhc0dyYWRpZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCpo
YXNHcmFkaWVudCkgeworICAgICAgICBhdXRvIGdyYWRpZW50ID0gTG9naWNhbEdyYWRpZW50Ojpk
ZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIGlmICghZ3JhZGllbnQpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKmdyYWRpZW50KSB9
IH07CisgICAgfQorCisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIp
OworICAgIGlmICghcGF0dGVybikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKnBhdHRlcm4pIH0gfTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgU291cmNlQnJ1c2g6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9jb2xvcjsKKyAgICBlbmNvZGVyIDw8IG1fYnJ1c2g7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNvdXJjZUJydXNoPiBTb3Vy
Y2VCcnVzaDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxD
b2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlv
bmFsPEJydXNoPj4gYnJ1c2g7CisgICAgZGVjb2RlciA+PiBicnVzaDsKKyAgICBpZiAoIWJydXNo
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNvdXJjZUJydXNo
KCpjb2xvciwgV1RGTW92ZSgqYnJ1c2gpKTsKK30KKworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNvdXJjZUJydXNoJik7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDE1NTIzNTZhMjNhNWZkZmIxMGFm
ZWNhMmNjOTJhNzI3OTQ1ODEwMmUuLjJkYTQ5MWZkODdmNmNmYmIzM2U0N2Q5ODEyMzM3YmYyMTU4
ZjZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTU5LDQyICs1NTksNDIgQEAgRmlsbFNv
dXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAg
OiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKICAgICAsIGZpbGxSdWxlKHN0YXRlLmZpbGxSdWxl
KQogewotICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikgewotICAgICAgICBwYXR0ZXJuLm9iamVj
dCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oQWZm
aW5lVHJhbnNmb3JtKCkpKTsKKyAgICBpZiAoYXV0byBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxC
cnVzaC5wYXR0ZXJuKCkpIHsKKyAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihmaWxs
UGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKLSAg
ICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgp
OworICAgICAgICBhdXRvJiBwYXR0ZXJuSW1hZ2UgPSBmaWxsUGF0dGVybi0+dGlsZUltYWdlKCk7
CiAgICAgICAgIHBhdHRlcm4uc2l6ZSA9IHBhdHRlcm5JbWFnZS5zaXplKCk7Ci0gICAgICAgIHBh
dHRlcm4udHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRlcm4tPnBhdHRlcm5TcGFjZVRyYW5zZm9y
bSgpOwotICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0
WCgpOwotICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0
WSgpOwotICAgIH0gZWxzZSBpZiAoc3RhdGUuZmlsbEdyYWRpZW50KSB7Ci0gICAgICAgIGdyYWRp
ZW50LmJhc2UgPSBzdGF0ZS5maWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmls
bEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IGZp
bGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICAgICAgcGF0dGVybi5yZXBl
YXRYID0gZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKKyAgICAgICAgcGF0dGVybi5yZXBlYXRZID0g
ZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdyYWRpZW50
ID0gc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9
IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpKTsKICAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAg
ICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gc3RhdGUuZmlsbEdyYWRpZW50LT5jcmVhdGVQ
YXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Cisg
ICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQ
YXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7CisgICAg
ICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7CiB9CiAKIFN0cm9rZVNvdXJjZTo6
U3Ryb2tlU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICA6IGds
b2JhbEFscGhhKHN0YXRlLmFscGhhKQogewotICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQot
ICAgICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7Ci0gICAgZWxzZSBpZiAoc3RhdGUuc3Ry
b2tlR3JhZGllbnQpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0YXRlLnN0cm9rZUdyYWRp
ZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0p
OworICAgIGlmIChhdXRvIHN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VCcnVzaC5wYXR0ZXJu
KCkpCisgICAgICAgIHBhdHRlcm4gPSBhZG9wdFJlZihzdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBlbHNlIGlmIChhdXRvIHN0cm9r
ZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKSkgeworICAgICAgICBncmFk
aWVudC5iYXNlID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuc3Ryb2tl
QnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICAgICAgaWYgKHN0YXRlLmFscGhh
ICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gc3RhdGUuc3Ryb2tl
R3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLnN0cm9rZUdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0
cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VCcnVz
aC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIH0gZWxzZQotICAgICAgICBjb2xvciA9
IHN0YXRlLnN0cm9rZUNvbG9yOworICAgICAgICBjb2xvciA9IHN0YXRlLnN0cm9rZUJydXNoLmNv
bG9yKCk7CiB9CiAKIFNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBvZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0KQotICAgICwg
Ymx1cihzdGF0ZS5zaGFkb3dCbHVyKQotICAgICwgY29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCisg
ICAgOiBvZmZzZXQoc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQpCisgICAgLCBibHVyKHN0YXRlLmRy
b3BTaGFkb3cuYmx1clJhZGl1cykKKyAgICAsIGNvbG9yKHN0YXRlLmRyb3BTaGFkb3cuY29sb3Ip
CiAgICAgLCBpZ25vcmVUcmFuc2Zvcm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQog
ICAgICwgZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCi0gICAgLCBnbG9iYWxDb21wb3NpdGVPcGVy
YXRvcihzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcikKKyAgICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJh
dG9yKHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBh
N2FmMGNlYjUyNDkwNDA0MWVlMTJkNTFmODljNmRmMTZjYjM2MDM3Li5mZTczOGJkZjc3ZThjZTc2
MmFjYzlhMGYwZjg0ZGQ4MzYxYzY5YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsK
ICAgICBDYWlybzo6ZHJhd0dseXBocygqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ2Fpcm86
OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0Jv
bGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2lu
Z01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5z
aGFkb3dDb2xvciwKKyAgICAgICAgc3RhdGUudGV4dERyYXdpbmdNb2RlLCBzdGF0ZS5zdHJva2VU
aGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9y
LAogICAgICAgICBmb250U21vb3RoaW5nTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKaW5kZXgg
OTAwOTZhYzY0NTIyNGRiZmRjNjBiZmE2Y2FjYWQwMzA3NmNiMjk3ZC4uODU3Y2VkMWEyNzAzNzYx
YjFkMzc4M2JkZWUzMDgzNzQ4NzM2MWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKQEAgLTI0Nyw3ICsy
NDcsNyBAQCBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBHcmFkaWVudDo6Y3JlYXRlUGF0dGVybihm
bG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgQWZmaW5lVAogCiB2b2lkIEdyYWRpZW50OjpmaWxsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGF1
dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4wLCBjb250ZXh0LnN0YXRlKCkuZmlsbEdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0pOworICAgIGF1dG8gcGF0dGVybiA9IGNyZWF0ZVBhdHRlcm4oMS4w
LCBjb250ZXh0LmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGlmICghcGF0dGVy
bikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
YzMyMzA0NDUzNTFiMDNmMmFhODczNmFlZTJiY2U3OGJjNDM2MWY0OS4uYzliZGRjODBjNDBiODUy
YjExMDI2NTNkZmZjMzAwY2IyOTc5NzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtMTM4LDggKzEzOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJlc3RvcmUo
KQogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7CiAgICAgQVNTRVJUKCFyZWN0LmlzRW1wdHko
KSk7Ci0gICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3UmVj
dCgqdGhpcywgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0
cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CisgICAgQ2Fpcm86OmRyYXdSZWN0KCp0aGlz
LCByZWN0LCBib3JkZXJUaGlja25lc3MsIGZpbGxDb2xvcigpLCBzdHJva2VTdHlsZSgpLCBzdHJv
a2VDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE1NCwxNSArMTUzLDEzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3Qg
RmxvYXRQb2ludCYKICAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpk
cmF3TGluZSgqdGhpcywgcG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMp
OworICAgIENhaXJvOjpkcmF3TGluZSgqdGhpcywgcG9pbnQxLCBwb2ludDIsIHN0cm9rZVN0eWxl
KCksIHN0cm9rZUNvbG9yKCksIHN0cm9rZVRoaWNrbmVzcygpLCBzaG91bGRBbnRpYWxpYXMoKSk7
CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgdXNlZCB0byBkcmF3IHRoZSBsaXR0bGUgY2ly
Y2xlcyB1c2VkIGluIGxpc3RzLgogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0VsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3Rh
dGUoKTsKLSAgICBDYWlybzo6ZHJhd0VsbGlwc2UoKnRoaXMsIHJlY3QsIHN0YXRlLmZpbGxDb2xv
ciwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yLCBzdGF0ZS5zdHJva2VUaGlj
a25lc3MpOworICAgIENhaXJvOjpkcmF3RWxsaXBzZSgqdGhpcywgcmVjdCwgZmlsbENvbG9yKCks
IHN0cm9rZVN0eWxlKCksIHN0cm9rZUNvbG9yKCksIHN0cm9rZVRoaWNrbmVzcygpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAg
LTE5Niw4ICsxOTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRDYWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3Jh
ZGllbnQpCiB7Ci0gICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGF1dG8gcGF0
dGVybiA9IGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsR3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSk7CisgICAgYXV0byBwYXR0ZXJuID0gZ3JhZGllbnQuY3JlYXRlUGF0dGVybigx
LjAsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGlmICghcGF0dGVybikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yMDksNyArMjA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRD
YWlybzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0
ZSgpOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBzdGF0ZS5jb21w
b3NpdGVPcGVyYXRvcjsKKyAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0g
Y29tcG9zaXRlT3BlcmF0aW9uKCk7CiAKICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9w
ZXJhdGlvbigqdGhpcywgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CiAgICAgQ2Fpcm86
OmZpbGxSZWN0KCp0aGlzLCByZWN0LCBjb2xvciwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7
CkBAIC0yNjUsNyArMjYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0xpbmVz
Rm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpY2sKIHsKICAgICBpZiAo
d2lkdGhzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIENhaXJvOjpkcmF3TGluZXNG
b3JUZXh0KCp0aGlzLCBwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVV
bmRlcmxpbmVzLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBDYWlybzo6ZHJhd0xpbmVzRm9y
VGV4dCgqdGhpcywgcG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5k
ZXJsaW5lcywgc3Ryb2tlQ29sb3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKQEAgLTI4NCwyOCArMjgwLDMxIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIENhaXJvOjp0
cmFuc2xhdGUoKnRoaXMsIHgsIHkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpk
aWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogewot
ICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFu
Z2UpCisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0
cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKIAotICAgIGlmIChm
bGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkKKyAgICBpZiAo
c3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0
cm9rZVN0eWxlKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VTdHlsZSgqdGhpcywg
c3RhdGUuc3Ryb2tlU3R5bGUpOwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSkgeworICAgIC8vIEZJWE1FOiBtX3N0YXRlIHNob3VsZCBub3QgYmUg
Y2hhbmdlZCB0byBmbGlwIHRoZSBzaGFkb3cgb2Zmc2V0LiBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0
aGUgc2hhZG93IGlzIGFwcGxpZWQgdG8gdGhlIHBsYXRmb3JtIGNvbnRleHQuCisgICAgaWYgKHN0
YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9w
U2hhZG93KSkgewogICAgICAgICBpZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsK
ICAgICAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMgYXNz
b2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAgICAgLy8gV2Ug
ZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZ
IGF4aXMKLSAgICAgICAgICAgIGF1dG8mIHNoYWRvd09mZnNldCA9IHN0YXRlLnNoYWRvd09mZnNl
dDsKLSAgICAgICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lk
dGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93
T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQ7CisgICAgICAgICAgICBtX3N0YXRlLmRy
b3BTaGFkb3cub2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5o
ZWlnaHQoKSB9OwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkKLSAgICAgICAgQ2Fpcm86OlN0
YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9y
LCBzdGF0ZS5ibGVuZE1vZGUpOworICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpCisgICAgICAgIENhaXJv
OjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2Rl
Lm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOwogCi0gICAgaWYgKGZs
YWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkKKyAgICBp
ZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlNob3VsZEFudGlhbGlhcykpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFs
aWFzKCp0aGlzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworCisgICAgc3RhdGUuZGlkQXBwbHlD
aGFuZ2VzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKQEAgLTQzNCw3ICs0MzMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENh
aXJvOjpkcmF3R2x5cGhzKCp0aGlzLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpT
dHJva2VTb3VyY2Uoc3RhdGUpLAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBw
b2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZz
ZXQsCi0gICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
LCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLAorICAgICAgICBzdGF0ZS50
ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5v
ZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsCiAgICAgICAgIGZvbnRTbW9vdGhpbmcpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAppbmRleCA1NjQ2MWMxNTlhNTgzYzg5YzYxZThm
MDJlNGUwYmVlN2IwNTkzMmVmLi43MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFk
NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9p
ZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdy
YXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmlu
YWw7CiAgICAgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggMzI0NWM2MDA0MzE1NTJkNTEzYjc0ZWViYzA5ZjMxOGVl
YzNkZDcyYS4uYmRhZWQ5ZjE3ZTQwYTMyMWYyZDA0YWY3MTAyODBjYzliYzA3OTcyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcApAQCAtMTg1LDEzICsxODUsMTQgQEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVu
ZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJl
ZiBjZ0NvbnRleHQpCisgICAgOiBHcmFwaGljc0NvbnRleHQoeyBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MgfSkK
IHsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRhID0g
bmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShjZ0NvbnRleHQpOwogICAgIC8vIE1h
a2Ugc3VyZSB0aGUgY29udGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KLSAgICBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlLCB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JD
aGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSB9KTsKKyAgICBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsKICAgICBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb3Jl
SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dDb250ZXh0R2V0SW50ZXJwb2xhdGlvblF1YWxpdHkocGxh
dGZvcm1Db250ZXh0KCkpKTsKIH0KIApAQCAtMzM4LDcgKzMzOSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q0c6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0
IEZsb2F0U2l6CiAjZW5kaWYKIAogICAgIGF1dG8gb2xkQ29tcG9zaXRlT3BlcmF0b3IgPSBjb21w
b3NpdGVPcGVyYXRpb24oKTsKLSAgICBhdXRvIG9sZEJsZW5kTW9kZSA9IGJsZW5kTW9kZU9wZXJh
dGlvbigpOworICAgIGF1dG8gb2xkQmxlbmRNb2RlID0gYmxlbmRNb2RlKCk7CiAgICAgc2V0Q0dC
bGVuZE1vZGUoY29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJs
ZW5kTW9kZSgpKTsKIAogICAgIC8vIE1ha2UgdGhlIG9yaWdpbiBiZSBhdCBhZGp1c3RlZERlc3RS
ZWN0LmxvY2F0aW9uKCkKQEAgLTU1NSwxMyArNTU2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRDRzo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIHsKLSAgICBpZiAoIW1fc3RhdGUuc3Ryb2tl
UGF0dGVybikKKyAgICBpZiAoIXN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIEFmZmlu
ZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0gQWZmaW5lVHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VD
VE0oY2dDb250ZXh0KSk7CiAKLSAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuc3Ry
b2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pOworICAgIGF1
dG8gcGxhdGZvcm1QYXR0ZXJuID0gc3Ryb2tlUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRl
cm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNTc0LDEzICs1NzUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBw
bHlTdHJva2VQYXR0ZXJuKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6YXBwbHlGaWxsUGF0
dGVybigpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmICghZmlsbFBh
dHRlcm4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9
IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNID0g
QWZmaW5lVHJhbnNmb3JtKGdldFVzZXJUb0Jhc2VDVE0oY2dDb250ZXh0KSk7CiAKLSAgICBhdXRv
IHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0
dGVybih1c2VyVG9CYXNlQ1RNKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IGZpbGxQYXR0
ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBs
YXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTEsMTEgKzU5MiwxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dENHOjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRT
ZXRGaWxsUGF0dGVybihjZ0NvbnRleHQsIHBsYXRmb3JtUGF0dGVybi5nZXQoKSwgJnBhdHRlcm5B
bHBoYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVEcmF3aW5nTW9kZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENHUGF0aERyYXdpbmdNb2RlJiBtb2RlKQor
c3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgQ0dQYXRoRHJhd2luZ01vZGUmIG1vZGUpCiB7Ci0gICAgYm9vbCBzaG91
bGRGaWxsID0gc3RhdGUuZmlsbFBhdHRlcm4gfHwgc3RhdGUuZmlsbENvbG9yLmlzVmlzaWJsZSgp
OwotICAgIGJvb2wgc2hvdWxkU3Ryb2tlID0gc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCAoc3RhdGUu
c3Ryb2tlU3R5bGUgIT0gTm9TdHJva2UgJiYgc3RhdGUuc3Ryb2tlQ29sb3IuaXNWaXNpYmxlKCkp
OwotICAgIGJvb2wgdXNlRU9GaWxsID0gc3RhdGUuZmlsbFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5P
ZGQ7CisgICAgYm9vbCBzaG91bGRGaWxsID0gY29udGV4dC5maWxsQnJ1c2goKS5pc1Zpc2libGUo
KTsKKyAgICBib29sIHNob3VsZFN0cm9rZSA9IGNvbnRleHQuc3Ryb2tlQnJ1c2goKS5pc1Zpc2li
bGUoKSB8fCBjb250ZXh0LnN0cm9rZVN0eWxlKCk7CisgICAgYm9vbCB1c2VFT0ZpbGwgPSBjb250
ZXh0LmZpbGxSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQ7CiAKICAgICBpZiAoc2hvdWxkRmls
bCkgewogICAgICAgICBpZiAoc2hvdWxkU3Ryb2tlKSB7CkBAIC02MjQsOSArNjI1LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
LSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCi0gICAg
aWYgKHN0YXRlLmZpbGxHcmFkaWVudCB8fCBzdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlm
IChmaWxsR3JhZGllbnQoKSB8fCBzdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIC8vIFdlIGRv
bid0IGhhdmUgYW55IG9wdGltaXplZCB3YXkgdG8gZmlsbCAmIHN0cm9rZSBhIHBhdGggdXNpbmcg
Z3JhZGllbnRzCiAgICAgICAgIC8vIEZJWE1FOiBCZSBzbWFydGVyIGFib3V0IHRoaXMuCiAgICAg
ICAgIGZpbGxQYXRoKHBhdGgpOwpAQCAtNjM0LDEzICs2MzQsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRDRzo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikKKyAgICBpZiAoZmlsbFBhdHRlcm4oKSkK
ICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOwotICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJu
KQorICAgIGlmIChzdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigp
OwogCiAgICAgQ0dQYXRoRHJhd2luZ01vZGUgZHJhd2luZ01vZGU7Ci0gICAgaWYgKGNhbGN1bGF0
ZURyYXdpbmdNb2RlKHN0YXRlLCBkcmF3aW5nTW9kZSkpIHsKKyAgICBpZiAoY2FsY3VsYXRlRHJh
d2luZ01vZGUoKnRoaXMsIGRyYXdpbmdNb2RlKSkgewogI2lmIEhBVkUoQ0dfQ09OVEVYVF9EUkFX
X1BBVEhfRElSRUNUKQogICAgICAgICBDR0NvbnRleHREcmF3UGF0aERpcmVjdChjb250ZXh0LCBk
cmF3aW5nTW9kZSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVsbHB0cik7CiAjZWxzZQpAQCAtNjU4
LDcgKzY1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxQYXRoKGNvbnN0IFBhdGgm
IHBhdGgpCiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwog
Ci0gICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gZmlsbEdyYWRp
ZW50ID0gdGhpcy0+ZmlsbEdyYWRpZW50KCkpIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7
CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwog
ICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5z
aXplKCkpOwpAQCAtNjcwLDMzICs2NzAsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6Zmls
bFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNU
TShsYXllckNvbnRleHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAgICAgICAgICAgIENHQ29u
dGV4dEJlZ2luUGF0aChsYXllckNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0
aChsYXllckNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5z
Zm9ybSk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBmaWxs
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAgICAgaWYgKGZpbGxSdWxlKCkg
PT0gV2luZFJ1bGU6OkV2ZW5PZGQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGxh
eWVyQ29udGV4dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChsYXllckNvbnRleHQpOwogCi0gICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+
cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIGZpbGxHcmFkaWVudC0+cGFpbnQobGF5
ZXJDb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RN
KGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3Jt
KCkpOwogCiAgICAgICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkK
ICAgICAgICAgICAgICAgICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKIAotICAgICAgICAg
ICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KCp0aGlzKTsKKyAgICAgICAgICAgIGZpbGxH
cmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgIGlmIChmaWxsUGF0dGVybigp
KQogICAgICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7CiAjaWYgSEFWRShDR19DT05URVhUX0RSQVdf
UEFUSF9ESVJFQ1QpCiAgICAgQ0dDb250ZXh0RHJhd1BhdGhEaXJlY3QoY29udGV4dCwgZmlsbFJ1
bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9kZCA/IGtDR1BhdGhFT0ZpbGwgOiBrQ0dQYXRoRmlsbCwg
cGF0aC5wbGF0Zm9ybVBhdGgoKSwgbnVsbHB0cik7CkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDRzo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmIChtX3N0YXRl
LnN0cm9rZUdyYWRpZW50KSB7CisgICAgaWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSB0aGlzLT5z
dHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAg
ICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAg
IGZsb2F0IGxpbmVXaWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOwpAQCAtNzQyLDggKzc0Miw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAg
ICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgobGF5ZXJDb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0
aCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGxh
eWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7Ci0g
ICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRlLnN0cm9r
ZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShsYXllckNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKIAogICAgICAgICAgICAg
ZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAg
ICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0aCk7
CkBAIC03NTQsMTMgKzc1NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQs
IHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhX
aXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRl
eHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuc3Ry
b2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZUdy
YWRpZW50LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29u
dGV4dCwgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHN0cm9r
ZUdyYWRpZW50LT5wYWludCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgaWYgKHN0cm9rZVBhdHRl
cm4oKSkKICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAKICNpZiBVU0UoQ0dfQ09OVEVY
VF9TVFJPS0VfTElORV9TRUdNRU5UU19XSEVOX1NUUk9LSU5HX1BBVEgpCkBAIC03ODUsNyArNzg1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAK
LSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICBpZiAoYXV0byBmaWxsR3JhZGll
bnQgPSB0aGlzLT5maWxsR3JhZGllbnQoKSkgewogICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAg
ICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkp
OwpAQCAtNzk4LDE4ICs3OTgsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUmVjdChsYXll
ckNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQp
OwogCi0gICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250ZXh0LCBtX3N0YXRl
LmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0
Q1RNKGxheWVyQ29udGV4dCwgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICBmaWxsR3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0
KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxH
cmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50
LT5wYWludCgqdGhpcyk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwg
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBmaWxsR3JhZGllbnQt
PnBhaW50KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgaWYgKGZpbGxQYXR0ZXJuKCkpCiAgICAgICAg
IGFwcGx5RmlsbFBhdHRlcm4oKTsKIAogICAgIGJvb2wgZHJhd093blNoYWRvdyA9IGNhblVzZVNo
YWRvd0JsdXIoKTsKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNo
YWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJvcFNoYWRv
dygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNoYWRvdy5k
cmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCkBA
IC04MzksNyArODM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIC8vIFR1cm4gb2Zm
IENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9y
bUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KG1fc3RhdGUpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coZHJv
cFNoYWRvdygpLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgY29udGV4dFNo
YWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAg
fQogCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbFJvdW5k
ZWRSZWN0SW1wbChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdAogICAgICAgICAv
LyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29s
b3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRv
d0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0
U2hhZG93KGRyb3BTaGFkb3coKSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAg
IGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIHJlY3QpOwogICAgIH0KIApAQCAt
ODc0LDcgKzg3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxSb3VuZGVkUmVjdElt
cGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QKICAgICBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkgPSByZWN0LnJhZGlpKCk7CiAgICAgYm9vbCBlcXVhbFdp
ZHRocyA9IChyYWRpaS50b3BMZWZ0KCkud2lkdGgoKSA9PSByYWRpaS50b3BSaWdodCgpLndpZHRo
KCkgJiYgcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0
aCgpICYmIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCku
d2lkdGgoKSk7CiAgICAgYm9vbCBlcXVhbEhlaWdodHMgPSAocmFkaWkudG9wTGVmdCgpLmhlaWdo
dCgpID09IHJhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSAmJiByYWRpaS5ib3R0b21MZWZ0KCku
aGVpZ2h0KCkgPT0gcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQoKSAmJiByYWRpaS50b3BSaWdodCgp
LmhlaWdodCgpID09IHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOwotICAgIGJvb2wgaGFz
Q3VzdG9tRmlsbCA9IG1fc3RhdGUuZmlsbEdyYWRpZW50IHx8IG1fc3RhdGUuZmlsbFBhdHRlcm47
CisgICAgYm9vbCBoYXNDdXN0b21GaWxsID0gZmlsbEdyYWRpZW50KCkgfHwgZmlsbFBhdHRlcm4o
KTsKICAgICBpZiAoIWhhc0N1c3RvbUZpbGwgJiYgZXF1YWxXaWR0aHMgJiYgZXF1YWxIZWlnaHRz
ICYmIHJhZGlpLnRvcExlZnQoKS53aWR0aCgpICogMiA9PSByLndpZHRoKCkgJiYgcmFkaWkudG9w
TGVmdCgpLmhlaWdodCgpICogMiA9PSByLmhlaWdodCgpKQogICAgICAgICBDR0NvbnRleHRGaWxs
RWxsaXBzZUluUmVjdChjb250ZXh0LCByKTsKICAgICBlbHNlIHsKQEAgLTkxNSw3ICs5MTUsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsbwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dz
LgogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCks
IENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyht
X3N0YXRlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGRyb3BTaGFkb3coKSwg
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0lu
c2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QpOwogICAgIH0KIApAQCAtOTg5
LDYgKzk4OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQgb3BhY2l0eSkKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIG9wYWNpdHkpOwogICAgIENH
Q29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCwgMCk7CisgICAgCisgICAgbV9z
dGF0ZS5kaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9kYXRhLT5tX3VzZXJUb0Rl
dmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKQEAgLTEwMDIsMTcg
KzEwMDQsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KQogICAgIHJlc3RvcmUoKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3Jr
YXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0Zsb2F0JiB4
T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0KQorc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRX
b3JrYXJvdW5kSWZOZWVkZWQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQmIHhPZmZzZXQs
IENHRmxvYXQmIHlPZmZzZXQpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZP
Uk0oV0lOKQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oeE9m
ZnNldCk7CiAgICAgVU5VU0VEX1BBUkFNKHlPZmZzZXQpOwogI2Vsc2UKLSAgICBpZiAoY29udGV4
dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRo
Q29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS81NTM5Mzg4PiBieSBlbnN1cmluZyB0aGF0IHRo
ZSBvZmZzZXRzIHdpbGwgZ2V0IHRydW5jYXRlZApAQCAtMTAzMCwxMCArMTAyOSw4IEBAIHN0YXRp
YyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1NoYWRvdyhj
b25zdCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBv
ZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyB2b2lkIHNldENH
U2hhZG93KENHQ29udGV4dFJlZiBjb250ZXh0LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3Is
IGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0KICAgICBpZiAob2Zmc2V0
LmlzWmVybygpICYmICFibHVyKSB7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xv
cihjb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0NSw3
ICsxMDQyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dTaGFkb3coY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICBDR0Zsb2F0IHlPZmZzZXQg
PSBvZmZzZXQuaGVpZ2h0KCk7CiAgICAgQ0dGbG9hdCBibHVyUmFkaXVzID0gYmx1cjsKIAotICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpIHsKKyAgICBp
ZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3Jt
IHVzZXJUb0Jhc2VDVE0gPSBnZXRVc2VyVG9CYXNlQ1RNKGNvbnRleHQpOwogCiAgICAgICAgIENH
RmxvYXQgQSA9IHVzZXJUb0Jhc2VDVE0uYSAqIHVzZXJUb0Jhc2VDVE0uYSArIHVzZXJUb0Jhc2VD
VE0uYiAqIHVzZXJUb0Jhc2VDVE0uYjsKQEAgLTEwNjYsNyArMTA2Myw4IEBAIHN0YXRpYyB2b2lk
IHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmCiAgICAgLy8gRXh0cmVtZSAiYmx1ciIgdmFsdWVzIGNhbiBtYWtlIHRleHQg
ZHJhd2luZyBjcmFzaCBvciB0YWtlIGNyYXp5IGxvbmcgdGltZXMsIHNvIGNsYW1wCiAgICAgYmx1
clJhZGl1cyA9IHN0ZDo6bWluKGJsdXJSYWRpdXMsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCgx
MDAwLjApKTsKIAotICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGdyYXBo
aWNzQ29udGV4dCwgeE9mZnNldCwgeU9mZnNldCk7CisgICAgaWYgKHJlbmRlcmluZ01vZGUgIT0g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGFwcGx5U2hhZG93T2Zmc2V0V29y
a2Fyb3VuZElmTmVlZGVkKGNvbnRleHQsIHhPZmZzZXQsIHlPZmZzZXQpOwogCiAgICAgLy8gQ2hl
Y2sgZm9yIGFuIGludmFsaWQgY29sb3IsIGFzIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29sb3Igd2Fz
IG5vdCBzZXQgZm9yIHRoZSBzaGFkb3cKICAgICAvLyBhbmQgd2Ugc2hvdWxkIHRoZXJlZm9yZSBq
dXN0IHVzZSB0aGUgZGVmYXVsdCBzaGFkb3cgY29sb3IuCkBAIC0xMDc2LDM5ICsxMDc0LDYxIEBA
IHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBj
YWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6
OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dENHOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7Cisg
ICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gY29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBDR0NvbnRl
eHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAw
LmYpKTsKKyAgICBmb3IgKGF1dG8gY2hhbmdlIDogc3RhdGUuY2hhbmdlcygpKSB7CisgICAgICAg
IHN3aXRjaCAoY2hhbmdlKSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbEJydXNoOgorICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Rh
dGUuZmlsbEJydXNoLmNvbG9yKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzLCAwLmYpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2g6CisgICAgICAgICAgICBDR0Nv
bnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRl
LnN0cm9rZUJydXNoLmNvbG9yKCkpLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5n
ZSkpCi0gICAgICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNh
Y2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tlQ29sb3IpLmdldCgpKTsKKyAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgorICAgICAgICAgICAgc2V0
Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRl
LmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYg
KGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQot
ICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxsQ29sb3IpOworICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3c6CisgICAgICAg
ICAgICBzZXRDR1NoYWRvdyhjb250ZXh0LCByZW5kZXJpbmdNb2RlKCksIHN0YXRlLmRyb3BTaGFk
b3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmJsdXJSYWRpdXMsIHN0YXRlLmRyb3BTaGFkb3cu
Y29sb3IsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNo
YW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsK
KyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUu
Y29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSk7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eToKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJw
b2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldFRleHREcmF3
aW5nTW9kZShjb250ZXh0LCBjZ1RleHREcmF3aW5nTW9kZShzdGF0ZS50ZXh0RHJhd2luZ01vZGUp
KTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2lu
Z01vZGU6CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwg
Y2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7CisgICAgICAgICAgICBi
cmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkQW50aWFsaWFzQ2hhbmdlKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFz
KGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzOgorICAgICAgICAgICAgQ0dDb250
ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7Cisg
ICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRT
aG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7CisgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHM6
CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0
ZS5zaG91bGRTbW9vdGhGb250cyk7CisgICAgICAgICAgICBicmVhazsKIAotICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eUNoYW5nZSkpCi0gICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRl
eHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CiAKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d0NoYW5nZSkpCi0gICAgICAgIHNldENHU2hhZG93KCp0aGlzLCBzdGF0ZS5zaGFkb3dPZmZzZXQs
IG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7CisgICAgc3RhdGUuZGlk
QXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnNldE1pdGVyTGlt
aXQoZmxvYXQgbGltaXQpCkBAIC0xMTI1LDcgKzExNDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dENHOjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQog
ewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBp
ZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgeworICAgIGlmIChhdXRvIHN0cm9rZUdyYWRpZW50
ID0gdGhpcy0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsK
ICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRvdWJsZUxpbmVXaWR0aCA9IGxpbmVXaWR0aCAqIDI7
CiAgICAgICAgICAgICBmbG9hdCBhZGp1c3RlZFdpZHRoID0gY2VpbGYocmVjdC53aWR0aCgpICsg
ZG91YmxlTGluZVdpZHRoKTsKQEAgLTExNDksOCArMTE2OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgp
CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRSZWN0KGxheWVyQ29udGV4dCwgcmVjdCk7CiAgICAg
ICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChsYXllckNvbnRleHQp
OwogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwotICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNw
YWNlVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPnBhaW50
KGxheWVyQ29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgc3Ryb2tl
R3JhZGllbnQtPnBhaW50KGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgp
OwpAQCAtMTE2MSwxMyArMTE4MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAgICAg
Q0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dFJl
cGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgICAgICAgICAgbV9zdGF0
ZS5zdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOworICAgICAgICAgICAgQ0dDb250ZXh0Q29u
Y2F0Q1RNKGNvbnRleHQsIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICBzdHJva2VHcmFkaWVudC0+cGFpbnQoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgIGlmIChz
dHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogCiAgICAgLy8g
VXNpbmcgQ0dDb250ZXh0QWRkUmVjdCBhbmQgQ0dDb250ZXh0U3Ryb2tlUGF0aCB0byBzdHJva2Ug
cmVjdCByYXRoZXIgdGhhbgpAQCAtMTQyMiw3ICsxNDQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDRzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHZv
aWQgR3JhcGhpY3NDb250ZXh0Q0c6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBz
ZSkKIHsKICAgICAvLyBDR0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNv
bGlkIGNvbG9ycy4KLSAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxs
UGF0dGVybikgeworICAgIGlmIChmaWxsR3JhZGllbnQoKSB8fCBmaWxsUGF0dGVybigpKSB7CiAg
ICAgICAgIGZpbGxFbGxpcHNlQXNQYXRoKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTQzNCw3ICsxNDU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZmlsbEVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6c3Ry
b2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiB7CiAgICAgLy8gQ0dDb250ZXh0
U3Ryb2tlRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KLSAgICBpZiAo
bV9zdGF0ZS5zdHJva2VHcmFkaWVudCB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4pIHsKKyAgICBp
ZiAoc3Ryb2tlR3JhZGllbnQoKSB8fCBzdHJva2VQYXR0ZXJuKCkpIHsKICAgICAgICAgc3Ryb2tl
RWxsaXBzZUFzUGF0aChlbGxpcHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5oCmluZGV4IDYwM2IwZTkzNmVmYjUyOGNhYzNkN2FkYzg2NmU5OTU3ZWUzMGViZWMuLmExYTI2
YmZkMjg0ZDg0NDYzZWMyMGZiMDE0ZmEzMzY5Yzg4Yzk5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaApAQCAt
MTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNJbnRlcm5hbExpbmtz
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZp
bmFsOworICAgIHZvaWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5h
bDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Vc2VTaGFkb3dCbHVyKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlw
aHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBlZmJjMWU0OTU0
NDFiZWRlNzM0ZTk0OGRkMjZkMzcxNDQxNjU1M2UwLi5kMGJlYzhkNjM4NDcwOWI3OGNmMWRlODBi
YjAyZTFlMzdkMmY5NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCkBAIC05Niw1MiArOTYsMjQgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5
cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2wKIAog
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIG1fb3JpZ2luYWxTdGF0ZS5m
aWxsU3R5bGUuY29sb3IgPSBjb250ZXh0U3RhdGUuZmlsbENvbG9yOwotICAgIG1fb3JpZ2luYWxT
dGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQgPSBjb250ZXh0U3RhdGUuZmlsbEdyYWRpZW50OwotICAg
IG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRl
eHRTdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBtX29yaWdpbmFsU3RhdGUu
ZmlsbFN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuZmlsbFBhdHRlcm47Ci0KLSAgICBtX29y
aWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IgPSBjb250ZXh0U3RhdGUuc3Ryb2tlQ29sb3I7
Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0YXRl
LnN0cm9rZUdyYWRpZW50OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVu
dFNwYWNlVHJhbnNmb3JtID0gY29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zv
cm07Ci0gICAgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3Rh
dGUuc3Ryb2tlUGF0dGVybjsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4
dFN0YXRlLmZpbGxCcnVzaDsKKyAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2ggPSBjb250
ZXh0U3RhdGUuc3Ryb2tlQnJ1c2g7CiAKICAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25l
ci5nZXRDVE0oKTsgLy8gRklYTUU6IERlYWwgd2l0aCBiYXNlIENUTS4KIAotICAgIG1fb3JpZ2lu
YWxTdGF0ZS5zaGFkb3cub2Zmc2V0ID0gY29udGV4dFN0YXRlLnNoYWRvd09mZnNldDsKLSAgICBt
X29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIgPSBjb250ZXh0U3RhdGUuc2hhZG93Qmx1cjsKLSAg
ICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yID0gY29udGV4dFN0YXRlLnNoYWRvd0NvbG9y
OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRT
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKLQotICAgIG1fY3VycmVudFN0YXRlID0gbV9v
cmlnaW5hbFN0YXRlOworICAgIG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0
YXRlLmRyb3BTaGFkb3c7CisgICAgbV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMgPSBj
b250ZXh0U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiB9CiAKIHZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZpbGxDb2xv
cihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yKTsKLSAgICBlbHNlIGlmIChtX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50KQotICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+
c2V0RmlsbEdyYWRpZW50KCptX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50LCBtX29y
aWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0ZXJuKTsKLSAg
ICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybikKLSAgICAgICAgICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsUGF0dGVybigqbV9vcmlnaW5hbFN0YXRlLmZpbGxT
dHlsZS5wYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLmNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcik7Ci0gICAgZWxzZSBpZiAo
bV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50KQotICAgICAgICBtX2ludGVybmFs
Q29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5n
cmFkaWVudCwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0
eWxlLnBhdHRlcm4pOwotICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBh
dHRlcm4pCi0gICAgICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybigq
bV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4pOwotICAgIH0KKyAgICBtX2ludGVy
bmFsQ29udGV4dC0+c2V0RmlsbEJydXNoKG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2gpOworICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VCcnVzaChtX29yaWdpbmFsU3RhdGUuc3Ryb2tl
QnJ1c2gpOwogCiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldENUTShtX29yaWdpbmFsU3RhdGUu
Y3RtKTsKIAotICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMpOwotICAgIG1faW50ZXJu
YWxDb250ZXh0LT5zZXRTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5vZmZzZXQsIG1fb3Jp
Z2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciwgY29u
dGV4dFN0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRT
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7
CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldERyb3BTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRy
b3BTaGFkb3cpOwogCiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShj
b250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKTsKIH0KQEAgLTE2NSw5NSArMTM3LDM5IEBAIHZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQm
IGZvbnQsIEZvbnRTbW9vdGhpbmdNCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6Y29uY2x1ZGVJ
bnRlcm5hbENvbnRleHQoKQogewogICAgIHVwZGF0ZUNUTShtX29yaWdpbmFsU3RhdGUuY3RtKTsK
LSAgICB1cGRhdGVGaWxsQ29sb3IobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvciwgbV9v
cmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0YXRlLmZp
bGxTdHlsZS5wYXR0ZXJuLmdldCgpKTsKLSAgICB1cGRhdGVTdHJva2VDb2xvcihtX29yaWdpbmFs
U3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFk
aWVudC5nZXQoKSwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4uZ2V0KCkpOwot
ICAgIHVwZGF0ZVNoYWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCwgbV9vcmlnaW5h
bFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yLCBtX29yaWdp
bmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPyBTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czo6WWVzIDogU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Ok5vKTsKKyAgICB1cGRhdGVGaWxsQnJ1
c2gobV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCk7CisgICAgdXBkYXRlU3Ryb2tlQnJ1c2gobV9v
cmlnaW5hbFN0YXRlLnN0cm9rZUJydXNoKTsKKyAgICB1cGRhdGVTaGFkb3cobV9vcmlnaW5hbFN0
YXRlLmRyb3BTaGFkb3csIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zID8gU2hhZG93
c0lnbm9yZVRyYW5zZm9ybXM6OlllcyA6IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpObyk7CiB9
CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQsIFBhdHRlcm4qIG5ld1BhdHRlcm4pCit2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNo
JiBuZXdCcnVzaCkKIHsKLSAgICAvLyBUaGlzIGNoZWNrIGxvb2tzIHdyb25nIGJ1dCBpdCBhY3R1
YWxseSBpc24ndCwgZm9yIG91ciBsaW1pdGVkIHVzZS4KLSAgICAvLyBDVCB3aWxsIG9ubHkgZXZl
ciBzZXQgdGhpcyB0byBhIHNvbGlkIGNvbG9yLCB3aGljaCB0aGlzIGlzIHRoZSBjb3JyZWN0IGNo
ZWNrIGZvci4KLSAgICAvLyBJbiBjb25jbHVkZUludGVybmFsQ29udGV4dCgpIHdlIHNldCBpdCBi
YWNrIHRvIHdoYXQgaXQgd2FzIG9yaWdpbmFsbHksIHdoaWNoIHRoaXMgY2hlY2sgd29ya3MgY29y
cmVjdGx5IGZvciB0b28uCi0gICAgaWYgKG5ld0NvbG9yID09IG1fY3VycmVudFN0YXRlLmZpbGxT
dHlsZS5jb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUg
bmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUuZmlsbENvbG9yID0gbmV3Q29sb3I7Ci0gICAgaWYgKG5l
d0dyYWRpZW50KQotICAgICAgICBuZXdTdGF0ZS5maWxsR3JhZGllbnQgPSBuZXdHcmFkaWVudDsK
LSAgICBpZiAobmV3UGF0dGVybikKLSAgICAgICAgbmV3U3RhdGUuZmlsbFBhdHRlcm4gPSBuZXdQ
YXR0ZXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSB9KTsKLSAgICBtX2N1cnJlbnRTdGF0ZS5maWxs
U3R5bGUuY29sb3IgPSBuZXdDb2xvcjsKKyAgICBtX293bmVyLnNldEZpbGxCcnVzaChuZXdCcnVz
aCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VDb2xvcihjb25z
dCBDb2xvciYgbmV3Q29sb3IsIEdyYWRpZW50KiBuZXdHcmFkaWVudCwgUGF0dGVybiogbmV3UGF0
dGVybikKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTdHJva2VCcnVzaChjb25zdCBT
b3VyY2VCcnVzaCYgbmV3QnJ1c2gpCiB7Ci0gICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBi
dXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2ls
bCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUg
Y29ycmVjdCBjaGVjayBmb3IuCi0gICAgLy8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3
ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNr
IHdvcmtzIGNvcnJlY3RseSBmb3IgdG9vLgotICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRT
dGF0ZS5zdHJva2VTdHlsZS5jb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgbmV3U3RhdGUuc3Ryb2tlQ29sb3IgPSBuZXdDb2xv
cjsKLSAgICBpZiAobmV3R3JhZGllbnQpCi0gICAgICAgIG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50
ID0gbmV3R3JhZGllbnQ7Ci0gICAgaWYgKG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0YXRlLnN0
cm9rZVBhdHRlcm4gPSBuZXdQYXR0ZXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3
U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlIH0pOwotICAg
IG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gbmV3Q29sb3I7CisgICAgbV9vd25l
ci5zZXRTdHJva2VCcnVzaChuZXdCcnVzaCk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVy
Ojp1cGRhdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0pCiB7Ci0gICAgaWYgKGN0bSA9
PSBtX2N1cnJlbnRTdGF0ZS5jdG0pCisgICAgaWYgKG1fb3duZXIuZ2V0Q1RNKCkgPT0gY3RtKQog
ICAgICAgICByZXR1cm47Ci0KICAgICBtX293bmVyLnNldENUTShjdG0pOwotICAgIG1fY3VycmVu
dFN0YXRlLmN0bSA9IGN0bTsKIH0KIAotc3RhdGljIGJvb2wgc2hhZG93SXNDbGVhcmVkKGNvbnN0
IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyKQordm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93LCBT
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKIHsKLSAgICBy
ZXR1cm4gc2hhZG93T2Zmc2V0ID09IEZsb2F0U2l6ZSgpICYmICFzaGFkb3dCbHVyOwotfQotCi12
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2hh
ZG93T2Zmc2V0LCBmbG9hdCBzaGFkb3dCbHVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotewotICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgaWYgbm9i
b2R5IGhhcyBhbnkgc2hhZG93cy4KLSAgICBpZiAoc2hhZG93SXNDbGVhcmVkKHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1cikgJiYgc2hhZG93SXNDbGVhcmVkKG1fY3VycmVudFN0YXRlLnNoYWRvdy5v
ZmZzZXQsIG1fY3VycmVudFN0YXRlLnNoYWRvdy5ibHVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3Mgc3RhdGVDaGFuZ2VGbGFnczsKLQotICAgIGlmIChzaGFkb3dP
ZmZzZXQgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93Lm9mZnNldCB8fCBzaGFkb3dCbHVyICE9IG1f
Y3VycmVudFN0YXRlLnNoYWRvdy5ibHVyIHx8IHNoYWRvd0NvbG9yICE9IG1fY3VycmVudFN0YXRl
LnNoYWRvdy5jb2xvcikgewotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dPZmZzZXQgPSBzaGFkb3dP
ZmZzZXQ7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd0JsdXIgPSBzaGFkb3dCbHVyOwotICAgICAg
ICBuZXdTdGF0ZS5zaGFkb3dDb2xvciA9IHNoYWRvd0NvbG9yOwotICAgICAgICBzdGF0ZUNoYW5n
ZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKLSAgICB9Ci0g
ICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICE9IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OjpVbnNwZWNpZmllZCAmJiAoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM6OlllcykgIT0gbV9jdXJyZW50U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9y
bXMpIHsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7Ci0gICAg
ICAgIHN0YXRlQ2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtc0NoYW5nZSk7Ci0gICAgfQotICAgIGlmIChzdGF0ZUNoYW5nZUZsYWdzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fb3duZXIuZGlkVXBkYXRlU3RhdGUobmV3
U3RhdGUsIHN0YXRlQ2hhbmdlRmxhZ3MpOwotCi0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93Lm9m
ZnNldCA9IHNoYWRvd09mZnNldDsKLSAgICBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciA9IHNo
YWRvd0JsdXI7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmNvbG9yID0gc2hhZG93Q29sb3I7
Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPSAoc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRyYW5zZm9ybXM6Olllcyk7CisgICAgbV9v
d25lci5zZXREcm9wU2hhZG93KGRyb3BTaGFkb3cpOworICAgIG1fb3duZXIuc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPT0gU2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM6Olllcyk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVTaGFk
b3coQ0dTdHlsZVJlZiBzdHlsZSkKIHsKICAgICBpZiAoQ0dTdHlsZUdldFR5cGUoc3R5bGUpICE9
IGtDR1N0eWxlU2hhZG93KSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG1vcmUga2luZHMg
b2YgQ0dTdHlsZXMuCi0gICAgICAgIHVwZGF0ZVNoYWRvdyh7MCwgMH0sIDAsIENvbG9yKCksIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCk7CisgICAgICAgIHVwZGF0ZVNoYWRv
dyh7IH0sIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpVbnNwZWNpZmllZCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI2MSw3ICsxNzcsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRl
cjo6dXBkYXRlU2hhZG93KENHU3R5bGVSZWYgc3R5bGUpCiAgICAgYXV0byByYWQgPSBkZWcycmFk
KHNoYWRvd1N0eWxlLmF6aW11dGggLSAxODApOwogICAgIGF1dG8gc2hhZG93T2Zmc2V0ID0gRmxv
YXRTaXplKHN0ZDo6Y29zKHJhZCksIHN0ZDo6c2luKHJhZCkpICogc2hhZG93U3R5bGUuaGVpZ2h0
OwogICAgIGF1dG8gc2hhZG93Q29sb3IgPSBDR1N0eWxlR2V0Q29sb3Ioc3R5bGUpOwotICAgIHVw
ZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1N0eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0
ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xvciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOjpZZXMpOworICAgIHVwZGF0ZVNoYWRvdyh7IHNoYWRvd09mZnNldCwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNoYWRvd1N0eWxlLnJhZGl1cyksIENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9y
U3BhY2Uoc2hhZG93Q29sb3IpIH0sIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwogfQog
CiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0
YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENHUmVjdCkKQEAgLTMyOCw4ICsyNDQsOCBAQCB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRl
UmVmLCBDR0dTdGF0ZVJlZiBnc3RhdAogCiAgICAgYXV0byBmaWxsQ29sb3IgPSBDR0dTdGF0ZUdl
dEZpbGxDb2xvcihnc3RhdGUpOwogICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBDR0dTdGF0ZUdldFN0
cm9rZUNvbG9yKGdzdGF0ZSk7Ci0gICAgdXBkYXRlRmlsbENvbG9yKENvbG9yOjpjcmVhdGVBbmRQ
cmVzZXJ2ZUNvbG9yU3BhY2UoZmlsbENvbG9yKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29s
b3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOworICAgIHVwZGF0
ZUZpbGxCcnVzaChDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKGZpbGxDb2xvcikp
OworICAgIHVwZGF0ZVN0cm9rZUJydXNoKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3Bh
Y2Uoc3Ryb2tlQ29sb3IpKTsKICAgICB1cGRhdGVTaGFkb3coQ0dHU3RhdGVHZXRTdHlsZShnc3Rh
dGUpKTsKIAogICAgIGF1dG8gZm9udFNpemUgPSBDR0dTdGF0ZUdldEZvbnRTaXplKGdzdGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyZTJmNGY0ZjJjYjU1ZDM2NWU1YWUzOTkz
MjVkMDVmMmMxNzM2MWZkLi4yYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFlZGZkZTFjODgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDEwICs5MCw3IEBAIGJvb2wgRGlz
cGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRs
ZSBpdGVtKQogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZv
cm1PcGVyYXRpb25zKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRl
bS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBk
cm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0t
c3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFu
Z2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
aWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAg
IGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDIzZDBiYmNjNzFjMjgxYzUyYzM1YThjMjUyZGE5NmMw
YWIxMmE5OGMuLmI2NmM4NDhhMzNiZGQ5MjM2MGZlYTg1MzM3ZmFiNWRiMmQyZDAyYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTE0OCwyNCArMTQ4LDE5IEBAIHN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJv
a2VUaGlja25lc3MmIHN0YXRlKQogICAgIHJldHVybiB0czsKIH0KIAotU2V0U3RhdGU6OlNldFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlLCBm
bGFncykKLXsKLX0KLQotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKLSAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2Up
CitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQor
ICAgIDogbV9zdGF0ZShzdGF0ZSkKIHsKIH0KIAogdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7
CisgICAgY29udGV4dC51cGRhdGVTdGF0ZShtX3N0YXRlKTsKIH0KIAotc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRlJiBzdGF0ZSkKK3N0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0
ZSYgaXRlbSkKIHsKLSAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNoYW5nZSgpOworICAgIHRzIDw8IGl0
ZW0uc3RhdGUoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCmluZGV4IDk3Y2I1ZmM4ZDA0YmE4NjYyYjcyYzdkZGVlYmM0NDE1NWMyODI1YjcuLjk2
OTRkNjhkMTVlOThkNTY3ZDM4ZDNhYzliMmMwOTlmMzBkMGE1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaApAQCAtMjQ3LDEwICsyNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpOwogCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmIHN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIG1fc3RhdGVD
aGFuZ2U7IH0KKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CkBAIC0yNTgsMjg4ICsy
NTcsMjQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0Jik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlIG1fc3RhdGVDaGFuZ2U7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzOwotICAgIGVuY29kZXIgPDwgY2hhbmdlRmxhZ3M7Ci0KLSAgICBh
dXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZTsKLQotICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7
Ci0gICAgICAgIEFTU0VSVChzdGF0ZS5zdHJva2VHcmFkaWVudCk7Ci0gICAgICAgIGVuY29kZXIg
PDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXRlLnN0cm9rZVBhdHRlcm4pOwotICAgICAgICBlbmNvZGVyIDw8ICpz
dGF0ZS5zdHJva2VQYXR0ZXJuOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBB
U1NFUlQoc3RhdGUuZmlsbEdyYWRpZW50KTsKLSAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmls
bEdyYWRpZW50OwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIEFTU0VSVChzdGF0
ZS5maWxsUGF0dGVybik7Ci0gICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxQYXR0ZXJuOwot
ICAgIH0KLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd09mZnNl
dDsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd1Jh
ZGl1c01vZGU7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VDb2xvcjsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS5maWxsQ29sb3I7Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5zdHJva2VTdHlsZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLmZpbGxSdWxlOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpKQotICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwotCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQotICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLmJsZW5kTW9kZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0g
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLQotICAg
IGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFu
Z2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmFscGhhOwotCi0gICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZEFudGlhbGlhczsKLQotICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9u
dHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNob3VsZFNtb290aEZvbnRzOwot
Ci0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2Up
KQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAg
IGVuY29kZXIgPDwgbV9zdGF0ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6
b3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
PiBjaGFuZ2VGbGFnczsKLSAgICBkZWNvZGVyID4+IGNoYW5nZUZsYWdzOwotICAgIGlmICghY2hh
bmdlRmxhZ3MpCisgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gc3RhdGU7
CisgICAgZGVjb2RlciA+PiBzdGF0ZTsKKyAgICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFu
Z2U7Ci0gICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFuZ2VGbGFnczsKLQotICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKLSAgICAgICAgYXV0byBzdHJva2VHcmFkaWVu
dCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICghc3Ryb2tlR3JhZGll
bnQpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hh
bmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIGF1dG8gc3Ry
b2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgaWYgKCFzdHJv
a2VQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJu
KTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewotICAgICAgICBhdXRv
IGZpbGxHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIGlmICgh
ZmlsbEdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1vdmUoKmZpbGxHcmFkaWVu
dCk7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgewotICAgICAgICBhdXRv
IGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICBpZiAoIWZp
bGxQYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZSgqZmlsbFBhdHRlcm4pOwot
ICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBzaGFkb3dPZmZzZXQ7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93T2Zmc2V0
OwotICAgICAgICBpZiAoIXNoYWRvd09mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSAqc2hh
ZG93T2Zmc2V0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7Ci0g
ICAgICAgIGRlY29kZXIgPj4gc2hhZG93Qmx1cjsKLSAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFs
PENvbG9yPiBzaGFkb3dDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKLSAg
ICAgICAgaWYgKCFzaGFkb3dDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xv
cjsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1
c01vZGU7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hhZG93UmFkaXVzTW9kZTsKLSAgICAgICAgaWYg
KCFzaGFkb3dSYWRpdXNNb2RlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUgPSBXVEZNb3ZlKCpz
aGFkb3dSYWRpdXNNb2RlKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
KSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzdHJva2VUaGlja25lc3M7Ci0gICAg
ICAgIGRlY29kZXIgPj4gc3Ryb2tlVGhpY2tuZXNzOwotICAgICAgICBpZiAoIXN0cm9rZVRoaWNr
bmVzcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSAqc3Ryb2tlVGhpY2tuZXNzOwotICAgIH0K
LQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgZGVjb2Rl
ciA+PiB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAgIGlmICghdGV4dERyYXdpbmdNb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnRleHREcmF3aW5nTW9kZSA9IFdURk1vdmUoKnRleHREcmF3aW5nTW9kZSk7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENv
bG9yPiBzdHJva2VDb2xvcjsKLSAgICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsKLSAgICAg
ICAgaWYgKCFzdHJva2VDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsK
LSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPENvbG9yPiBmaWxsQ29sb3I7Ci0gICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwotICAg
ICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAqZmlsbENvbG9yOwotICAg
IH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpIHsKLSAgICAgICAgU3Ryb2tlU3R5bGUg
c3Ryb2tlU3R5bGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Ryb2tlU3R5bGUpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxS
dWxlQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsK
LSAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKLSAgICAgICAgaWYgKCFmaWxsUnVsZSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsUnVsZSA9ICpmaWxsUnVsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3Bl
cmF0aW9uQ2hhbmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9y
PiBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRv
cjsKLSAgICAgICAgaWYgKCFjb21wb3NpdGVPcGVyYXRvcikKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciA9ICpjb21wb3NpdGVPcGVyYXRvcjsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hh
bmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwotICAg
ICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKLSAgICAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuYmxlbmRNb2RlID0gKmJsZW5kTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2Uu
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eUNoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0
aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICAgICAgZGVjb2RlciA+
PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAg
IHN0YXRlQ2hhbmdlLm1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5OwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpIHsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGE7Ci0gICAgICAgIGRlY29kZXIgPj4gYWxw
aGE7Ci0gICAgICAgIGlmICghYWxwaGEpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxwaGEgPSAqYWxwaGE7Ci0gICAgfQot
Ci0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzaG91bGRBbnRpYWxpYXM7Ci0gICAgICAgIGRlY29kZXIgPj4gc2hvdWxkQW50aWFs
aWFzOwotICAgICAgICBpZiAoIXNob3VsZEFudGlhbGlhcykKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRBbnRpYWxp
YXMgPSAqc2hvdWxkQW50aWFsaWFzOwotICAgIH0KLQotICAgIGlmIChzdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250
c0NoYW5nZSkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRTbW9vdGhGb250
czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTbW9vdGhGb250czsKLSAgICAgICAgaWYgKCFz
aG91bGRTbW9vdGhGb250cykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9ICpzaG91bGRTbW9v
dGhGb250czsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hh
bmdlKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250czsKLSAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7
Ci0gICAgICAgIGlmICghc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci0g
ICAgfQotCi0gICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBk
ZWNvZGVyID4+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgICAgICBpZiAoIXNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgIH0KLQotICAgIHJldHVybiB7IHsgc3RhdGVDaGFuZ2Ug
fSB9OworICAgIHJldHVybiBTZXRTdGF0ZSgqc3RhdGUpOwogfQogCiBjbGFzcyBTZXRMaW5lQ2Fw
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlZWU0NDcx
ZDM1NGU3NTE1MzEyNTE4OWRmY2M5NDE4YTM5NDUxNGExLi45Mzk0NTUxZjM1OWVjMWFmNGVhOTJj
N2IzYjE2ODRlZDJlZWRhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC01Myw0NSArNTMsMzQgQEAgUmVjb3JkZXI6On5SZWNvcmRlcigpCiAgICAgQVNT
RVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGlj
YXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNP
bmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBj
aGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFn
cykKK3ZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBpbmxpbmVTdGF0ZUNoYW5nZUZsYWdzIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlLAotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLAotICAgIH07Ci0KLSAgICBpZiAoY2hhbmdl
RmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lU3RhdGVDaGFuZ2VGbGFncykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpICYmICFjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tl
Q29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBB
U1NFUlQoc3RhdGUuY2hhbmdlcygpKTsKKyAgICAKKyAgICBpZiAoc3RhdGUuY29udGFpbnNPbmx5
SW5saW5lQ2hhbmdlcygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbEJydXNoKSkKKyAgICAgICAgICAgIHJl
Y29yZFNldElubGluZUZpbGxDb2xvcigqZmlsbENvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCkp
OwogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsQ29sb3JDaGFuZ2UpICYmICFjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JH
QkFCeXRlcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzdGF0ZS5jaGFu
Z2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gp
KQorICAgICAgICAgICAgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoKnN0cm9rZUNvbG9yKCku
dHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwogCi0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgICAgIGlm
IChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlVGhpY2tuZXNzKSkKKyAgICAgICAgICAgIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhz
dHJva2VUaGlja25lc3MoKSk7CiAKLXZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRl
bShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCi17Ci0gICAgaWYgKCFjb250
YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAg
ICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAg
ICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5maWxsUGF0dGVybikKLSAgICAg
ICAgICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAgICAg
cmVjb3JkU2V0U3RhdGUoY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0SW5saW5lU3Ry
b2tlQ29sb3IoKmNoYW5nZXMubV9zdGF0ZS5zdHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMo
KSk7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gpKSB7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBmaWxs
UGF0dGVybigpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UocGF0dGVybi0+dGlsZUlt
YWdlKCkpOworICAgIH0KIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgcmVjb3JkU2V0U3Ry
b2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOworICAgIGlmIChz
dGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ry
b2tlQnJ1c2gpKSB7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBzdHJva2VQYXR0ZXJuKCkp
CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Cisg
ICAgfQogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoKmNo
YW5nZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgIHJlY29y
ZFNldFN0YXRlKHN0YXRlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJ
dGVtSWZOZWNlc3NhcnkoKQpAQCAtOTksMjUgKzg4LDI1IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjdXJy
ZW50bHkgaW52b2tlZCBpbiBhbiBhZC1ob2MgbWFubmVyIHdoZW4gcmVjb3JkaW5nIGRyYXdpbmcg
aXRlbXMuIFdlIHNob3VsZCBjb25zaWRlciBlaXRoZXIKICAgICAvLyBzcGxpdHRpbmcgR3JhcGhp
Y3NDb250ZXh0IHN0YXRlIGNoYW5nZXMgaW50byBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVt
cywgb3IgcmVmYWN0b3JpbmcgdGhlIGNvZGUgc3VjaCB0aGF0CiAgICAgLy8gdGhpcyBtZXRob2Qg
aXMgYXV0b21hdGljYWxseSBpbnZva2VkIHdoZW4gcmVjb3JkaW5nIGEgZHJhd2luZyBpdGVtLgot
ICAgIGF1dG8mIHN0YXRlQ2hhbmdlcyA9IGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlOwotICAg
IGF1dG8gY2hhbmdlc0Zyb21MYXN0U3RhdGUgPSBzdGF0ZUNoYW5nZXMuY2hhbmdlc0Zyb21TdGF0
ZShjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlKTsKLSAgICBpZiAoIWNoYW5nZXNGcm9t
TGFzdFN0YXRlKQorICAgIGF1dG8mIHN0YXRlID0gY3VycmVudFN0YXRlKCkuc3RhdGU7CisgICAg
aWYgKCFzdGF0ZS5jaGFuZ2VzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPR19XSVRIX1NU
UkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAicHJlLWRyYXdpbmcsIHNhdmluZyBzdGF0ZSAi
IDw8IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFu
Z2VzRnJvbUxhc3RTdGF0ZSkpOwotICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShzdGF0ZUNoYW5n
ZXMsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKTsKLSAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFn
cyA9IHsgfTsKLSAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFu
Z2VzLm1fc3RhdGU7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8
ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgc3RhdGUpOworICAgIGFwcGVuZFN0YXRl
Q2hhbmdlSXRlbShzdGF0ZSk7CisgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CisgICAgY3Vy
cmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlOwogfQogCiBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OnN0YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3Vy
cmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsKKyAgICByZXR1cm4gY3VycmVudFN0YXRl
KCkuc3RhdGU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MgZmxhZ3MpCit2b2lkIFJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UuYWNjdW11
bGF0ZShzdGF0ZSwgZmxhZ3MpOworICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRlLm1lcmdlQ2hhbmdl
cyhzdGF0ZSwgY3VycmVudFN0YXRlKCkubGFzdERyYXdpbmdTdGF0ZSk7CisgICAgc3RhdGUuZGlk
QXBwbHlDaGFuZ2VzKCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNldExpbmVDYXAoTGluZUNhcCBs
aW5lQ2FwKQpAQCAtMjIyLDEyICsyMTEsMTUgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4o
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiB2
b2lkIFJlY29yZGVyOjpzYXZlKCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQ6OnNhdmUoKTsKICAg
ICByZWNvcmRTYXZlKCk7Ci0gICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFz
dCgpLmNsb25lRm9yU2F2ZSgpKTsKKyAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFj
ay5sYXN0KCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpyZXN0b3JlKCkKIHsKKyAgICBHcmFwaGlj
c0NvbnRleHQ6OnJlc3RvcmUoKTsKKwogICAgIGlmICghbV9zdGF0ZVN0YWNrLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNzUsMTYgKzI2NywyNCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVj
b3JkZXI6OmdldENUTShHcmFwaGljc0NvbnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QK
IAogdm9pZCBSZWNvcmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQog
eworICAgIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsK
KwogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgcmVjb3JkQmVn
aW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1f
c3RhdGVTdGFjay5sYXN0KCkuY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpKTsKKyAgICAKKyAg
ICBtX3N0YXRlLmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBSZWNvcmRl
cjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogeworICAgIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKKwogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5
KCk7CiAgICAgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBtX3N0YXRlU3RhY2su
cmVtb3ZlTGFzdCgpOworCisgICAgbV9zdGF0ZS5kaWRFbmRUcmFuc3BhcmVuY3lMYXllcihjdXJy
ZW50U3RhdGUoKS5zdGF0ZS5hbHBoYSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggODQ1ZWMwMDc3MmVkMmM1NGExZTZjYjI2YjIx
NTFkYWJhYTZlYzA3NS4uYTJhMjI2OGU1ZWQ1ZWI1YzBhOWNmZTNjZmVlYmE3NzAxYzJhZWY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02OSw3ICs2OSw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNS
R0JBPHVpbnQ4X3Q+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldElubGluZVN0cm9r
ZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0
cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRTdGF0
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0
ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRM
aW5lQ2FwKExpbmVDYXApID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZURhc2go
Y29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgPSAwOwpAQCAtMTM1LDMwICsxMzUsMjUgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAw
OwogCiAgICAgc3RydWN0IENvbnRleHRTdGF0ZSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlIHN0YXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBs
YXN0RHJhd2luZ1N0YXRlOwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogICAgICAgICBG
bG9hdFJlY3QgY2xpcEJvdW5kczsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ug
c3RhdGVDaGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIGxhc3REcmF3aW5nU3Rh
dGU7CiAKLSAgICAgICAgQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcCkKLSAgICAgICAgICAgIDogY3RtKHRyYW5zZm9ybSkKLSAgICAgICAgICAgICwgY2xpcEJv
dW5kcyhjbGlwKQotICAgICAgICAgICAgLCBsYXN0RHJhd2luZ1N0YXRlKHN0YXRlKQorICAgICAg
ICBDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGN0bSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwQm91bmRzKQorICAgICAg
ICAgICAgOiBzdGF0ZShzdGF0ZSkKKyAgICAgICAgICAgICwgY3RtKGN0bSkKKyAgICAgICAgICAg
ICwgY2xpcEJvdW5kcyhjbGlwQm91bmRzKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBDb250ZXh0U3RhdGUgY2xvbmVGb3JTYXZlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgQ29udGV4dFN0YXRlIHN0YXRlKGxhc3REcmF3aW5nU3RhdGUsIGN0bSwgY2xpcEJvdW5kcyk7
Ci0gICAgICAgICAgICBzdGF0ZS5zdGF0ZUNoYW5nZSA9IHN0YXRlQ2hhbmdlOwotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRlOwotICAgICAgICB9Ci0KICAgICAgICAgQ29udGV4dFN0YXRlIGNsb25l
Rm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRv
IHN0YXRlID0gY2xvbmVGb3JTYXZlKCk7Ci0gICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0
YXRlLmFscGhhID0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgICAgIGF1
dG8gY29weSA9ICp0aGlzOworICAgICAgICAgICAgY29weS5zdGF0ZS5kaWRCZWdpblRyYW5zcGFy
ZW5jeUxheWVyKCk7CisgICAgICAgICAgICBpZiAoY29weS5sYXN0RHJhd2luZ1N0YXRlKQorICAg
ICAgICAgICAgICAgIGNvcHkubGFzdERyYXdpbmdTdGF0ZS0+ZGlkQmVnaW5UcmFuc3BhcmVuY3lM
YXllcigpOworICAgICAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKQEAgLTE4OSw3ICsxODQsNyBAQCBwcml2
YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKCkgY29uc3QgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFVwZGF0ZVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkVXBkYXRl
U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwpA
QCAtMjcwLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0
IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpS
b3VuZGluZ01vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5l
Y2Vzc2FyeSgpOwotICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MpOworICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCAxZmRj
NmJhNTZiZmRiMjYzNmVmYjM0NjJhZGEyYTk5MGQzMzg5OTQ1Li42MDAxOTgxZjNkNmI2NzZlMzU4
MmE2OGUwYTVkMGY5MjA5Y2Q3MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5jcHAKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBhcHBlbmQ8U2V0
U3Ryb2tlVGhpY2tuZXNzPih0aGlja25lc3MpOwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgYXBwZW5kPFNldFN0YXRlPihzdGF0ZSwgY2hhbmdlRmxhZ3MpOworICAgIGFwcGVuZDxT
ZXRTdGF0ZT4oc3RhdGUpOwogfQogCiB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUNh
cChMaW5lQ2FwIGxpbmVDYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5oCmluZGV4IDY0MjI2NWYwOTgwMjJjZjJiMDVmMTgwYzE3NGZhMDM0NjJmMmRkNDAuLmFj
MmQzMTc5Njc1OGM2MmNjNjE1MGExNTQ5ZDdhMDk0MDZlZWZhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4pIGZpbmFs
OwogICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4pIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSBmaW5hbDsKLSAg
ICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbDsKICAgICB2b2lkIHJl
Y29yZFNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTZXRMaW5lRGFz
aChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKICAgICB2b2lkIHJl
Y29yZFNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmYxOWQwMDM1NGNkYmVkZTNhNWJhMWFmNzU4Y2ZmMDIz
YTI1YTIyLi5mM2M4YzkwY2Q4OGJiZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBiMzliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC05NywxMCArOTcsMTAgQEAg
aW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFn
ZShzZXRTdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCkp
KQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0
U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2gucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJu
ICppbWFnZUlkZW50aWZpZXI7CiAKLSAgICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQ
YXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuZmlsbFBh
dHRlcm4uZ2V0KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5U
aWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCiAgICAg
ICAgIHJldHVybiAqaW1hZ2VJZGVudGlmaWVyOwogCiAgICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNv
bnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcAppbmRleCA5MTE0NmRmYzZmZDg0ZGY4ZTI5NTRmMDM3N2QwMDY2YTc3MjMz
Y2M5Li4xNDE2OWEwNzU1OGQ2MTZiMDkyMGNiMDU3ZGM4ZWIxYzJhNTg4YjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApA
QCAtODIsOSArODIsOSBAQCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJhdGlvblJl
Y29yZGVyKFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCiAgICAgbV9zdGF0ZVN0YWNr
LmFwcGVuZCh7IHsgfSwgeyB9LCBGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpIH0pOwogfQogCi12
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgZmxhZ3MpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRlKEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5n
ZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25l
c3MpKSB7CiAgICAgICAgIHN0cnVjdCBTdHJva2VUaGlja25lc3NDaGFuZ2UgZmluYWwgOiBQYWlu
dGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxmbG9hdD4gewogICAgICAgICAgICAgdmlydHVh
bCB+U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKCkgPSBkZWZhdWx0OwogCkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKICAgICB9CiAK
LSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2Up
IHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlN0cm9rZVN0eWxlKSkgewogICAgICAgICBzdHJ1Y3QgU3Ryb2tlU3R5bGVDaGFu
Z2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxTdHJva2VTdHlsZT4g
ewogICAgICAgICAgICAgdmlydHVhbCB+U3Ryb2tlU3R5bGVDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAK
QEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwogICAgICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxTdHJva2VTdHlsZUNoYW5nZT4oc3RhdGUuc3Ryb2tlU3R5bGUpKTsK
ICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRl
T3BlcmF0aW9uQ2hhbmdlKSB7CisgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkgewogICAgICAgICBzdHJ1
Y3QgQ29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9w
ZXJhdGlvbkRhdGE8Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZT4gewogICAgICAgICAgICAg
dmlydHVhbCB+Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKCkgPSBkZWZhdWx0OwogCkBAIC0xMzUs
MTAgKzEzNSwxMCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwogICAgICAgICAgICAgfQogICAg
ICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSkpOworICAg
ICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2U+KHN0YXRl
LmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSkp
OwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRB
bnRpYWxpYXNDaGFuZ2UpIHsKKyAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpIHsKICAgICAgICAgc3Ry
dWN0IFNob3VsZEFudGlhbGlhc0NoYW5nZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVy
YXRpb25EYXRhPGJvb2w+IHsKICAgICAgICAgICAgIHZpcnR1YWwgflNob3VsZEFudGlhbGlhc0No
YW5nZSgpID0gZGVmYXVsdDsKIApAQCAtMTU1LDYgKzE1NSw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBHCiAKICAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U2hvdWxkQW50aWFsaWFzQ2hh
bmdlPihzdGF0ZS5zaG91bGRBbnRpYWxpYXMpKTsKICAgICB9CisKKyAgICBzdGF0ZS5kaWRBcHBs
eUNoYW5nZXMoKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpzZXRMaW5lQ2Fw
KExpbmVDYXAgbGluZUNhcCkKQEAgLTI5Miw3ICsyOTQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRp
ZW50KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4o
MS4wLCBzdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSkpKTsKKyAgICBhcHBlbmQoY3Jl
YXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgZ3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0
YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpKSk7CiB9CiAKIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzE2LDcgKzMxOCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IsCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgY29sb3IsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHN0YXRlLmNvbXBvc2l0ZU9w
ZXJhdG9yKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9y
LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
LCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3Vu
ZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzQ2
LDcgKzM0OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0CiAgICAgfTsKIAogICAgIGF1dG8m
IHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91
bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIGJs
ZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QsIGNvbG9yLCBzdGF0ZS5jb21wb3Np
dGVNb2RlLm9wZXJhdGlvbiwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7
CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVk
SG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTUzMyw3ICs1MzUsNyBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2lu
dCwKICAgICAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+KGZvbnQucGxhdGZvcm1EYXRh
KCkuc2NhbGVkRm9udCgpKSwKICAgICAgICAgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIFdU
Rk1vdmUoY2Fpcm9HbHlwaHMpLCB4T2Zmc2V0LCBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsCi0gICAg
ICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFk
b3dDb2xvciwgZm9udFNtb290aGluZykpOworICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3Ms
IHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBmb250U21v
b3RoaW5nKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQpAQCAtNTk5LDcgKzYwMSw3IEBAIHZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBi
b3JkZXJUaGlja25lCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsK
LSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNz
LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcikp
OworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlja25l
c3MsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ry
b2tlQnJ1c2guY29sb3IoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQy
KQpAQCAtNjIyLDcgKzYyNCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xp
bmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3Jl
YXRlQ29tbWFuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBz
dGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaG91bGRBbnRp
YWxpYXMpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2lu
dDIsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5z
dHJva2VUaGlja25lc3MsIHN0YXRlLnNob3VsZEFudGlhbGlhcykpOwogfQogCiB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ryb2tlU3R5bGUpCkBAIC02NDUsNyArNjQ3LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5l
c0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVy
bGluZXMsIHN0YXRlLnN0cm9rZUNvbG9yKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJh
d0xpbmVzRm9yVGV4dD4ocG9pbnQsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91Ymxl
VW5kZXJsaW5lcywgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkpOwogfQogCiB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKQEAgLTY4NCw3ICs2ODYs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwot
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdFbGxpcHNlPihyZWN0LCBzdGF0ZS5maWxsQ29s
b3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvciwgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0VsbGlwc2U+KHJlY3QsIHN0
YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1
c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB3aWR0
aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggODNjNmQyN2Q2ZWEz
NmM3OWJlYmQ3ODI1Zjk5YjdjNDM5MDhlZTU0Yi4uYjk1Mjg2MzEzNDMzMDAyZmFlNzJiZGU0Nzgw
ZDMyNTY4ZGM1ODFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdm9pZCBkaWRVcGRhdGVTdGF0ZShjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZVN0YXRl
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNl
dExpbmVDYXAoV2ViQ29yZTo6TGluZUNhcCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMaW5lRGFz
aChjb25zdCBXZWJDb3JlOjpEYXNoQXJyYXkmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCA3ZWQ1MzdjOTI3
OTM3NzBmNDQ4OGFlMjlkZjQwNzI3ZDdlYjFhM2E5Li42MTc4YWViMWM4NzYzNzcyMTk1ZjllNDQ3
NjEwZTQ5MGU3NjRmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6
OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiBzdGF0aWMgdm9pZCB1
c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYg
KGF1dG8gZ3JhZGllbnQgPSBjb250ZXh0LnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAgIGNvbnRl
eHQuc2V0RmlsbEdyYWRpZW50KCpncmFkaWVudCwgY29udGV4dC5zdGF0ZSgpLnN0cm9rZUdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3Jh
ZGllbnQsIGNvbnRleHQuc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICBlbHNl
IGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkpCiAgICAgICAg
IGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAppbmRleCA1NDM4MTgyZGRlODc2M2ViYWQzOGYxOTJkZjc5NWFhMDYw
YjY1MWJiLi45ZTM3ODZlMGZkY2RiODlmYjA2NjI4YzhmY2M2ZGM4N2I3N2MzZTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjgsMTAgKzEyOCwxMCBAQCB2b2lkIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0
ZW0pCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAKLSAgICBpZiAoIWZpeFBhdHRlcm5U
aWxlSW1hZ2UoaXRlbS5zdGF0ZUNoYW5nZSgpLm1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSkp
CisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5maWxsQnJ1c2gucGF0
dGVybigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdl
KGl0ZW0uc3RhdGVDaGFuZ2UoKS5tX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKSkKKyAgICBpZiAo
IWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggODU3N2NiYmRl
NmQzOTAxZDM0NzA3NjFlZDMwZjc5ZDk4ZTgyYjk4ZC4uOWJhZjlhMzVjOTcwZjliNzUxMDMwNTZj
YjViZDc4MTZhZWNhZDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5OjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OlNldFN0cm9rZVRoaWNr
bmVzcyh0aGlja25lc3MpKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHk6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXI6OlNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSB7IHN0YXRlLCBmbGFncyB9
KSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6U2V0U3Rh
dGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlIHsgc3RhdGUgfSkpOwogfQogCiB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCA5YjMzYTA2
N2ZkMTZiY2NmMTQwNDJjMTk3NGRkNjkxOTQyMjYyNDY4Li5iZWQzNjNlMDYyNDUzNTI3ZjlhMDYy
MDg4Y2U2NzdjMmI5OTIyNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZFNldElu
bGluZUZpbGxDb2xvcihXZWJDb3JlOjpTUkdCQTx1aW50OF90PikgZmluYWw7CiAgICAgdm9pZCBy
ZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihXZWJDb3JlOjpTUkdCQTx1aW50OF90PikgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZpbmFsOwotICAgIHZv
aWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUNhcChXZWJDb3JlOjpMaW5lQ2FwKSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IFdlYkNvcmU6OkRhc2hBcnJh
eSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4o
V2ViQ29yZTo6TGluZUpvaW4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxNjZhNTM5YzcxMmM0Yzc0ZWU2NmQ0NjE2NWRmMjRiYzE3
ZjllOGMuLjg5MTkxNDhiMzVjNjcxY2FiYzY5ZTBiNmRmMjVkOTY0NThkZTUyZTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMi0wMy0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBv
ZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisgICAgICAgIHJkYXI6Ly85MDU4NTE4Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAzLTE3ICBKb25hdGhhbiBCZWRhcmQg
IDxKb25XQmVkYXJkQGdtYWlsLmNvbT4KIAogICAgICAgICBjb25maWd1cmUteGNvZGUtZm9yLWVt
YmVkZGVkLWRldmVsb3BtZW50IGZhaWxzIHdpdGggWGNvZGUgMTMuMwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0dyYXBoaWNzQ29udGV4
dFRlc3RzQ0cuY3BwCmluZGV4IDI0NzM1ODBmMTkwZTBmZDY3NGMzNjdkYTQ3YzlmMTkyYmEyNDg1
ZTQuLjIxNWMxN2M2NjU3YWVkYTZhNmUyY2QwYWUwYzljOTI2ZjNiZDgyYjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9HcmFwaGljc0NvbnRleHRUZXN0
c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvR3JhcGhp
Y3NDb250ZXh0VGVzdHNDRy5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgVEVTVChHcmFwaGljc0NvbnRl
eHRUZXN0cywgRHJhd05hdGl2ZUltYWdlRG9lc05vdExlYWtDb21wb3NpdGVPcGVyYXRvcikKICAg
ICBHcmFwaGljc0NvbnRleHRDRyBjdHgoY2dDb250ZXh0LmdldCgpKTsKIAogICAgIEVYUEVDVF9F
UShjdHguY29tcG9zaXRlT3BlcmF0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVy
KTsKLSAgICBFWFBFQ1RfRVEoY3R4LmJsZW5kTW9kZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5v
cm1hbCk7CisgICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGUoKSwgQmxlbmRNb2RlOjpOb3JtYWwp
OwogCiAgICAgYXV0byBncmVlblBpeGVsQ0cgPSBncmVlbkltYWdlKCk7CiAgICAgYXV0byBncmVl
blBpeGVsTmF0aXZlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShncmVlblBpeGVsQ0cuZ2V0KCkpOwpA
QCAtNzEsNyArNzEsNyBAQCBURVNUKEdyYXBoaWNzQ29udGV4dFRlc3RzLCBEcmF3TmF0aXZlSW1h
Z2VEb2VzTm90TGVha0NvbXBvc2l0ZU9wZXJhdG9yKQogICAgIEVYUEVDVF9FUShwcmltYXJ5RGF0
YVsyXSwgMCk7CiAKICAgICBFWFBFQ1RfRVEoY3R4LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBDb21w
b3NpdGVPcGVyYXRvcjo6U291cmNlT3Zlcik7Ci0gICAgRVhQRUNUX0VRKGN0eC5ibGVuZE1vZGVP
cGVyYXRpb24oKSwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIEVYUEVDVF9FUShjdHguYmxlbmRN
b2RlKCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQxYTNkYWZmN2Y5NjNiOTVhZDY1YjgwYjA1MzRkY2Q2ZTAxZTZjMWEuLjVk
YzVmYjk4NzAwM2E4NTBlYzMxMTU5MjYxNjVmMzY0YTk5OWRmOGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMi0wMy0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFj
ayBvZiBjaGFuZ2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY2CisgICAgICAgIHJkYXI6Ly85MDU4NTE4
MworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGRpc3Bs
YXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBk
aXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMy0xNyAgTWF0dGVv
IEZsb3JlcyAgPG1hdHRlb19mbG9yZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI5MTEyOS1yMjkxMTI4KTogW1dLMSBFV1NdIDMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWItYW5pbWF0aW9ucy9hbmltYXRpb24tbW9kZWwvYW5pbWF0aW9uLXR5cGVzLyogdGVz
dHMgYXJlIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
aXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKaW5k
ZXggNTExYjdjMGM1NGQzMzIxNmI3YzZlYWYwNDNhNzVjMTY3NjZkMDQyNy4uYjI5ZmUyZjUzOWFk
OTY2ZjUwMmE1M2I3Mzc5MWVmZTE0YTBlOWNiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlz
cGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtc2hhZG93LWV4cGVjdGVkLnR4dApA
QCAtNCwxMSArNCwxMiBAQAogICAoeSAwLjAwKSkKIChzYXZlKQogKHNldC1zdGF0ZQotICAoY2hh
bmdlLWZsYWdzIDUxMikKLSAgKHNoYWRvdy1ibHVyIDEyLjAwKQotICAoc2hhZG93LW9mZnNldCB3
aWR0aD0xMCBoZWlnaHQ9MjApCi0gIChzaGFkb3ctY29sb3IgIzAwMDAwMCkKLSAgKHNoYWRvd3Mt
dXNlLWxlZ2FjeS1yYWRpdXMgMCkpCisgIChjaGFuZ2UtZmxhZ3MgW2Ryb3Atc2hhZG93XSkKKyAg
KGRyb3Atc2hhZG93CisgICAgKHNoYWRvdy1vZmZzZXQgd2lkdGg9MTAgaGVpZ2h0PTIwKQorICAg
IChzaGFkb3ctYmx1ciAxMi4wMCkKKyAgICAoc2hhZG93LWNvbG9yICMwMDAwMDApCisgICAgKHNo
YWRvd3MtdXNlLWxlZ2FjeS1yYWRpdXMgMCkpKQogKGZpbGwtY29tcG9zaXRlZC1yZWN0CiAgIChy
ZWN0IGF0ICg1MCw1MCkgc2l6ZSAxMDB4MTAwKQogICAoY29sb3IgIzAwMDBGRikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRy
YW5zZm9ybXMtZXhwZWN0ZWQudHh0CmluZGV4IDM4NmUzOTQxMTg1ZjA5YTNjNjhlYzZjMmFlODhk
ZjExYzcwYjBhNjkuLjFkY2FiYmU3Y2UwNWJjYmU5NGUyMzM2NGViZTI5ZWE3NmZmMGY1OTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNm
b3Jtcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2V4dGVudC1p
bmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dApAQCAtNiwxMSArNiwxMiBAQAogICAoY3Rt
IHttPSgoMC44NywwLjUwKSgtMC41MCwwLjg3KSkgdD0oODEuNzAsLTE4LjMwKX0pKQogKHNhdmUp
CiAoc2V0LXN0YXRlCi0gIChjaGFuZ2UtZmxhZ3MgNTEyKQotICAoc2hhZG93LWJsdXIgMTIuMDAp
Ci0gIChzaGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKLSAgKHNoYWRvdy1jb2xvciAj
MDAwMDAwKQotICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkKKyAgKGNoYW5nZS1mbGFn
cyBbZHJvcC1zaGFkb3ddKQorICAoZHJvcC1zaGFkb3cKKyAgICAoc2hhZG93LW9mZnNldCB3aWR0
aD0xMCBoZWlnaHQ9MjApCisgICAgKHNoYWRvdy1ibHVyIDEyLjAwKQorICAgIChzaGFkb3ctY29s
b3IgIzAwMDAwMCkKKyAgICAoc2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyAwKSkpCiAoZmlsbC1j
b21wb3NpdGVkLXJlY3QKICAgKHJlY3QgYXQgKDAsMCkgc2l6ZSAxMDB4MTAwKQogICAoY29sb3Ig
IzAwMDBGRikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNw
YXktbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlz
cGF5LWxpc3QtZXhwZWN0ZWQudHh0CmluZGV4IGJjMTdiNTExNDk5ZjgyNTZjOTkyOTBkYWU4NjE0
ZDQ4OTRjYWY5Y2MuLmFkY2M1MDZjZTQyZTBhZjE3MzJkZmRhN2Y3YzgxMWQ1ZWFmNDNlNmMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0
LWV4cGVjdGVkLnR4dApAQCAtOCw5ICs4LDEwIEBACiAgIChjb21wb3NpdGUtb3BlcmF0aW9uIHNv
dXJjZS1vdmVyKQogICAoYmxlbmQtbW9kZSBub3JtYWwpIGV4dGVudCBhdCAoMCwwKSBzaXplIDEw
NHgxMDQpCiAoc2V0LXN0YXRlCi0gIChjaGFuZ2UtZmxhZ3MgMzI5NjApCi0gIChmaWxsLWNvbG9y
ICMwMDAwRkYpCi0gIChzdHJva2Utc3R5bGUgMCkKKyAgKGNoYW5nZS1mbGFncyBbZmlsbC1icnVz
aCwgc3Ryb2tlLXN0eWxlLCBzaG91bGQtYW50aWFsaWFzXSkKKyAgKGZpbGwtYnJ1c2gKKyAgICAo
Y29sb3IgIzAwMDBGRikpCisgIChzdHJva2Utc3R5bGUgbm8tc3Ryb2tlKQogICAoc2hvdWxkLWFu
dGlhbGlhcyAwKSkKIChkcmF3LXJlY3QKICAgKHJlY3QgYXQgKDAsMCkgc2l6ZSAxMDR4MikKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNjOWYyMWIzZGUzYzE4
OTFlNWZhZTEyYmY1YjY4MGMwOGQ5NWJkYWQuLmI3YmYxZWRlZDkzYWYyMWQxZmQ0ZGVjNDhjN2Yx
NTZkOWM4ZGFmYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMSwyMSArMSwxMSBAQAogIyBHb29kIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGxvb2sgYXQgdGhl
IGJvdHMgb24gcmVzdWx0cy53ZWJraXQub3JnIGZpcnN0CiAKICMgSW5jb3JyZWN0IHNpemUKLXdl
YmtpdC5vcmcvYi8yMzY5MDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvbnRhaW4vY29udGFpbi1zaXplLWJyZWFrcy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIzNjkwNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdGV4dC9saW5lLWJyZWFrL2xpbmUtYnJlYWstYW55d2hlcmUtYW5kLXdoaXRlLXNwYWNl
LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMzY5MDYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd2hpdGUtc3BhY2Uv
YnJlYWstc3BhY2VzLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5v
cmcvYi8yMzY5MDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQv
d2hpdGUtc3BhY2UvYnJlYWstc3BhY2VzLXdpdGgtb3ZlcmZsb3ctd3JhcC0wMDQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgUGFzcyBdCiAKICMgVGhlcmUgaXMgdGV4dCBpbi9uZWFyIHRoZSBib3gK
LXdlYmtpdC5vcmcvYi8yMzY5MDcgZmFzdC9zaGFkb3ctZG9tL250aC1ub2RlLW9uLXNoYWRvdy1j
aGlsZC1pbnZhbGlkYXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkwNyBmYXN0L3NoYWRvdy1kb20vbnRoLW5vZGUtb24tc2hhZG93LWNoaWxkLW5vLWppdC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGZhc3Qvc2hhZG93
LWRvbS9udGgtbm9kZS1vbi1zaGFkb3ctY2hpbGQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkwNyBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNs
b3Qtc3R5bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2NvcGluZy9jc3Mtc2NvcGlu
Zy1zaGFkb3ctc2xvdC1zdHlsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTA3IG1hdGhtbC9wcmVzZW50YXRpb24vbXJvb3QtcHJlZi13aWR0aC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTA3IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWluL2NvbnRhaW4tc2l6ZS1tdWx0aWNvbC0wMDEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkwNyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29udGFpbi9jb250YWluLXNpemUtbXVsdGljb2wt
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MDcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1zaXplLW11
bHRpY29sLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTA3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2Nzcy1mbGV4
Ym94LXRlc3QxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBNaXNwbGFjZWQgdGV4dApA
QCAtMzcsNjAgKzI3LDcgQEAgd2Via2l0Lm9yZy9iLzIzNjkxMiBodHRwL3dwdC9jc3MvY3NzLWhp
Z2hsaWdodC1hcGkvaGlnaGxpZ2h0LXRleHQtZGVjb3JhdGlvbnMuaHQKIAogIyBXcm9uZyB0ZXh0
IGNvbG9yCiB3ZWJraXQub3JnL2IvMjM2OTEzIGZhc3QvY3NzL3ZhcmlhYmxlcy90ZXN0LXN1aXRl
LzAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMg
aW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC9keW5hbWljL2luc2VydC1zcGFubmVyLWFmdGVy
LWNvbnRlbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBp
bXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL2R5bmFtaWMvaW5zZXJ0LXNwYW5uZXItYmVmb3Jl
LWNvbnRlbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxMyBp
bXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL2R5bmFtaWMvaW5zZXJ0LXNwYW5uZXItYWZ0ZXIt
c3Bhbm5lci1iZWZvcmUtY29udGVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtbHIvZmxv
YXQtY29udGVudC1icmVhay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTEzIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtcmwvZmxvYXQtY29u
dGVudC1icmVhay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTEz
IGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvdGFsbC1saW5lLWluLXNob3J0LWJsb2NrLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29udGFpbi1sYXlvdXQtc3VwcHJl
c3MtYmFzZWxpbmUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbnRhaW4vY29u
dGFpbi1zaXplLWJsb2NrLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTEzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb250YWlu
L2NvbnRhaW4tc2l6ZS1ibG9jay0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxl
eGJveC9mbGV4Ym94X3Jvd3NwYW4tb3ZlcmZsb3ctYXV0b21hdGljLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvZmxleGJveF9yb3dzcGFuLW92ZXJmbG93Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWZvbnRzL2ZpcnN0LWF2YWlsYWJsZS1mb250LTAwNy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KLSMgTm90IGEgZ3JlZW4gbGluZSBvbiB0aGUgbGVmdCBzaWRl
IG9mIGEgeWVsbG93IHNxdWFyZQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRv
Y3VtZW50LXN0eWxlcy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0
eWxlcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVu
dC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMv
c3ZnLWRvY3VtZW50LXN0eWxlcy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMDcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3Vt
ZW50LXN0eWxlcy0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9k
b2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTAuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxl
cy0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1z
dHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9kb2N1bWVudC1zdHlsZXMvc3ZnLWRvY3VtZW50LXN0eWxlcy0wMTMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3Zn
LWV4dGVybmFsLXN0eWxlcy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFs
LXN0eWxlcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRl
cm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0w
MDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHls
ZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMDcuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4
dGVybmFsLXN0eWxlcy0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMTAuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5hbC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0
eWxlcy0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9leHRlcm5h
bC1zdHlsZXMvc3ZnLWV4dGVybmFsLXN0eWxlcy0wMTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3ZnLWlu
bGluZS1zdHlsZXMtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
aW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAwNC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMvc3Zn
LWlubGluZS1zdHlsZXMtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMDYuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVzLTAw
Ny5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHlsZXMv
c3ZnLWlubGluZS1zdHlsZXMtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMTAuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9pbmxpbmUtc3R5bGVzL3N2Zy1pbmxpbmUtc3R5bGVz
LTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE0IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2lubGluZS1zdHls
ZXMvc3ZnLWlubGluZS1zdHlsZXMtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvaW5saW5lLXN0eWxlcy9zdmctaW5saW5lLXN0eWxlcy0wMTMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotCi0jIFRoZXJlIGlzIHJlZAotd2Via2l0Lm9yZy9iLzIzNjkxNSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9ncmFkaWVudFRy
YW5zZm9ybS9zdmctZ3JhZGllbnRUcmFuc2Zvcm0tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvZ3JhZGllbnRUcmFuc2Zvcm0vc3ZnLWdyYWRpZW50VHJhbnNmb3Jt
LWNvbWJpbmF0aW9uLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L2dyYWRpZW50VHJhbnNmb3JtL3N2Zy1ncmFkaWVudFRyYW5zZm9ybS1jb21iaW5hdGlvbi0wMDMu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRoZXJlIGFyZSBzbWFsbCByZWN0YW5nbGVz
IG9yIGNoYXJhY3RlcnMgYmVsb3cgbWFpbiBjaGFyYWN0ZXIKIHdlYmtpdC5vcmcvYi8yMzY5MTYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9jaC11bml0LTAx
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0xMDEsMTUyICszOCw2IEBAIHdlYmtpdC5v
cmcvYi8yMzY5MTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVl
cy9pYy11bml0LTAxMC5oCiB3ZWJraXQub3JnL2IvMjM2OTE2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy12YWx1ZXMvaWMtdW5pdC0wMTEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdmFsdWVzL2ljLXVuaXQtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IAotIyBUcmFuc2Zvcm0gZmFpbHVyZXMKLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2Vw
YXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmct
dHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxp
c3Qtc2VwYXJhdGlvbnMtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlv
bnMtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA1Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJh
dGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJh
bnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qt
c2VwYXJhdGlvbnMtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMt
MDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxp
c3Qtc2VwYXJhdGlvbi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDEwLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlv
bi9zdmctdHJhbnNmb3JtLWxpc3Qtc2VwYXJhdGlvbnMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtMDAzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLWxlbmd0aC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgt
MDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLWxlbmd0aC0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLTAwOC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1sZW5ndGgtY20tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1jbS0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4t
bGVuZ3RoLWNtLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtY20tMDA0Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0
aC1jbS0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtaW4t
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLWxlbmd0aC1pbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLWluLTAwNC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1sZW5ndGgtaW4tMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLWxlbmd0aC1wdC0wMDEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tbGVuZ3RoLXB0LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1sZW5ndGgtcHQtMDAzLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LWxlbmd0aC1wdC0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tbGVuZ3RoLXB0LTAwNS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxh
dGl2ZS1sZW5ndGgtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmln
aW4tcmVsYXRpdmUtbGVuZ3RoLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDA0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9z
dmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3Ro
LTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1v
cmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFu
c2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAwOS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1y
ZWxhdGl2ZS1sZW5ndGgtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1v
cmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDEz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdp
bi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVu
Z3RoLTAxNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9y
bS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDE2Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0
aXZlLWxlbmd0aC0wMTcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAxOC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdp
bi1yZWxhdGl2ZS1sZW5ndGgtMDE5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjAuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgt
MDIyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9y
aWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUt
bGVuZ3RoLTAyNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC0wMjYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jt
cy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAyNy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9y
aWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDI4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMjku
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2lu
L3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtMDMxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wMzIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRp
dmUtbGVuZ3RoLTAzMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2lu
LXJlbGF0aXZlLWxlbmd0aC0wMzUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNm
b3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzNi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3Zn
LW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDM3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0w
MzguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTAzOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1s
ZW5ndGgtMDQwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNm
b3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0aC0wNDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVs
YXRpdmUtbGVuZ3RoLTA0Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1z
L3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC0wNDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLTA0NS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4v
c3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtMDQ2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZlLWxlbmd0
aC1pbnZhbGlkLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3Ry
YW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0wMDIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3JpZ2luL3N2
Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJlbGF0aXZl
LWxlbmd0aC1pbnZhbGlkLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52YWxpZC0w
MDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tb3Jp
Z2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA2Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3JpZ2luLXJl
bGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5ndGgtaW52
YWxpZC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDA5Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLW9yaWdpbi9zdmctb3Jp
Z2luLXJlbGF0aXZlLWxlbmd0aC1pbnZhbGlkLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM2OTE4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS1vcmlnaW4vc3ZnLW9yaWdpbi1yZWxhdGl2ZS1sZW5n
dGgtaW52YWxpZC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tb3JpZ2luL3N2Zy1vcmlnaW4tcmVsYXRpdmUtbGVuZ3RoLWludmFsaWQtMDEyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBNdWx0aWNvbCBmYWlsdXJlcwotd2Via2l0Lm9y
Zy9iLzIzNjkxOSBpZXRlc3RjZW50ZXIvY3NzMy9tdWx0aWNvbHVtbi9jb2x1bW4tY29udGFpbmlu
Zy1ibG9jay0wMDMuaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNv
bC1ibG9jay1uby1jbGlwLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29s
L211bHRpY29sLWJsb2NrLW5vLWNsaXAtMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtY2xpcC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
dWx0aWNvbC9tdWx0aWNvbC1jbGlwLTAwMi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11
bHRpY29sL211bHRpY29sLWNvbHVtbnMtaW52YWxpZC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb2x1bW5zLWludmFsaWQtMDAyLnhodCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY29sdW1ucy10b29sb25nLTAwMS54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWNvbnRhaW5pbmct
MDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtY29udGFp
bmluZy0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1j
b3VudC1uZWdhdGl2ZS0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1jb3VudC1uZWdhdGl2ZS0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
dWx0aWNvbC9tdWx0aWNvbC1jb3VudC1ub24taW50ZWdlci0wMDEueGh0IFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1ub24taW50ZWdlci0wMDIueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1jb3VudC1ub24taW50ZWdl
ci0wMDMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1maWxs
LWF1dG8tMDAyLnhodCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCi13ZWJraXQub3JnL2IvMjM2
OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0
aWNvbC1maWxsLWF1dG8tMDAzLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wv
bXVsdGljb2wtZmlsbC1hdXRvLWJsb2NrLWNoaWxkcmVuLTAwMS54aHQgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWZpbGwtYmFsYW5jZS0wMDEueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1nYXAtMDAyLnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZ2FwLTAwMy54aHQgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWdhcC1sYXJnZS0wMDEueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1nYXAtbGFyZ2UtMDAyLnhodCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtZ2FwLW5lZ2F0aXZlLTAwMS54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLWhlaWdodC0wMDEu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1oZWlnaHQtYmxv
Y2stY2hpbGQtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGlj
b2wtbWFyZ2luLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5
MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRp
Y29sLW1hcmdpbi0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0
aWNvbC1tYXJnaW4tMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211
bHRpY29sLW1hcmdpbi1jaGlsZC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1uZXN0ZWQtY29sdW1uLXJ1bGUtMDAxLnhodCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtb3ZlcmZsb3dpbmctMDAxLnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS0wMDMueGh0IFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxlLWNvbG9yLTAwMS54aHQgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXJ1bGUtZnJhY3Rpb24tMDAxLnho
dCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtcnVsZS1mcmFjdGlv
bi0wMDIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1ydWxl
LWxhcmdlLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29s
LXJ1bGUtcGVyY2VudC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1ydWxlLXNhbWVsZW5ndGgtMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtcnVsZS1zaG9ydGhhbmQtMDAxLnhodCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtMDAxLnhodCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtMDAyLnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtMDAzLnhodCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtbWFyZ2luLTAwMS54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwYW4tYWxsLW1h
cmdpbi1ib3R0b20tMDAxLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
NjkxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVs
dGljb2wtc3Bhbi1mbG9hdC0wMDEueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNv
bC9tdWx0aWNvbC10YWJsZS1jZWxsLXZlcnRpY2FsLWFsaWduLTAwMS54aHQgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXdpZHRoLXNtYWxsLTAwMS54aHQgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0aW9uL211bHRpY29sL3Zsci1sdHItbHRyLWluLW11bHRp
Y29scy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTE5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wb3NpdGlvbi9tdWx0aWNvbC92cmwt
bHRyLWx0ci1pbi1tdWx0aWNvbHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIENTUyBT
aGFwZXMgZmFpbHVyZXMKIHdlYmtpdC5vcmcvYi8yMzY5MjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNoYXBlcy9zaGFwZS1vdXRzaWRlL3NoYXBlLWltYWdlL3NoYXBl
LWltYWdlLTAwMi5odG1sCiB3ZWJraXQub3JnL2IvMjM2OTIwIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFwZXMvc2hhcGUtb3V0c2lkZS9zaGFwZS1pbWFnZS9zaGFw
ZS1pbWFnZS0wMDMuaHRtbApAQCAtMjgyLDI1ICs3Myw5IEBAIHdlYmtpdC5vcmcvYi8yMzY5MjIg
c3lzdGVtLXByZXZpZXcvYmFkZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogIyBOby9iYWQg
Y29sb3JlZCBib3hlcwogd2Via2l0Lm9yZy9iLzIzNjkyMyBmYXN0L2Nzcy9wYWludC1vcmRlci1z
aGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBv
cnRlZC9ibGluay9zdmcvdGV4dC9vYmItcGFpbnRzZXJ2ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21hdGhtbC9yZWxhdGlvbnMvY3NzLXN0eWxpbmcvY29sb3ItMDA1Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXBvc2l0aW9uL3N0aWNreS9wb3NpdGlvbi1zdGlja3ktaW5saW5lLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MjMgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBvc2l0aW9uL3N0aWNreS9wb3NpdGlvbi1zdGlja3kt
d3JpdGluZy1tb2Rlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTIzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12YXJpYWJsZXMvdmFy
cy1mb250LXNob3J0aGFuZC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIE5vL2Jh
ZCBncmFkaWVudC9wYXR0ZXJuCi13ZWJraXQub3JnL2IvMjM2OTI0IGltcG9ydGVkL21vemlsbGEv
c3ZnL2xpbmVhckdyYWRpZW50LWJhc2ljLTAzLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIzNjkyNCBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYXR0ZXJuLXRyYW5zZm9ybWVk
LTAxLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjkyNCBzdmcvZ3Jh
ZGllbnRzL2dyYWRpZW50LWZsaXBwZWQtc3RhcnQtZW5kLXBvaW50cy5zdmcgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2Qu
c3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVu
dHMvc3ByZWFkTWV0aG9kQWxwaGEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0aG9kRGlhZ29uYWwuc3ZnIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9ncmFkaWVudHMvc3ByZWFkTWV0
aG9kRGlhZ29uYWwyLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzNjky
NCBzdmcvZ3JhZGllbnRzL3NwcmVhZE1ldGhvZERpYWdvbmFsMy5zdmcgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2REaWFn
b25hbDQuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy9n
cmFkaWVudHMvc3ByZWFkTWV0aG9kRHVwbGljYXRlU3RvcC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRpZW50cy9zcHJlYWRNZXRob2RSZXZlcnNl
ZC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzY5MjQgc3ZnL2dyYWRp
ZW50cy9zdG9wQWxwaGEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM2
OTI0IHN2Zy90cmFuc2Zvcm1zL3RyYW5zZm9ybWVkLXRleHQtZmlsbC1ncmFkaWVudC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTI0IHN2Zy90cmFuc2Zvcm1zL3Ry
YW5zZm9ybWVkLXRleHQtZmlsbC1wYXR0ZXJuLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAog
IyBNZWRpYSBmYWlsdXJlcwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>