<?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>231411</bug_id>
          
          <creation_ts>2021-10-07 21:51:13 -0700</creation_ts>
          <short_desc>[GPU Process] Unique RenderingResourceIdentifiers Part 8: Consolidate DisplayList::ResourceHeap</short_desc>
          <delta_ts>2021-10-12 01:05:26 -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>217638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801925</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 21:51:13 -0700</bug_when>
    <thetext>Consolidate DisplayList::ResourceHeap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801926</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 21:51:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/84013167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801930</commentid>
    <comment_count>2</comment_count>
      <attachid>440573</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 22:31:27 -0700</bug_when>
    <thetext>Created attachment 440573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801932</commentid>
    <comment_count>3</comment_count>
      <attachid>440574</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 22:34:34 -0700</bug_when>
    <thetext>Created attachment 440574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801935</commentid>
    <comment_count>4</comment_count>
      <attachid>440574</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 22:43:27 -0700</bug_when>
    <thetext>Comment on attachment 440574
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:44
&gt; +    using ImageBufferHashMap = HashMap&lt;RenderingResourceIdentifier, Ref&lt;ImageBuffer&gt;&gt;;
&gt; +    using NativeImageHashMap = HashMap&lt;RenderingResourceIdentifier, Ref&lt;NativeImage&gt;&gt;;
&gt; +    using FontRenderingResourceMap = HashMap&lt;RenderingResourceIdentifier, Ref&lt;Font&gt;&gt;;
&gt; +
&gt; +    ResourceHeap() = default;

These are unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801940</commentid>
    <comment_count>5</comment_count>
      <attachid>440575</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 23:33:04 -0700</bug_when>
    <thetext>Created attachment 440575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802144</commentid>
    <comment_count>6</comment_count>
      <attachid>440639</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-08 10:27:43 -0700</bug_when>
    <thetext>Created attachment 440639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802969</commentid>
    <comment_count>7</comment_count>
      <attachid>440639</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-11 21:39:22 -0700</bug_when>
    <thetext>Comment on attachment 440639
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:115
&gt; +    HashMap&lt;RenderingResourceIdentifier, Ref&lt;ImageBuffer&gt;&gt; m_imageBuffers;
&gt; +    HashMap&lt;RenderingResourceIdentifier, Ref&lt;NativeImage&gt;&gt; m_nativeImages;
&gt; +    HashMap&lt;RenderingResourceIdentifier, Ref&lt;Font&gt;&gt; m_fonts;

Did you consider HashMap&lt;RenderingResourceIdentifier, Variant&lt;....&gt;&gt; ? An identifier will never be shared between these types, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802978</commentid>
    <comment_count>8</comment_count>
      <attachid>440639</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 22:09:15 -0700</bug_when>
    <thetext>Comment on attachment 440639
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:115
&gt;&gt; +    HashMap&lt;RenderingResourceIdentifier, Ref&lt;Font&gt;&gt; m_fonts;
&gt; 
&gt; Did you consider HashMap&lt;RenderingResourceIdentifier, Variant&lt;....&gt;&gt; ? An identifier will never be shared between these types, right?

```
static_assert failed: For conversion construction of variants, exactly one type must be constructible
```

😭</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802983</commentid>
    <comment_count>9</comment_count>
      <attachid>440639</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 22:31:40 -0700</bug_when>
    <thetext>Comment on attachment 440639
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:115
&gt;&gt;&gt; +    HashMap&lt;RenderingResourceIdentifier, Ref&lt;Font&gt;&gt; m_fonts;
&gt;&gt; 
&gt;&gt; Did you consider HashMap&lt;RenderingResourceIdentifier, Variant&lt;....&gt;&gt; ? An identifier will never be shared between these types, right?
&gt; 
&gt; ```
&gt; static_assert failed: For conversion construction of variants, exactly one type must be constructible
&gt; ```
&gt; 
&gt; 😭

Whoops, ignore that, I got it to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802985</commentid>
    <comment_count>10</comment_count>
      <attachid>440892</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 22:39:48 -0700</bug_when>
    <thetext>Created attachment 440892
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803001</commentid>
    <comment_count>11</comment_count>
      <attachid>440897</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 23:34:55 -0700</bug_when>
    <thetext>Created attachment 440897
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803018</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 01:05:26 -0700</bug_when>
    <thetext>Committed r283971 (242818@main): &lt;https://commits.webkit.org/242818@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440573</attachid>
            <date>2021-10-07 22:31:27 -0700</date>
            <delta_ts>2021-10-07 22:34:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>38325</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMTBmMjk1Zjg1MTcuLjc2MGZlMDFiZTE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY4IEBACisyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVycyBQYXJ0IDY6IENvbnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzcGxheSBsaXN0cyBuZWVkIHRvIGJlIHJl
cGxheWVkIHdpdGhpbiBhIGNvbnRleHQsIGFuZCB0aGF0IGNvbnRleHQgaW5jbHVkZXMgYSBjb2xs
ZWN0aW9uIG9mIHJlc291cmNlcworICAgICAgICB0aGF0IHRoZSBkaXNwbGF5IGxpc3QgaXRlbXMg
bWlnaHQgcmVmZXJlbmNlLiBGb3IgZXhhbXBsZSwgaWYgdGhlcmUncyBhIGRpc3BsYXkgbGlzdCBp
dGVtIHRoYXQgc2F5cyB0byBkcmF3CisgICAgICAgIGFuIGltYWdlLCB0aGUgaW1hZ2UgbmVlZHMg
dG8gYmUgcHJlc2VudCBpbiB0aGUgY29sbGVjdGlvbi4KKworICAgICAgICBXZSB3ZXJlIHJlcHJl
c2VudGluZyB0aGlzIGNvbGxlY3Rpb24gb2YgcmVzb3VyY2VzIGFzIDMgaW5kZXBlbmRlbnQgSGFz
aE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFQ+cy4KKyAgICAgICAgVGhpcyBpcyBr
aW5kIG9mIHVuZm9ydHVuYXRlLCBiZWNhdXNlIGl0IG1lYW5zIDMgb2JqZWN0cyBhcmUgcGFzc2Vk
IGFyb3VuZCBpbiBwYXJhbGxlbCBhcyBhcmd1bWVudHMgdG8gdGhlCisgICAgICAgIHJlbGV2YW50
IHBsYWNlcyB3aGljaCBuZWVkIHRoZW0uIEl0J3MgbW9yZSBlbGVnYW50IHRvIHdyYXAgYW4gb2Jq
ZWN0IGFyb3VuZCB0aGVzZSAzIEhhc2hNYXBzLCB0byBhdm9pZAorICAgICAgICBwb2xsdXRpbmcg
ZnVuY3Rpb25zJyBwYXJhbWV0ZXIgbGlzdHMuCisKKyAgICAgICAgTm90IG9ubHkgdGhhdCwgYnV0
IHRoZSBHUFUgcHJvY2VzcyBkb2Vzbid0IHdhbnQgdGhlIGtleSB0byB0aGVzZSBIYXNoTWFwcyB0
byBiZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzLgorICAgICAgICBJbnN0ZWFkLCB0aGUg
R1BVIHByb2Nlc3Mgd2FudHMgdGhlIGtleSB0byBiZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXJzIChzZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzYzOCkuIFdyYXBwaW5nIGFuIG9iamVjdCBhcm91bmQgdGhlc2UgSGFzaE1h
cHMgYWxsb3dzIGEgbGF5ZXIgb2YKKyAgICAgICAgaW5kaXJlY3Rpb24sIHdoZXJlIHRoZSBHUFUg
cHJvY2VzcyBjYW4gaW1wbGVtZW50IHRoZSBpbnRlcmZhY2Ugb2YgdGhpcyBvYmplY3QsIGJ1dCBp
bnRlcm5hbGx5IHJlcHJlc2VudCB0aGUKKyAgICAgICAgSGFzaE1hcHMgdXNpbmcgZGlmZmVyZW50
IGtleXMuIFdlYkNvcmUgc2hvdWxkbid0IGtub3cgYWJvdXQgUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVycywgc28gdGhpcworICAgICAgICBsYXllciBvZiBpbmRpcmVjdGlvbiBp
cyBuZWNlc3NhcnkgZm9yIHRoYXQgZ29hbC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjptX25hdGl2ZUltYWdlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OnJlc291cmNlSGVhcCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aW1hZ2VCdWZmZXJz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Zm9udHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6YWRkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6Omdl
dE5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNv
dXJjZUhlYXA6OmdldEZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1v
dmVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VI
ZWFwOjpyZW1vdmVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJj
ZUhlYXA6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmRlbGV0ZUFsbEZvbnRzKToKKwogMjAyMS0xMC0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFNoYWRvd2luZyBvZiBAZm9udC1wYWxldHRl
LXZhbHVlcyBydWxlcyBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWNmYTJiZjYwYTkuLjA1ZmQzMGFjMTAx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNjUwLDYgKzY1MCw3IEBACiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBX
ZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICov
OyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0
ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0FGNTZEQjI1MzAxQUM4
MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGNTZEODI1MzAxNDU3MDAxN0I0NzIgLyogRHJhd0ds
eXBoc1JlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMUNCRjkwMEYyNzBGRjhGNjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VI
ZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JG
OTAwRDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0M1NEFGRTI3MEY5
NkFFMDA1QkY4QkUgLyogUHJvY2Vzc1F1YWxpZmllZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNTRBRkIyNzBGOTJEQTAwNUJGOEJFIC8qIFByb2Nl
c3NRdWFsaWZpZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQ0NEODE1MDIyMzFGODNFMDA2NUZDMkIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE1MjU1MTQxNkZEMjM0RjAwM0Q3QURCIC8qIFdlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUNDREY1QkUx
OTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJB
RCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggKi87IH07CkBAIC03MDQ4LDYgKzcwNDksNyBA
QAogCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0Qg
LyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRp
b25UaGlja25lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RkIyMTdC
ODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxpbmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFVuZGVybGluZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0JGOTAw
RDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNDNTRBRkIyNzBGOTJEQTAwNUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvY2Vzc1F1YWxpZmllZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkMxOTkwMzMy
NDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTgyMDYsNiArMTgyMDgsNyBAQAogCQkJCTBGRTVGQkQxMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggKi8sCiAJCQkJMUNFODg2M0UyNjEwNUE1
RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovLAogCQkJCTFDRTg4NjNGMjYx
MDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi8sCisJCQkJMUNCRjkwMEQy
NzBGRjhGNjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGRpc3BsYXlsaXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0z
MTU2Myw2ICszMTU2Niw3IEBACiAJCQkJMUE4QTY0NjAxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxl
UGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJD
NTlGMzIwMzVGQ0UyMDAxMjIzNkIgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0NjMxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5VmFs
aWRhdGVNZXJjaGFudEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQ0JGOTAwRjI3MEZGOEY2
MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOEY2QkJEMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQThGNkJCRjBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdy
b3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBw
bGljYXRpb25DYWNoZUhvc3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCmluZGV4IGE3Y2NhYzEyMDdkNC4uOWZjNGVhODJlYmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0zOTEsOCArMzkxLDYgQEAgQUxX
QVlTX0lOTElORSBmbG9hdCBGb250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAog
ICAgIHJldHVybiB3aWR0aDsKIH0KIAotdXNpbmcgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwID0g
SGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxGb250Pj47Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxMzk3ODAxYjRkOGUuLjRiNzFk
MWQ2ZGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC0xNDIsNiArMTQyLDQgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwogCi11c2luZyBJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgUmVmPEltYWdlQnVmZmVyPj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
CmluZGV4IDQzNmI2YTU0M2RhYi4uNzkyYmRhNjk1MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTc1LDYgKzc1LDQgQEAgcHJpdmF0
ZToKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7CiB9OwogCi11c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj47Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGNiMjM1MzA3ZjhhYi4u
ZGZmNDE0NDI2MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTUyLDggKzUyLDcg
QEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcCgpIGNvbnN0CiAjZW5kaWYKIAogRGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0KERpc3BsYXlMaXN0JiYgb3RoZXIpCi0gICAgOiBtX2ltYWdlQnVmZmVycyhz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pKQotICAgICwgbV9uYXRpdmVJ
bWFnZXMoc3RkOjpleGNoYW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KSkKKyAgICA6IG1f
cmVzb3VyY2VIZWFwKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXNvdXJjZUhlYXAsIHsgfSkpCiAg
ICAgLCBtX2l0ZW1zKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cikpCiAgICAg
LCBtX2RyYXdpbmdJdGVtRXh0ZW50cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1F
eHRlbnRzLCB7IH0pKQogewpAQCAtNjksOCArNjgsNyBAQCBEaXNwbGF5TGlzdDo6fkRpc3BsYXlM
aXN0KCkgPSBkZWZhdWx0OwogCiBEaXNwbGF5TGlzdCYgRGlzcGxheUxpc3Q6Om9wZXJhdG9yPShE
aXNwbGF5TGlzdCYmIG90aGVyKQogewotICAgIG1faW1hZ2VCdWZmZXJzID0gc3RkOjpleGNoYW5n
ZShvdGhlci5tX2ltYWdlQnVmZmVycywgeyB9KTsKLSAgICBtX25hdGl2ZUltYWdlcyA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9uYXRpdmVJbWFnZXMsIHsgfSk7CisgICAgbV9yZXNvdXJjZUhlYXAg
PSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fcmVzb3VyY2VIZWFwLCB7IH0pOwogICAgIG1faXRlbXMg
PSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faXRlbXMsIG51bGxwdHIpOwogICAgIG1fZHJhd2luZ0l0
ZW1FeHRlbnRzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9
KTsKICAgICByZXR1cm4gKnRoaXM7CkBAIC04MSw4ICs3OSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6
OmNsZWFyKCkKICAgICBpZiAobV9pdGVtcykKICAgICAgICAgbV9pdGVtcy0+Y2xlYXIoKTsKICAg
ICBtX2RyYXdpbmdJdGVtRXh0ZW50cy5jbGVhcigpOwotICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFy
KCk7Ci0gICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIoKTsKKyAgICBtX3Jlc291cmNlSGVhcC5jbGVh
cigpOwogfQogCiBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0Rmxh
Z3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMjI2
ODRkYzM5OGUxLi5mMjQ1ZDBiNTExM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCIKICNpbmNsdWRl
ICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXNvdXJjZUhl
YXAuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC03Myw5ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBhc1RleHQoQXNUZXh0RmxhZ3MpIGNvbnN0OwogCi0gICAgY29uc3QgSW1hZ2VCdWZmZXJI
YXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQot
ICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1
cm4gbV9uYXRpdmVJbWFnZXM7IH0KLSAgICBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAm
IGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQorICAgIGNvbnN0IFJlc291cmNlSGVh
cCYgcmVzb3VyY2VIZWFwKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUhlYXA7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQoSXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJX
cml0aW5nQ2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50Kik7CkBAIC0xMTMsMzAgKzExMiwy
MiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXJzLmVuc3Vy
ZShpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAg
ICAgICAgICAgcmV0dXJuIFJlZiB7IGltYWdlQnVmZmVyIH07Ci0gICAgICAgIH0pOworICAgICAg
ICBtX3Jlc291cmNlSGVhcC5hZGQoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCksIFJlZiB7IGltYWdlQnVmZmVyIH0pOwogICAgIH0KIAogICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdl
cy5lbnN1cmUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAg
ICAgICAgICAgIHJldHVybiBSZWYgeyBpbWFnZSB9OwotICAgICAgICB9KTsKKyAgICAgICAgbV9y
ZXNvdXJjZUhlYXAuYWRkKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBSZWYg
eyBpbWFnZSB9KTsKICAgICB9CiAKICAgICB2b2lkIGNhY2hlRm9udChGb250JiBmb250KQogICAg
IHsKLSAgICAgICAgbV9mb250cy5lbnN1cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgWyZdKCkgewotICAgICAgICAgICAgcmV0dXJuIFJlZiB7IGZvbnQgfTsKLSAgICAgICAg
fSk7CisgICAgICAgIG1fcmVzb3VyY2VIZWFwLmFkZChmb250LnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBSZWYgeyBmb250IH0pOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIHNob3Vs
ZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZl
ckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7Ci0gICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZl
SW1hZ2VzOwotICAgIEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFJlc291
cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4g
bV9pdGVtczsKICAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJ
dGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGNkM2QxMGQy
Nzc1NS4uOTQxYzIwOTNjZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgi
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVzb3VyY2VIZWFwLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM2LDEzICsz
NywxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAot
UmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVy
cywgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IEZvbnRSZW5k
ZXJpbmdSZXNvdXJjZU1hcCogZm9udHMsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERl
bGVnYXRlKiBkZWxlZ2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFw
KiByZXNvdXJjZUhlYXAsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBk
ZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tYXNrSW1hZ2VCdWZm
ZXIobWFza0ltYWdlQnVmZmVyKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAg
ICAsIG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3Bs
YXlMaXN0LmltYWdlQnVmZmVycygpKQotICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2Vz
ID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCi0gICAgLCBt
X2ZvbnRzKGZvbnRzID8gKmZvbnRzIDogbV9kaXNwbGF5TGlzdC5mb250cygpKQorICAgICwgbV9y
ZXNvdXJjZUhlYXAocmVzb3VyY2VIZWFwID8gKnJlc291cmNlSGVhcCA6IG1fZGlzcGxheUxpc3Qu
cmVzb3VyY2VIZWFwKCkpCiAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUs
MTEgKzU0LDExIEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRl
bUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1
ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJl
c291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRl
KQogewogICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0
byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKCk7Ci0gICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNv
dXJjZUlkZW50aWZpZXIpKSB7CisgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gcmVzb3VyY2VI
ZWFwLmdldEltYWdlQnVmZmVyKHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VC
dWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CiAgICAgICAgIGlmIChkZWxl
Z2F0ZSkKICAgICAgICAgICAgIGRlbGVnYXRlLT5yZWNvcmRSZXNvdXJjZVVzZShyZXNvdXJjZUlk
ZW50aWZpZXIpOwpAQCAtNjksMTEgKzY4LDExIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyCiB9
CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVt
SGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUlt
YWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVz
b3VyY2VIZWFwLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUp
CiB7CiAgICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRv
IHJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsK
LSAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmll
cikpIHsKKyAgICBpZiAoYXV0byogaW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uo
cmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29u
dGV4dCwgKmltYWdlKTsKICAgICAgICAgaWYgKGRlbGVnYXRlKQogICAgICAgICAgICAgZGVsZWdh
dGUtPnJlY29yZFJlc291cmNlVXNlKHJlc291cmNlSWRlbnRpZmllcik7CkBAIC04Miw3ICs4MSw3
IEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmll
cjsKIH0KIAotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtLCBSZXBs
YXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRs
ZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIHNldFN0
YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCkBAIC05MiwxMyArOTEsMTMgQEAgaW5s
aW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBw
bHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9
IG51bGxwdHI7CiAKICAgICBpZiAoKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewot
ICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHN0cm9rZVBhdHRl
cm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBzdHJva2VQYXR0ZXJuSW1h
Z2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
CiAgICAgfQogCiAgICAgaWYgKChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciA9IHNldFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAg
ICBmaWxsUGF0dGVybkltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChmaWxsUGF0dGVyblJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJj
ZUhlYXAuZ2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4g
ZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgfQpAQCAtMTE2LDEx
ICsxMTUsMTEgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
VD4KLWlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVu
ZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxl
Z2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgUmVzb3VyY2VIZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5
ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0
PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRp
ZmllcigpOwotICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmll
cikpIHsKKyAgICBpZiAoYXV0byogZm9udCA9IHJlc291cmNlSGVhcC5nZXRGb250KHJlc291cmNl
SWRlbnRpZmllcikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwog
ICAgICAgICBpZiAoZGVsZWdhdGUpCiAgICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3Vy
Y2VVc2UocmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEzNSwzNyArMTM0LDM3IEBAIHN0ZDo6cGFp
cjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZm
ZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSwg
bV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VC
dWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCks
IG1faW1hZ2VCdWZmZXJzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBU
b0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRl
KSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRS
ZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAg
ICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAg
IGlmIChpdGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05h
dGl2ZUltYWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkK
KyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVh
cCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVh
c29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVt
PERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAg
ICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJ
dGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdh
dGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAg
ICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAg
ICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0
ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZl
SW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBt
X2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAg
IH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0
KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRl
eHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKaW5kZXggNmE0NjQzMjdjY2YxLi45Mjg1YmJkZDEwMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKK2NsYXNzIFJlc291cmNl
SGVhcDsKKwogZW51bSBjbGFzcyBTdG9wUmVwbGF5UmVhc29uIDogdWludDhfdCB7CiAgICAgUmVw
bGF5ZWRBbGxJdGVtcywKICAgICBNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsCkBAIC01Nyw3ICs1OSw3
IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7
CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZl
ckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIs
IGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCogPSBudWxscHRyLCBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciogbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlz
cGxheUxpc3QmLCBjb25zdCBSZXNvdXJjZUhlYXAqID0gbnVsbHB0ciwgV2ViQ29yZTo6SW1hZ2VC
dWZmZXIqIG1hc2tJbWFnZUJ1ZmZlciA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVw
bGF5UmVzdWx0IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29s
IHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTc4LDkgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3Bs
YXlMaXN0OwotICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7Ci0g
ICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25hdGl2ZUltYWdlczsKLSAgICBjb25zdCBG
b250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIG1fZm9udHM7CisgICAgY29uc3QgUmVzb3VyY2VIZWFw
JiBtX3Jlc291cmNlSGVhcDsKICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlc291cmNlSGVhcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKaW5kZXggN2E3ZjA2MGMzZmU4
Li4wMzQ1MTA3ZTRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNl
SGVhcC5oCkBAIC0yNSwzNCArMjUsMTAwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
RGlzcGxheUxpc3QuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSAiUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWNsYXNzIEluTWVtb3J5RGlzcGxheUxpc3QgOiBwdWJs
aWMgRGlzcGxheUxpc3QgeworY2xhc3MgUmVzb3VyY2VIZWFwIHsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBJbk1lbW9yeURpc3BsYXlMaXN0KCk7CisgICAgdXNpbmcgSW1hZ2VCdWZmZXJI
YXNoTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxJbWFnZUJ1
ZmZlcj4+OworICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+PjsKKyAgICB1c2luZyBGb250UmVu
ZGVyaW5nUmVzb3VyY2VNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVmPEZvbnQ+PjsKIAotICAgIFdFQkNPUkVfRVhQT1JUIH5Jbk1lbW9yeURpc3BsYXlMaXN0KCk7
CisgICAgUmVzb3VyY2VIZWFwKCkgPSBkZWZhdWx0OwogCi0gICAgY2xhc3MgV0VCQ09SRV9FWFBP
UlQgV3JpdGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxp
c3RJdGVtJikgY29uc3QgZmluYWw7Ci0gICAgICAgIHZvaWQgZW5jb2RlSXRlbUlubGluZShjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mLCB1aW50OF90KikgY29uc3QgZmluYWw7Ci0gICAgfTsKKyAgICB2
b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCisgICAgeworICAgICAgICBt
X2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSk7CisgICAgfQogCi0gICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVhZGluZ0Ns
aWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7Ci0gICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8SXRl
bUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNp
emVfdCwgSXRlbVR5cGUsIHVpbnQ4X3QqKSBmaW5hbDsKLSAgICB9OworICAgIHZvaWQgYWRkKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJl
ZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKKyAgICB7CisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLmFk
ZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICB9CisK
KyAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBSZWY8Rm9udD4mJiBmb250KQorICAgIHsKKyAgICAgICAgbV9mb250cy5h
ZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKKyAgICB9CisK
KyAgICBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB9CisKKyAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9mb250cy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICBib29sIGhhc0ltYWdlQnVmZmVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9p
bWFnZUJ1ZmZlcnMuaXNFbXB0eSgpOworICAgIH0KKworICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2Uo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX25hdGl2ZUltYWdlcy5pc0VtcHR5KCk7
CisgICAgfQorCisgICAgYm9vbCBoYXNGb250KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAhbV9mb250cy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmVJbWFnZUJ1ZmZl
cihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlTmF0aXZlSW1hZ2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZUZvbnQoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9pbWFnZUJ1ZmZl
cnMuY2xlYXIoKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIoKTsKKyAgICAgICAgbV9m
b250cy5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKQorICAgIHsK
KyAgICAgICAgbV9mb250cy5jbGVhcigpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V3JpdGluZ0NsaWVudD4gbV93cml0aW5nQ2xpZW50OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZWFkaW5nQ2xpZW50PiBtX3JlYWRpbmdDbGllbnQ7CisgICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIG1faW1hZ2VCdWZmZXJzOworICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdl
czsKKyAgICBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzkwMmMyYWE4NzI5Li4zMDFjMTU4MjJlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMjEtMTAtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
KworICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXJzIFBhcnQgNjogQ29uc29saWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDExCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84NDAxMzE2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1
Ym1pdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZWROYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNhY2hlZEZvbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpkZWxldGVBbGxGb250cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjp1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpyZXNvdXJjZUhlYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjppbWFnZUJ1ZmZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJbWFnZXMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmb250cyBjb25zdCk6IERl
bGV0ZWQuCisKIDIwMjEtMTAtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzIFBhcnQgNTogTWlncmF0ZSBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IGFlOGE1ZTllNTY2NC4uNjkyMTg0YjUwNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBA
IC0yMzgsOSArMjM4LDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICByZXR1cm4gV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAgZGVzdGluYXRpb24uY29udGV4
dCgpLAogICAgICAgICBkaXNwbGF5TGlzdCwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUo
KS5pbWFnZUJ1ZmZlcnMoKSwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJ
bWFnZXMoKSwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250cygpLAorICAgICAg
ICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLnJlc291cmNlSGVhcCgpLAogICAgICAgICBtX2N1cnJl
bnRNYXNrSW1hZ2VCdWZmZXIuZ2V0KCksCiAgICAgICAgICZyZXBsYXllckRlbGVnYXRlCiAgICAg
fS5yZXBsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAppbmRleCBkNTFkNjNjOGI0ZWIuLmVlYmFmZjcw
ZDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMzgsOSArMzgsNyBAQCBSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKQogCiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJl
bW90ZVJlc291cmNlQ2FjaGUmJiBvdGhlcikKICAgICA6IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIo
b3RoZXIubV93ZWJQcm9jZXNzSWRlbnRpZmllcikKLSAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1v
dmUob3RoZXIubV9pbWFnZUJ1ZmZlcnMpKQotICAgICwgbV9uYXRpdmVJbWFnZXMoV1RGTW92ZShv
dGhlci5tX25hdGl2ZUltYWdlcykpCi0gICAgLCBtX2ZvbnRzKFdURk1vdmUob3RoZXIubV9mb250
cykpCisgICAgLCBtX3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VIZWFwKSkK
ICAgICAsIG1fcmVzb3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VVc2VD
b3VudGVycykpCiB7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CkBAIC01MCw3ICs0
OCw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1h
Z2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIFF1YWxpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX2lt
YWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZN
b3ZlKGltYWdlQnVmZmVyKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIHVwZGF0
ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC01OSwxNCArNTcsMTQgQEAgdm9pZCBSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgUXVhbGkKIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJ
bWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
KTsKLSAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2Us
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmpl
Y3QoKSA9PSBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwogICAgIEFTU0VS
VChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgbV9yZXNvdXJj
ZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShp
bWFnZSkpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVz
b3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC03NSwyMSAr
NzMsMjEgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxO
YXRpdmVJbWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmUKIE5hdGl2ZUltYWdlKiBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjYWNoZWROYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewogICAgIEFTU0VS
VChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VI
ZWFwLmdldE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZv
bnQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSA9PSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CiAgICAgQVNT
RVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fZm9udHMuYWRkKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShmb250KSk7CisgICAgbV9yZXNvdXJjZUhlYXAu
YWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShmb250KSk7
CiAKICAgICBlbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKIH0KIAogRm9udCogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRGb250KHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xMDUsNyArMTAz
LDcgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjplbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGUKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpkZWxldGVBbGxGb250cygpCiB7Ci0gICAgbV9mb250cy5jbGVhcigpOworICAgIG1fcmVzb3Vy
Y2VIZWFwLmRlbGV0ZUFsbEZvbnRzKCk7CiB9CiAKIGJvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6
bWF5YmVSZW1vdmVSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwOjppdGVy
YXRvciYgaXRlcmF0b3IpCkBAIC0xNDksMTEgKzE0NywxMiBAQCBib29sIFJlbW90ZVJlc291cmNl
Q2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaQogCiAgICAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7CiAKLSAg
ICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSkgfHwgbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSkpIHsKKyAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VCdWZm
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKQorICAgICAgICB8fCBtX3Jl
c291cmNlSGVhcC5yZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
b2JqZWN0KCkpKSB7CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92
ZUZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhh
dmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KQEAgLTE4NSw3ICsxODQsNyBAQCBib29s
IFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnVwZGF0ZUhh
c0FjdGl2ZURyYXdhYmxlcygpCiB7Ci0gICAgbV9oYXNBY3RpdmVEcmF3YWJsZXMgPSAhbV9pbWFn
ZUJ1ZmZlcnMuaXNFbXB0eSgpIHx8ICFtX25hdGl2ZUltYWdlcy5pc0VtcHR5KCk7CisgICAgbV9o
YXNBY3RpdmVEcmF3YWJsZXMgPSBtX3Jlc291cmNlSGVhcC5oYXNJbWFnZUJ1ZmZlcigpIHx8IG1f
cmVzb3VyY2VIZWFwLmhhc05hdGl2ZUltYWdlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmgKaW5kZXggOGY0MDBkOWY1NzJkLi4yMDE2MjJkZGQ3ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuaApAQCAtNTQsOSArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1
c2VDb3VudCk7CiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNo
TWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAg
IGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpGb250UmVuZGVy
aW5nUmVzb3VyY2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQorICAgIGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBib29sIGhhc0FjdGl2ZURyYXdh
YmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlRHJhd2FibGVzOyB9CiAKQEAgLTg5LDkg
Kzg3LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXI7CiAKLSAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9p
bWFnZUJ1ZmZlcnM7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1h
Z2VzOwotICAgIFdlYkNvcmU6OkZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7CiAgICAg
c3RkOjphdG9taWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogCiAgICAg
UmVzb3VyY2VVc2VDb3VudGVyc01hcCBtX3Jlc291cmNlVXNlQ291bnRlcnM7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWYwNTQ1ZGJmOWJhLi5l
MTVkZGRkNDAzNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcnMgUGFydCA2OiBDb25zb2xpZGF0ZSBEaXNwbGF5TGlzdDo6
UmVzb3VyY2VIZWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE0MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDEzMTY3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAyMS0xMC0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHNjbXB5XSBTaGFyZSBjYWNoZSBiZXR3ZWVuIHBy
b2Nlc3NlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA4YTEzNTlkZmU4MzYuLjVhNjJkYWQ4
YWFjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0
ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhZGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAKQEAg
LTcyLDEwICs3MywxMCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5n
UmVzb3VyY2UpCiAKICAgICB7CiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICAgICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIGltYWdlQnVmZmVyTWFwOwotICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgUmVz
b3VyY2VIZWFwIHJlc291cmNlSGVhcDsKKyAgICAgICAgcmVzb3VyY2VIZWFwLmFkZChpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgICAg
IFJlcGxheWVyIHJlcGxheWVyIHsgY29udGV4dCwgbGlzdCwgJmltYWdlQnVmZmVyTWFwIH07Cisg
ICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY29udGV4dCwgbGlzdCwgJnJlc291cmNlSGVhcCB9
OwogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICBFWFBF
Q1RfRVEocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkLCBsaXN0LnNpemVJbkJ5dGVzKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nLCBTdG9wUmVwbGF5UmVhc29u
OjpSZXBsYXllZEFsbEl0ZW1zKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440574</attachid>
            <date>2021-10-07 22:34:34 -0700</date>
            <delta_ts>2021-10-07 23:33:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>38940</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDZhNjg4NWYzYTNmZjY1MTc1MDVlMzgxMTEwMTE4MTJlOGFjMDFlMTMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgT2N0IDcg
MjI6MzI6MDYgMjAyMSAtMDcwMAoKICAgIFBhcnQgNgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMTBmMjk1Zjg1
MTcuLjc2MGZlMDFiZTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTEwLTA3
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDY6IENv
bnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRGlzcGxheSBsaXN0cyBuZWVkIHRvIGJlIHJlcGxheWVkIHdpdGhpbiBhIGNvbnRleHQs
IGFuZCB0aGF0IGNvbnRleHQgaW5jbHVkZXMgYSBjb2xsZWN0aW9uIG9mIHJlc291cmNlcworICAg
ICAgICB0aGF0IHRoZSBkaXNwbGF5IGxpc3QgaXRlbXMgbWlnaHQgcmVmZXJlbmNlLiBGb3IgZXhh
bXBsZSwgaWYgdGhlcmUncyBhIGRpc3BsYXkgbGlzdCBpdGVtIHRoYXQgc2F5cyB0byBkcmF3Cisg
ICAgICAgIGFuIGltYWdlLCB0aGUgaW1hZ2UgbmVlZHMgdG8gYmUgcHJlc2VudCBpbiB0aGUgY29s
bGVjdGlvbi4KKworICAgICAgICBXZSB3ZXJlIHJlcHJlc2VudGluZyB0aGlzIGNvbGxlY3Rpb24g
b2YgcmVzb3VyY2VzIGFzIDMgaW5kZXBlbmRlbnQgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFQ+cy4KKyAgICAgICAgVGhpcyBpcyBraW5kIG9mIHVuZm9ydHVuYXRlLCBiZWNh
dXNlIGl0IG1lYW5zIDMgb2JqZWN0cyBhcmUgcGFzc2VkIGFyb3VuZCBpbiBwYXJhbGxlbCBhcyBh
cmd1bWVudHMgdG8gdGhlCisgICAgICAgIHJlbGV2YW50IHBsYWNlcyB3aGljaCBuZWVkIHRoZW0u
IEl0J3MgbW9yZSBlbGVnYW50IHRvIHdyYXAgYW4gb2JqZWN0IGFyb3VuZCB0aGVzZSAzIEhhc2hN
YXBzLCB0byBhdm9pZAorICAgICAgICBwb2xsdXRpbmcgZnVuY3Rpb25zJyBwYXJhbWV0ZXIgbGlz
dHMuCisKKyAgICAgICAgTm90IG9ubHkgdGhhdCwgYnV0IHRoZSBHUFUgcHJvY2VzcyBkb2Vzbid0
IHdhbnQgdGhlIGtleSB0byB0aGVzZSBIYXNoTWFwcyB0byBiZSBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzLgorICAgICAgICBJbnN0ZWFkLCB0aGUgR1BVIHByb2Nlc3Mgd2FudHMgdGhlIGtl
eSB0byBiZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIChzZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzYzOCkuIFdyYXBw
aW5nIGFuIG9iamVjdCBhcm91bmQgdGhlc2UgSGFzaE1hcHMgYWxsb3dzIGEgbGF5ZXIgb2YKKyAg
ICAgICAgaW5kaXJlY3Rpb24sIHdoZXJlIHRoZSBHUFUgcHJvY2VzcyBjYW4gaW1wbGVtZW50IHRo
ZSBpbnRlcmZhY2Ugb2YgdGhpcyBvYmplY3QsIGJ1dCBpbnRlcm5hbGx5IHJlcHJlc2VudCB0aGUK
KyAgICAgICAgSGFzaE1hcHMgdXNpbmcgZGlmZmVyZW50IGtleXMuIFdlYkNvcmUgc2hvdWxkbid0
IGtub3cgYWJvdXQgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycywgc28gdGhp
cworICAgICAgICBsYXllciBvZiBpbmRpcmVjdGlvbiBpcyBuZWNlc3NhcnkgZm9yIHRoYXQgZ29h
bC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX25hdGl2ZUltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnJl
c291cmNlSGVhcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6aW1hZ2VCdWZmZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
Zm9udHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5
Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBs
eUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlc291cmNlSGVhcDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldEZvbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VC
dWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKToKKwog
MjAyMS0xMC0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNoYWRvd2luZyBvZiBAZm9udC1wYWxldHRlLXZhbHVlcyBydWxlcyBkb2Vzbid0IHdv
cmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlMWNmYTJiZjYwYTkuLjA1ZmQzMGFjMTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUwLDYgKzY1MCw3IEBA
CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRHJhd0dseXBoc1Jl
Y29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0FGNTZEODI1MzAxNDU3MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUNCRjkwMEYyNzBGRjhG
NjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JGOTAwRDI3MEZGOEY2MDAwQzQ1N0QgLyog
RGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxQ0M1NEFGRTI3MEY5NkFFMDA1QkY4QkUgLyogUHJvY2Vzc1F1
YWxpZmllZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNDNTRBRkIyNzBGOTJEQTAwNUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0NEODE1MDIyMzFGODNF
MDA2NUZDMkIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MjU1
MTQxNkZEMjM0RjAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUNDREY1QkUxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1Rv
T1RGRm9udENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJz
aW9uLmggKi87IH07CkBAIC03MDQ4LDYgKzcwNDksNyBAQAogCQkxQ0FGNTZERTI1MzAyNDVBMDAx
N0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRl
cmxpbmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVybGluZU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0JGOTAwRDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlz
cGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZXNvdXJj
ZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDNTRBRkIyNzBGOTJEQTAw
NUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1F1YWxp
ZmllZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBC
Q0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9u
dENvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMDYsNiAr
MTgyMDgsNyBAQAogCQkJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
cGxheWVyLmggKi8sCiAJCQkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlz
cGxheUxpc3QuY3BwICovLAogCQkJCTFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9y
eURpc3BsYXlMaXN0LmggKi8sCisJCQkJMUNCRjkwMEQyNzBGRjhGNjAwMEM0NTdEIC8qIERpc3Bs
YXlMaXN0UmVzb3VyY2VIZWFwLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRpc3BsYXlsaXN0czsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTU2Myw2ICszMTU2Niw3IEBACiAJCQkJ
MUE4QTY0NjAxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJDNTlGMzIwMzVGQ0UyMDAxMjIzNkIgLyog
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0
NjMxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQ0JGOTAwRjI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RS
ZXNvdXJjZUhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2QkJEMERCNTVDREMwMDFEQjc5
NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkJCRjBEQjU1
Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGE3
Y2NhYzEyMDdkNC4uOWZjNGVhODJlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC0zOTEsOCArMzkxLDYgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBGb250Ojp3
aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHJldHVybiB3aWR0aDsKIH0KIAot
dXNpbmcgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFJlZjxGb250Pj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFt
ZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAppbmRleCAxMzk3ODAxYjRkOGUuLjRiNzFkMWQ2ZGI2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xNDIsNiArMTQyLDQg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiB9OwogCi11c2luZyBJbWFnZUJ1
ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPElt
YWdlQnVmZmVyPj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDQzNmI2YTU0M2RhYi4uNzky
YmRhNjk1MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmgKQEAgLTc1LDYgKzc1LDQgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCi11c2luZyBO
YXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVmPE5hdGl2ZUltYWdlPj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCmluZGV4IGNiMjM1MzA3ZjhhYi4uZGZmNDE0NDI2MTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTUyLDggKzUyLDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVt
cCgpIGNvbnN0CiAjZW5kaWYKIAogRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0KERpc3BsYXlMaXN0
JiYgb3RoZXIpCi0gICAgOiBtX2ltYWdlQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1h
Z2VCdWZmZXJzLCB7IH0pKQotICAgICwgbV9uYXRpdmVJbWFnZXMoc3RkOjpleGNoYW5nZShvdGhl
ci5tX25hdGl2ZUltYWdlcywgeyB9KSkKKyAgICA6IG1fcmVzb3VyY2VIZWFwKHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9yZXNvdXJjZUhlYXAsIHsgfSkpCiAgICAgLCBtX2l0ZW1zKHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cikpCiAgICAgLCBtX2RyYXdpbmdJdGVtRXh0ZW50cyhz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0pKQogewpAQCAtNjks
OCArNjgsNyBAQCBEaXNwbGF5TGlzdDo6fkRpc3BsYXlMaXN0KCkgPSBkZWZhdWx0OwogCiBEaXNw
bGF5TGlzdCYgRGlzcGxheUxpc3Q6Om9wZXJhdG9yPShEaXNwbGF5TGlzdCYmIG90aGVyKQogewot
ICAgIG1faW1hZ2VCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ltYWdlQnVmZmVycywg
eyB9KTsKLSAgICBtX25hdGl2ZUltYWdlcyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9uYXRpdmVJ
bWFnZXMsIHsgfSk7CisgICAgbV9yZXNvdXJjZUhlYXAgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
cmVzb3VyY2VIZWFwLCB7IH0pOwogICAgIG1faXRlbXMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
aXRlbXMsIG51bGxwdHIpOwogICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzID0gc3RkOjpleGNoYW5n
ZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KTsKICAgICByZXR1cm4gKnRoaXM7CkBA
IC04MSw4ICs3OSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAgICBpZiAobV9pdGVt
cykKICAgICAgICAgbV9pdGVtcy0+Y2xlYXIoKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cy5j
bGVhcigpOwotICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFyKCk7Ci0gICAgbV9uYXRpdmVJbWFnZXMu
Y2xlYXIoKTsKKyAgICBtX3Jlc291cmNlSGVhcC5jbGVhcigpOwogfQogCiBib29sIERpc3BsYXlM
aXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRl
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMjI2ODRkYzM5OGUxLi5mMjQ1ZDBiNTExM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJE
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgi
CisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC03Myw5ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBhc1RleHQoQXNUZXh0RmxhZ3Mp
IGNvbnN0OwogCi0gICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KLSAg
ICBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9mb250czsgfQorICAgIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvdXJjZUhlYXA7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KEl0ZW1CdWZmZXJX
cml0aW5nQ2xpZW50Kik7CkBAIC0xMTMsMzAgKzExMiwyMiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKICAg
ICB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXJzLmVuc3VyZShpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAgICAgICAgICAgcmV0dXJuIFJlZiB7IGlt
YWdlQnVmZmVyIH07Ci0gICAgICAgIH0pOworICAgICAgICBtX3Jlc291cmNlSGVhcC5hZGQoaW1h
Z2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFJlZiB7IGltYWdlQnVmZmVy
IH0pOwogICAgIH0KIAogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1h
Z2UpCiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAgICAgIHJldHVybiBSZWYgeyBp
bWFnZSB9OwotICAgICAgICB9KTsKKyAgICAgICAgbV9yZXNvdXJjZUhlYXAuYWRkKGltYWdlLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBSZWYgeyBpbWFnZSB9KTsKICAgICB9CiAKICAg
ICB2b2lkIGNhY2hlRm9udChGb250JiBmb250KQogICAgIHsKLSAgICAgICAgbV9mb250cy5lbnN1
cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAgICAgICAg
ICAgcmV0dXJuIFJlZiB7IGZvbnQgfTsKLSAgICAgICAgfSk7CisgICAgICAgIG1fcmVzb3VyY2VI
ZWFwLmFkZChmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBSZWYgeyBmb250IH0p
OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFn
cywgSXRlbUhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7
Ci0gICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotICAgIEZvbnRSZW5kZXJp
bmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8c3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1f
dHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGNkM2QxMGQyNzc1NS4uOTQxYzIwOTNjZjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM2LDEzICszNywxMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25z
dCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29uc3QgTmF0aXZlSW1hZ2VIYXNo
TWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCogZm9udHMs
IEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKK1JlcGxh
eWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFwKiByZXNvdXJjZUhlYXAsIEltYWdlQnVm
ZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9tYXNrSW1hZ2VCdWZmZXIobWFza0ltYWdlQnVmZmVyKQogICAg
ICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdl
QnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQot
ICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlz
cGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCi0gICAgLCBtX2ZvbnRzKGZvbnRzID8gKmZvbnRzIDog
bV9kaXNwbGF5TGlzdC5mb250cygpKQorICAgICwgbV9yZXNvdXJjZUhlYXAocmVzb3VyY2VIZWFw
ID8gKnJlc291cmNlSGVhcCA6IG1fZGlzcGxheUxpc3QucmVzb3VyY2VIZWFwKCkpCiAgICAgLCBt
X2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsMTEgKzU0LDExIEBAIEdyYXBoaWNzQ29u
dGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgot
aW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFn
ZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6
RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBp
dGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIGltYWdlQnVm
ZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBp
bWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7Ci0gICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAg
aWYgKGF1dG8qIGltYWdlQnVmZmVyID0gcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlc291
cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQs
ICppbWFnZUJ1ZmZlcik7CiAgICAgICAgIGlmIChkZWxlZ2F0ZSkKICAgICAgICAgICAgIGRlbGVn
YXRlLT5yZWNvcmRSZXNvdXJjZVVzZShyZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNjksMTEgKzY4
LDExIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1p
bmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBh
cHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2
ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpE
ZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBJdGVtSGFuZGxlIGl0
ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgYXV0byYgbmF0aXZlSW1h
Z2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5h
dGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKLSAgICBpZiAoYXV0byogaW1hZ2UgPSBu
YXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICBpZiAoYXV0byogaW1h
Z2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocmVzb3VyY2VJZGVudGlmaWVyKSkgewog
ICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlKTsKICAgICAgICAg
aWYgKGRlbGVnYXRlKQogICAgICAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHJl
c291cmNlSWRlbnRpZmllcik7CkBAIC04Miw3ICs4MSw3IEBAIGlubGluZSBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVt
KEdyCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotaW5saW5lIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0
ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5h
dGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRl
KQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0
YXRlPigpOwogCkBAIC05MiwxMyArOTEsMTMgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAg
ICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAKICAgICBpZiAoKHN0
cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ry
b2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBzdHJva2VQYXR0ZXJuSW1h
Z2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0
aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQogICAgICAgICAgICAgcmV0dXJuIHN0cm9rZVBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgfQogCiAgICAgaWYgKChmaWxs
UGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5maWxsUGF0
dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBmaWxsUGF0dGVybkltYWdlID0gbmF0
aXZlSW1hZ2VzLmdldChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UoZmls
bFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWZpbGxQ
YXR0ZXJuSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CiAgICAgfQpAQCAtMTE2LDExICsxMTUsMTEgQEAgaW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGgKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRz
LCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZv
bnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VIZWFwJiByZXNv
dXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkK
IHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJj
ZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwotICAgIGlmIChhdXRvKiBm
b250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICBpZiAoYXV0byogZm9u
dCA9IHJlc291cmNlSGVhcC5nZXRGb250KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
Zm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwogICAgICAgICBpZiAoZGVsZWdhdGUpCiAg
ICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UocmVzb3VyY2VJZGVudGlmaWVy
KTsKQEAgLTEzNSwzNyArMTM0LDM3IEBAIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpCiAgICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBpZiAoaXRlbS5p
czxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4o
Y29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVy
SXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1f
ZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIp
IH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAg
fQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJ
dGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtLCBt
X2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCks
IG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVJ
bWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1f
bmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRp
dmVJbWFnZT4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAg
ICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAg
cmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAo
aXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwg
bV9mb250cywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQo
KSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRl
cm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZl
SW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihj
b250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92
ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNl
dFN0YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVt
LCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggNmE0NjQz
MjdjY2YxLi45Mjg1YmJkZDEwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaApAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKK2NsYXNzIFJlc291cmNlSGVhcDsKKwogZW51bSBjbGFzcyBTdG9w
UmVwbGF5UmVhc29uIDogdWludDhfdCB7CiAgICAgUmVwbGF5ZWRBbGxJdGVtcywKICAgICBNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsCkBAIC01Nyw3ICs1OSw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVs
ZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNv
dXJjZU1hcCogPSBudWxscHRyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogbWFza0ltYWdlQnVmZmVy
ID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVw
bGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBSZXNvdXJj
ZUhlYXAqID0gbnVsbHB0ciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZUJ1ZmZlciA9
IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBs
YXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNl
KTsKQEAgLTc4LDkgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29u
dGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVy
OwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIGNvbnN0IEltYWdl
QnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7Ci0gICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNo
TWFwJiBtX25hdGl2ZUltYWdlczsKLSAgICBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAm
IG1fZm9udHM7CisgICAgY29uc3QgUmVzb3VyY2VIZWFwJiBtX3Jlc291cmNlSGVhcDsKICAgICBE
ZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVzb3VyY2VIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5i
NjA1MTc2ZDU0NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApAQCAtMCwwICsx
LDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CisKK2NsYXNzIFJlc291cmNlSGVhcCB7CitwdWJsaWM6CisgICAgdXNpbmcgSW1hZ2VCdWZmZXJI
YXNoTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxJbWFnZUJ1
ZmZlcj4+OworICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+PjsKKyAgICB1c2luZyBGb250UmVu
ZGVyaW5nUmVzb3VyY2VNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVmPEZvbnQ+PjsKKworICAgIFJlc291cmNlSGVhcCgpID0gZGVmYXVsdDsKKworICAgIHZvaWQg
YWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1faW1h
Z2VCdWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VC
dWZmZXIpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2Up
CisgICAgeworICAgICAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgfQorCisgICAgdm9pZCBhZGQoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEZvbnQ+
JiYgZm9udCkKKyAgICB7CisgICAgICAgIG1fZm9udHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgV1RGTW92ZShmb250KSk7CisgICAgfQorCisgICAgSW1hZ2VCdWZmZXIqIGdldElt
YWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgTmF0aXZlSW1hZ2Uq
IGdldE5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFn
ZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgRm9udCog
Z2V0Rm9udChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udHMuZ2V0KHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgYm9vbCBoYXNJbWFnZUJ1ZmZlcigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1faW1hZ2VCdWZmZXJzLmlzRW1wdHkoKTsK
KyAgICB9CisKKyAgICBib29sIGhhc05hdGl2ZUltYWdlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhbV9uYXRpdmVJbWFnZXMuaXNFbXB0eSgpOworICAgIH0KKworICAgIGJvb2wgaGFz
Rm9udCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fZm9udHMuaXNFbXB0eSgpOwor
ICAgIH0KKworICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB9CisKKyAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4g
bV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
fQorCisgICAgYm9vbCByZW1vdmVGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9mb250cy5y
ZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGNs
ZWFyKCkKKyAgICB7CisgICAgICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFyKCk7CisgICAgICAgIG1f
bmF0aXZlSW1hZ2VzLmNsZWFyKCk7CisgICAgICAgIG1fZm9udHMuY2xlYXIoKTsKKyAgICB9CisK
KyAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCkKKyAgICB7CisgICAgICAgIG1fZm9udHMuY2xlYXIo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZm
ZXJzOworICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBGb250UmVu
ZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzkwMmMy
YWE4NzI5Li4zMDFjMTU4MjJlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTAt
MDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgNjog
Q29uc29saWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDExCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NDAxMzE2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRp
dmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNh
Y2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZv
bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVB
bGxGb250cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVt
b3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjp1cGRh
dGVIYXNBY3RpdmVEcmF3YWJsZXMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpyZXNvdXJjZUhlYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjppbWFnZUJ1ZmZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJbWFnZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmb250cyBjb25zdCk6IERlbGV0ZWQuCisKIDIw
MjEtMTAtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBh
cnQgNTogTWlncmF0ZSBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGFlOGE1ZTllNTY2
NC4uNjkyMTg0YjUwNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMzgsOSArMjM4
LDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpz
dWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAgZGVzdGluYXRpb24uY29udGV4dCgpLAogICAgICAg
ICBkaXNwbGF5TGlzdCwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZl
cnMoKSwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKSwKLSAg
ICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250cygpLAorICAgICAgICAmcmVtb3RlUmVz
b3VyY2VDYWNoZSgpLnJlc291cmNlSGVhcCgpLAogICAgICAgICBtX2N1cnJlbnRNYXNrSW1hZ2VC
dWZmZXIuZ2V0KCksCiAgICAgICAgICZyZXBsYXllckRlbGVnYXRlCiAgICAgfS5yZXBsYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmNwcAppbmRleCBkNTFkNjNjOGI0ZWIuLmVlYmFmZjcwZDk3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcApAQCAtMzgsOSArMzgsNyBAQCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1v
dGVSZXNvdXJjZUNhY2hlKFByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQog
CiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlc291cmNl
Q2FjaGUmJiBvdGhlcikKICAgICA6IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIob3RoZXIubV93ZWJQ
cm9jZXNzSWRlbnRpZmllcikKLSAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUob3RoZXIubV9p
bWFnZUJ1ZmZlcnMpKQotICAgICwgbV9uYXRpdmVJbWFnZXMoV1RGTW92ZShvdGhlci5tX25hdGl2
ZUltYWdlcykpCi0gICAgLCBtX2ZvbnRzKFdURk1vdmUob3RoZXIubV9mb250cykpCisgICAgLCBt
X3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VIZWFwKSkKICAgICAsIG1fcmVz
b3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VVc2VDb3VudGVycykpCiB7
CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CkBAIC01MCw3ICs0OCw3IEBAIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIFF1YWxpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSA9PSBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX2ltYWdlQnVmZmVycy5h
ZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlQnVm
ZmVyKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURy
YXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CkBAIC01OSwxNCArNTcsMTQgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgUXVh
bGkKIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3Qo
KSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7
CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBpbWFn
ZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZSkpOwogICAg
IHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3Vu
dGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC03NSwyMSArNzMsMjEgQEAgdm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4m
JiBpbWFnZSwgUXVhbGlmaWVkUmUKIE5hdGl2ZUltYWdlKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZWROYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2
ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQsIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBm
b250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIpOwotICAgIG1fZm9udHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSwgV1RGTW92ZShmb250KSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShmb250KSk7CiAKICAgICBlbnN1
cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
Rm9udCogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udChRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewot
ICAgIHJldHVybiBtX2ZvbnRzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0
KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRGb250KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5z
dXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjplbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGUKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxG
b250cygpCiB7Ci0gICAgbV9mb250cy5jbGVhcigpOworICAgIG1fcmVzb3VyY2VIZWFwLmRlbGV0
ZUFsbEZvbnRzKCk7CiB9CiAKIGJvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVS
ZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwOjppdGVyYXRvciYgaXRlcmF0
b3IpCkBAIC0xNDksMTEgKzE0NywxMiBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJl
UmVtb3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaQogCiAgICAg
bV9yZXNvdXJjZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7CiAKLSAgICBpZiAobV9pbWFn
ZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkgfHwg
bV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3Qo
KSkpIHsKKyAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VCdWZmZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKQorICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5y
ZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKSB7
CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgaWYgKG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSkpCisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQg
YmVmb3JlIHJlbGVhc2luZyBpdC4KQEAgLTE4NSw3ICsxODQsNyBAQCBib29sIFJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnVwZGF0ZUhhc0FjdGl2ZURyYXdh
YmxlcygpCiB7Ci0gICAgbV9oYXNBY3RpdmVEcmF3YWJsZXMgPSAhbV9pbWFnZUJ1ZmZlcnMuaXNF
bXB0eSgpIHx8ICFtX25hdGl2ZUltYWdlcy5pc0VtcHR5KCk7CisgICAgbV9oYXNBY3RpdmVEcmF3
YWJsZXMgPSBtX3Jlc291cmNlSGVhcC5oYXNJbWFnZUJ1ZmZlcigpIHx8IG1fcmVzb3VyY2VIZWFw
Lmhhc05hdGl2ZUltYWdlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmgKaW5kZXggOGY0MDBkOWY1NzJkLi4yMDE2MjJkZGQ3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAt
NTQsOSArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7CiAg
ICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1
ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAgIGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVJbWFnZXM7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VN
YXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQorICAgIGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBib29sIGhhc0FjdGl2ZURyYXdhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQWN0aXZlRHJhd2FibGVzOyB9CiAKQEAgLTg5LDkgKzg3LDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50
aWZpZXI7CiAKLSAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7
Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotICAgIFdl
YkNvcmU6OkZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjphdG9taWM8
Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogCiAgICAgUmVzb3VyY2VVc2VD
b3VudGVyc01hcCBtX3Jlc291cmNlVXNlQ291bnRlcnM7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWYwNTQ1ZGJmOWJhLi5lMTVkZGRkNDAzNDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0xMC0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcnMgUGFydCA2OiBDb25zb2xpZGF0ZSBEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDEzMTY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0xMC0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW3dlYmtpdHNjbXB5XSBTaGFyZSBjYWNoZSBiZXR3ZWVuIHByb2Nlc3NlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0
VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAppbmRleCA4YTEzNTlkZmU4MzYuLjVhNjJkYWQ4YWFjZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rp
c3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdFJlc291cmNlSGVhcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAKQEAgLTcyLDEwICs3Mywx
MCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAK
ICAgICB7CiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsg
MTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIGltYWdlQnVm
ZmVyTWFwOwotICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVy
LCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgUmVzb3VyY2VIZWFwIHJl
c291cmNlSGVhcDsKKyAgICAgICAgcmVzb3VyY2VIZWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgICAgIFJlcGxheWVyIHJl
cGxheWVyIHsgY29udGV4dCwgbGlzdCwgJmltYWdlQnVmZmVyTWFwIH07CisgICAgICAgIFJlcGxh
eWVyIHJlcGxheWVyIHsgY29udGV4dCwgbGlzdCwgJnJlc291cmNlSGVhcCB9OwogICAgICAgICBh
dXRvIHJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0
Lm51bWJlck9mQnl0ZXNSZWFkLCBsaXN0LnNpemVJbkJ5dGVzKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nLCBTdG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFs
bEl0ZW1zKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440575</attachid>
            <date>2021-10-07 23:33:04 -0700</date>
            <delta_ts>2021-10-08 10:27:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>38737</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGNjNWE1MjQzZGUzYmZlNzUyZDY5Yjc3ZjUwNTM0MGNmZDdmODk1MDgKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgT2N0IDcg
MjI6MzI6MDYgMjAyMSAtMDcwMAoKICAgIFBhcnQgNgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMTBmMjk1Zjg1
MTcuLjc2MGZlMDFiZTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTEwLTA3
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDY6IENv
bnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRGlzcGxheSBsaXN0cyBuZWVkIHRvIGJlIHJlcGxheWVkIHdpdGhpbiBhIGNvbnRleHQs
IGFuZCB0aGF0IGNvbnRleHQgaW5jbHVkZXMgYSBjb2xsZWN0aW9uIG9mIHJlc291cmNlcworICAg
ICAgICB0aGF0IHRoZSBkaXNwbGF5IGxpc3QgaXRlbXMgbWlnaHQgcmVmZXJlbmNlLiBGb3IgZXhh
bXBsZSwgaWYgdGhlcmUncyBhIGRpc3BsYXkgbGlzdCBpdGVtIHRoYXQgc2F5cyB0byBkcmF3Cisg
ICAgICAgIGFuIGltYWdlLCB0aGUgaW1hZ2UgbmVlZHMgdG8gYmUgcHJlc2VudCBpbiB0aGUgY29s
bGVjdGlvbi4KKworICAgICAgICBXZSB3ZXJlIHJlcHJlc2VudGluZyB0aGlzIGNvbGxlY3Rpb24g
b2YgcmVzb3VyY2VzIGFzIDMgaW5kZXBlbmRlbnQgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFQ+cy4KKyAgICAgICAgVGhpcyBpcyBraW5kIG9mIHVuZm9ydHVuYXRlLCBiZWNh
dXNlIGl0IG1lYW5zIDMgb2JqZWN0cyBhcmUgcGFzc2VkIGFyb3VuZCBpbiBwYXJhbGxlbCBhcyBh
cmd1bWVudHMgdG8gdGhlCisgICAgICAgIHJlbGV2YW50IHBsYWNlcyB3aGljaCBuZWVkIHRoZW0u
IEl0J3MgbW9yZSBlbGVnYW50IHRvIHdyYXAgYW4gb2JqZWN0IGFyb3VuZCB0aGVzZSAzIEhhc2hN
YXBzLCB0byBhdm9pZAorICAgICAgICBwb2xsdXRpbmcgZnVuY3Rpb25zJyBwYXJhbWV0ZXIgbGlz
dHMuCisKKyAgICAgICAgTm90IG9ubHkgdGhhdCwgYnV0IHRoZSBHUFUgcHJvY2VzcyBkb2Vzbid0
IHdhbnQgdGhlIGtleSB0byB0aGVzZSBIYXNoTWFwcyB0byBiZSBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzLgorICAgICAgICBJbnN0ZWFkLCB0aGUgR1BVIHByb2Nlc3Mgd2FudHMgdGhlIGtl
eSB0byBiZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIChzZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzYzOCkuIFdyYXBw
aW5nIGFuIG9iamVjdCBhcm91bmQgdGhlc2UgSGFzaE1hcHMgYWxsb3dzIGEgbGF5ZXIgb2YKKyAg
ICAgICAgaW5kaXJlY3Rpb24sIHdoZXJlIHRoZSBHUFUgcHJvY2VzcyBjYW4gaW1wbGVtZW50IHRo
ZSBpbnRlcmZhY2Ugb2YgdGhpcyBvYmplY3QsIGJ1dCBpbnRlcm5hbGx5IHJlcHJlc2VudCB0aGUK
KyAgICAgICAgSGFzaE1hcHMgdXNpbmcgZGlmZmVyZW50IGtleXMuIFdlYkNvcmUgc2hvdWxkbid0
IGtub3cgYWJvdXQgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycywgc28gdGhp
cworICAgICAgICBsYXllciBvZiBpbmRpcmVjdGlvbiBpcyBuZWNlc3NhcnkgZm9yIHRoYXQgZ29h
bC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX25hdGl2ZUltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnJl
c291cmNlSGVhcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6aW1hZ2VCdWZmZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
Zm9udHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5
Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBs
eUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlc291cmNlSGVhcDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldEZvbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VC
dWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKToKKwog
MjAyMS0xMC0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNoYWRvd2luZyBvZiBAZm9udC1wYWxldHRlLXZhbHVlcyBydWxlcyBkb2Vzbid0IHdv
cmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlMWNmYTJiZjYwYTkuLjA1ZmQzMGFjMTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjUwLDYgKzY1MCw3IEBA
CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRHJhd0dseXBoc1Jl
Y29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0FGNTZEODI1MzAxNDU3MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUNCRjkwMEYyNzBGRjhG
NjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JGOTAwRDI3MEZGOEY2MDAwQzQ1N0QgLyog
RGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxQ0M1NEFGRTI3MEY5NkFFMDA1QkY4QkUgLyogUHJvY2Vzc1F1
YWxpZmllZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNDNTRBRkIyNzBGOTJEQTAwNUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0NEODE1MDIyMzFGODNF
MDA2NUZDMkIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MjU1
MTQxNkZEMjM0RjAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUNDREY1QkUxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1Rv
T1RGRm9udENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJz
aW9uLmggKi87IH07CkBAIC03MDQ4LDYgKzcwNDksNyBAQAogCQkxQ0FGNTZERTI1MzAyNDVBMDAx
N0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRl
cmxpbmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVybGluZU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0JGOTAwRDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlz
cGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZXNvdXJj
ZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDNTRBRkIyNzBGOTJEQTAw
NUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1F1YWxp
ZmllZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBC
Q0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9u
dENvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMDYsNiAr
MTgyMDgsNyBAQAogCQkJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
cGxheWVyLmggKi8sCiAJCQkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlz
cGxheUxpc3QuY3BwICovLAogCQkJCTFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9y
eURpc3BsYXlMaXN0LmggKi8sCisJCQkJMUNCRjkwMEQyNzBGRjhGNjAwMEM0NTdEIC8qIERpc3Bs
YXlMaXN0UmVzb3VyY2VIZWFwLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRpc3BsYXlsaXN0czsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTU2Myw2ICszMTU2Niw3IEBACiAJCQkJ
MUE4QTY0NjAxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJDNTlGMzIwMzVGQ0UyMDAxMjIzNkIgLyog
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QTY0
NjMxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQ0JGOTAwRjI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RS
ZXNvdXJjZUhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2QkJEMERCNTVDREMwMDFEQjc5
NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkJCRjBEQjU1
Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGE3
Y2NhYzEyMDdkNC4uOWZjNGVhODJlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC0zOTEsOCArMzkxLDYgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBGb250Ojp3
aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHJldHVybiB3aWR0aDsKIH0KIAot
dXNpbmcgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFJlZjxGb250Pj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFt
ZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAppbmRleCAxMzk3ODAxYjRkOGUuLjRiNzFkMWQ2ZGI2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xNDIsNiArMTQyLDQg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiB9OwogCi11c2luZyBJbWFnZUJ1
ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPElt
YWdlQnVmZmVyPj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IDQzNmI2YTU0M2RhYi4uNzky
YmRhNjk1MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmgKQEAgLTc1LDYgKzc1LDQgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCi11c2luZyBO
YXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVmPE5hdGl2ZUltYWdlPj47Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCmluZGV4IGNiMjM1MzA3ZjhhYi4uZGZmNDE0NDI2MTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTUyLDggKzUyLDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVt
cCgpIGNvbnN0CiAjZW5kaWYKIAogRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0KERpc3BsYXlMaXN0
JiYgb3RoZXIpCi0gICAgOiBtX2ltYWdlQnVmZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1h
Z2VCdWZmZXJzLCB7IH0pKQotICAgICwgbV9uYXRpdmVJbWFnZXMoc3RkOjpleGNoYW5nZShvdGhl
ci5tX25hdGl2ZUltYWdlcywgeyB9KSkKKyAgICA6IG1fcmVzb3VyY2VIZWFwKHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9yZXNvdXJjZUhlYXAsIHsgfSkpCiAgICAgLCBtX2l0ZW1zKHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cikpCiAgICAgLCBtX2RyYXdpbmdJdGVtRXh0ZW50cyhz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0pKQogewpAQCAtNjks
OCArNjgsNyBAQCBEaXNwbGF5TGlzdDo6fkRpc3BsYXlMaXN0KCkgPSBkZWZhdWx0OwogCiBEaXNw
bGF5TGlzdCYgRGlzcGxheUxpc3Q6Om9wZXJhdG9yPShEaXNwbGF5TGlzdCYmIG90aGVyKQogewot
ICAgIG1faW1hZ2VCdWZmZXJzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ltYWdlQnVmZmVycywg
eyB9KTsKLSAgICBtX25hdGl2ZUltYWdlcyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9uYXRpdmVJ
bWFnZXMsIHsgfSk7CisgICAgbV9yZXNvdXJjZUhlYXAgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
cmVzb3VyY2VIZWFwLCB7IH0pOwogICAgIG1faXRlbXMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
aXRlbXMsIG51bGxwdHIpOwogICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzID0gc3RkOjpleGNoYW5n
ZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KTsKICAgICByZXR1cm4gKnRoaXM7CkBA
IC04MSw4ICs3OSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAgICBpZiAobV9pdGVt
cykKICAgICAgICAgbV9pdGVtcy0+Y2xlYXIoKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cy5j
bGVhcigpOwotICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFyKCk7Ci0gICAgbV9uYXRpdmVJbWFnZXMu
Y2xlYXIoKTsKKyAgICBtX3Jlc291cmNlSGVhcC5jbGVhcigpOwogfQogCiBib29sIERpc3BsYXlM
aXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRl
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMjI2ODRkYzM5OGUxLi5mMjQ1ZDBiNTExM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJE
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgi
CisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC03Myw5ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBhc1RleHQoQXNUZXh0RmxhZ3Mp
IGNvbnN0OwogCi0gICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KLSAg
ICBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9mb250czsgfQorICAgIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvdXJjZUhlYXA7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KEl0ZW1CdWZmZXJX
cml0aW5nQ2xpZW50Kik7CkBAIC0xMTMsMzAgKzExMiwyMiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKICAg
ICB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXJzLmVuc3VyZShpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAgICAgICAgICAgcmV0dXJuIFJlZiB7IGlt
YWdlQnVmZmVyIH07Ci0gICAgICAgIH0pOworICAgICAgICBtX3Jlc291cmNlSGVhcC5hZGQoaW1h
Z2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFJlZiB7IGltYWdlQnVmZmVy
IH0pOwogICAgIH0KIAogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1h
Z2UpCiAgICAgewotICAgICAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAgICAgIHJldHVybiBSZWYgeyBp
bWFnZSB9OwotICAgICAgICB9KTsKKyAgICAgICAgbV9yZXNvdXJjZUhlYXAuYWRkKGltYWdlLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBSZWYgeyBpbWFnZSB9KTsKICAgICB9CiAKICAg
ICB2b2lkIGNhY2hlRm9udChGb250JiBmb250KQogICAgIHsKLSAgICAgICAgbV9mb250cy5lbnN1
cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewotICAgICAgICAg
ICAgcmV0dXJuIFJlZiB7IGZvbnQgfTsKLSAgICAgICAgfSk7CisgICAgICAgIG1fcmVzb3VyY2VI
ZWFwLmFkZChmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBSZWYgeyBmb250IH0p
OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFn
cywgSXRlbUhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7
Ci0gICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotICAgIEZvbnRSZW5kZXJp
bmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8c3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1f
dHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGNkM2QxMGQyNzc1NS4uOTQxYzIwOTNjZjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM2LDEzICszNywxMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25z
dCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29uc3QgTmF0aXZlSW1hZ2VIYXNo
TWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCogZm9udHMs
IEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKK1JlcGxh
eWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFwKiByZXNvdXJjZUhlYXAsIEltYWdlQnVm
ZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9tYXNrSW1hZ2VCdWZmZXIobWFza0ltYWdlQnVmZmVyKQogICAg
ICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdl
QnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQot
ICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlz
cGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCi0gICAgLCBtX2ZvbnRzKGZvbnRzID8gKmZvbnRzIDog
bV9kaXNwbGF5TGlzdC5mb250cygpKQorICAgICwgbV9yZXNvdXJjZUhlYXAocmVzb3VyY2VIZWFw
ID8gKnJlc291cmNlSGVhcCA6IG1fZGlzcGxheUxpc3QucmVzb3VyY2VIZWFwKCkpCiAgICAgLCBt
X2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsMTEgKzU0LDExIEBAIEdyYXBoaWNzQ29u
dGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgot
aW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFn
ZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6
RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBp
dGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIGltYWdlQnVm
ZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBp
bWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7Ci0gICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAg
aWYgKGF1dG8qIGltYWdlQnVmZmVyID0gcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlc291
cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQs
ICppbWFnZUJ1ZmZlcik7CiAgICAgICAgIGlmIChkZWxlZ2F0ZSkKICAgICAgICAgICAgIGRlbGVn
YXRlLT5yZWNvcmRSZXNvdXJjZVVzZShyZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNjksMTEgKzY4
LDExIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1p
bmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBh
cHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2
ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpE
ZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBJdGVtSGFuZGxlIGl0
ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgYXV0byYgbmF0aXZlSW1h
Z2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5h
dGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKLSAgICBpZiAoYXV0byogaW1hZ2UgPSBu
YXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICBpZiAoYXV0byogaW1h
Z2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocmVzb3VyY2VJZGVudGlmaWVyKSkgewog
ICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlKTsKICAgICAgICAg
aWYgKGRlbGVnYXRlKQogICAgICAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHJl
c291cmNlSWRlbnRpZmllcik7CkBAIC04Miw3ICs4MSw3IEBAIGlubGluZSBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVt
KEdyCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotaW5saW5lIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0
ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5h
dGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRl
KQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0
YXRlPigpOwogCkBAIC05MiwxMyArOTEsMTMgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAg
ICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAKICAgICBpZiAoKHN0
cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ry
b2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBzdHJva2VQYXR0ZXJuSW1h
Z2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0
aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQogICAgICAgICAgICAgcmV0dXJuIHN0cm9rZVBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgfQogCiAgICAgaWYgKChmaWxs
UGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5maWxsUGF0
dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBmaWxsUGF0dGVybkltYWdlID0gbmF0
aXZlSW1hZ2VzLmdldChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UoZmls
bFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWZpbGxQ
YXR0ZXJuSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CiAgICAgfQpAQCAtMTE2LDExICsxMTUsMTEgQEAgaW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGgKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRz
LCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZv
bnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VIZWFwJiByZXNv
dXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkK
IHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJj
ZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwotICAgIGlmIChhdXRvKiBm
b250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICBpZiAoYXV0byogZm9u
dCA9IHJlc291cmNlSGVhcC5nZXRGb250KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
Zm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwogICAgICAgICBpZiAoZGVsZWdhdGUpCiAg
ICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UocmVzb3VyY2VJZGVudGlmaWVy
KTsKQEAgLTEzNSwzNyArMTM0LDM3IEBAIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpCiAgICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBpZiAoaXRlbS5p
czxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4o
Y29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVy
SXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1f
ZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIp
IH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAg
fQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJ
dGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtLCBt
X2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCks
IG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVJ
bWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1f
bmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRp
dmVJbWFnZT4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAg
ICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAg
cmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAo
aXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwg
bV9mb250cywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQo
KSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRl
cm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZl
SW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihj
b250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92
ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNl
dFN0YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVt
LCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggNmE0NjQz
MjdjY2YxLi45Mjg1YmJkZDEwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaApAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKK2NsYXNzIFJlc291cmNlSGVhcDsKKwogZW51bSBjbGFzcyBTdG9w
UmVwbGF5UmVhc29uIDogdWludDhfdCB7CiAgICAgUmVwbGF5ZWRBbGxJdGVtcywKICAgICBNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsCkBAIC01Nyw3ICs1OSw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVs
ZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNv
dXJjZU1hcCogPSBudWxscHRyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogbWFza0ltYWdlQnVmZmVy
ID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVw
bGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBSZXNvdXJj
ZUhlYXAqID0gbnVsbHB0ciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZUJ1ZmZlciA9
IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBs
YXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNl
KTsKQEAgLTc4LDkgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29u
dGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVy
OwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIGNvbnN0IEltYWdl
QnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7Ci0gICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNo
TWFwJiBtX25hdGl2ZUltYWdlczsKLSAgICBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAm
IG1fZm9udHM7CisgICAgY29uc3QgUmVzb3VyY2VIZWFwJiBtX3Jlc291cmNlSGVhcDsKICAgICBE
ZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVzb3VyY2VIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
YjZkZmM3NzU5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApAQCAtMCwwICsx
LDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CisKK2NsYXNzIFJlc291cmNlSGVhcCB7CitwdWJsaWM6CisgICAgdm9pZCBhZGQoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEltYWdl
QnVmZmVyPiYmIGltYWdlQnVmZmVyKQorICAgIHsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlcnMuYWRk
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworICAg
IH0KKworICAgIHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKKyAgICB7CisgICAg
ICAgIG1fbmF0aXZlSW1hZ2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2UpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4mJiBmb250KQorICAg
IHsKKyAgICAgICAgbV9mb250cy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGZvbnQpKTsKKyAgICB9CisKKyAgICBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1h
Z2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBGb250KiBnZXRGb250KFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9mb250cy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICBib29sIGhhc0ltYWdlQnVmZmVyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhbV9pbWFnZUJ1ZmZlcnMuaXNFbXB0eSgpOworICAgIH0KKworICAg
IGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX25h
dGl2ZUltYWdlcy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNGb250KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAhbV9mb250cy5pc0VtcHR5KCk7CisgICAgfQorCisgICAg
Ym9vbCByZW1vdmVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGJv
b2wgcmVtb3ZlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdl
cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBib29s
IHJlbW92ZUZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZvbnRzLnJlbW92ZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsK
KyAgICAgICAgbV9pbWFnZUJ1ZmZlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9uYXRpdmVJbWFnZXMu
Y2xlYXIoKTsKKyAgICAgICAgbV9mb250cy5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZGVs
ZXRlQWxsRm9udHMoKQorICAgIHsKKyAgICAgICAgbV9mb250cy5jbGVhcigpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPElt
YWdlQnVmZmVyPj4gbV9pbWFnZUJ1ZmZlcnM7CisgICAgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4+IG1fbmF0aXZlSW1hZ2VzOworICAgIEhhc2hN
YXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4+IG1fZm9udHM7Cit9Owor
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGM5MDJjMmFhODcyOS4uMzAxYzE1ODIyZTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVycyBQYXJ0IDY6IENvbnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJj
ZUhlYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTQxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpzdWJtaXQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZTo6dXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVzb3VyY2VIZWFwIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6aW1hZ2VCdWZmZXJzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6bmF0aXZlSW1hZ2VzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Zm9u
dHMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDU6IE1pZ3JhdGUgUmVtb3RlUmVzb3VyY2VDYWNo
ZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCBhZThhNWU5ZTU2NjQuLjY5MjE4NGI1MDY0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcApAQCAtMjM4LDkgKzIzOCw3IEBAIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwCiAg
ICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciB7CiAgICAgICAgIGRlc3Rp
bmF0aW9uLmNvbnRleHQoKSwKICAgICAgICAgZGlzcGxheUxpc3QsCi0gICAgICAgICZyZW1vdGVS
ZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCksCi0gICAgICAgICZyZW1vdGVSZXNvdXJjZUNh
Y2hlKCkubmF0aXZlSW1hZ2VzKCksCi0gICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkuZm9u
dHMoKSwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5yZXNvdXJjZUhlYXAoKSwKICAg
ICAgICAgbV9jdXJyZW50TWFza0ltYWdlQnVmZmVyLmdldCgpLAogICAgICAgICAmcmVwbGF5ZXJE
ZWxlZ2F0ZQogICAgIH0ucmVwbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggZDUxZDYzYzhi
NGViLi5lZWJhZmY3MGQ5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTM4LDkgKzM4LDcgQEAg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVz
b3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNhY2hlJiYgb3RoZXIpCiAgICAgOiBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyKG90aGVyLm1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgLCBtX2ltYWdl
QnVmZmVycyhXVEZNb3ZlKG90aGVyLm1faW1hZ2VCdWZmZXJzKSkKLSAgICAsIG1fbmF0aXZlSW1h
Z2VzKFdURk1vdmUob3RoZXIubV9uYXRpdmVJbWFnZXMpKQotICAgICwgbV9mb250cyhXVEZNb3Zl
KG90aGVyLm1fZm9udHMpKQorICAgICwgbV9yZXNvdXJjZUhlYXAoV1RGTW92ZShvdGhlci5tX3Jl
c291cmNlSGVhcCkpCiAgICAgLCBtX3Jlc291cmNlVXNlQ291bnRlcnMoV1RGTW92ZShvdGhlci5t
X3Jlc291cmNlVXNlQ291bnRlcnMpKQogewogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygp
OwpAQCAtNTAsNyArNDgsNyBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VC
dWZmZXIoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBRdWFsaQogewogICAgIEFTU0VS
VChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2VCdWZmZXItPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmll
cik7Ci0gICAgbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIp
KTsKICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNl
VXNlQ291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNTksMTQgKzU3LDE0
IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIsIFF1YWxpCiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKICAgICBBU1NFUlQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5n
ZXRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQog
CiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUlt
YWdlPiYmIGltYWdlLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
KTsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlm
aWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgbV9uYXRpdmVJbWFnZXMuYWRk
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZSkpOwor
ICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0
KCksIFdURk1vdmUoaW1hZ2UpKTsKICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAog
ICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwpAQCAtNzUsMjEgKzczLDIxIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRp
dmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJlCiBOYXRpdmVJbWFn
ZSogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QK
IHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlm
aWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1h
Z2VzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVy
biBtX3Jlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIub2JqZWN0KCkpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udChS
ZWY8Rm9udD4mJiBmb250LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX2ZvbnRzLmFkZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOworICAgIG1f
cmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdU
Rk1vdmUoZm9udCkpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiB9CiAKIEZvbnQqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hl
ZEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250cy5nZXQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAu
Z2V0Rm9udChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGU6OmVuc3VyZVJlc291cmNlVXNlQ291bnRlcihRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpA
QCAtMTA1LDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5zdXJlUmVzb3Vy
Y2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlCiAKIHZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMoKQogewotICAgIG1fZm9udHMuY2xlYXIoKTsK
KyAgICBtX3Jlc291cmNlSGVhcC5kZWxldGVBbGxGb250cygpOwogfQogCiBib29sIFJlbW90ZVJl
c291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3Vu
dGVyc01hcDo6aXRlcmF0b3ImIGl0ZXJhdG9yKQpAQCAtMTQ5LDExICsxNDcsMTIgQEAgYm9vbCBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmkKIAogICAgIG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRl
cmF0b3IpOwogCi0gICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIub2JqZWN0KCkpIHx8IG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJl
bW92ZUltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkKKyAg
ICAgICAgfHwgbV9yZXNvdXJjZUhlYXAucmVtb3ZlTmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLm9iamVjdCgpKSkgewogICAgICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJs
ZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChtX2ZvbnRzLnJlbW92
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmIChtX3Jlc291
cmNlSGVhcC5yZW1vdmVGb250KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291
cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCkBAIC0xODUsNyAr
MTg0LDcgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjp1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKQogewotICAgIG1faGFzQWN0aXZlRHJhd2Fi
bGVzID0gIW1faW1hZ2VCdWZmZXJzLmlzRW1wdHkoKSB8fCAhbV9uYXRpdmVJbWFnZXMuaXNFbXB0
eSgpOworICAgIG1faGFzQWN0aXZlRHJhd2FibGVzID0gbV9yZXNvdXJjZUhlYXAuaGFzSW1hZ2VC
dWZmZXIoKSB8fCBtX3Jlc291cmNlSGVhcC5oYXNOYXRpdmVJbWFnZSgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDhmNDAwZDlmNTcyZC4uMjAxNjIyZGRk
N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTU0LDkgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
cmVsZWFzZVJlbW90ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgdWludDY0X3QgdXNlQ291bnQpOwogICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6Oklt
YWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1
ZmZlcnM7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUlt
YWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9Ci0gICAgY29uc3QgV2ViQ29y
ZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9u
dHM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwJiByZXNv
dXJjZUhlYXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSGVhcDsgfQogCiAgICAgYm9vbCBo
YXNBY3RpdmVEcmF3YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZURyYXdhYmxlczsg
fQogCkBAIC04OSw5ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwogCi0gICAgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1h
cCBtX25hdGl2ZUltYWdlczsKLSAgICBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAg
bV9mb250czsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwIG1fcmVzb3Vy
Y2VIZWFwOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1faGFzQWN0aXZlRHJhd2FibGVzIHsgZmFs
c2UgfTsKIAogICAgIFJlc291cmNlVXNlQ291bnRlcnNNYXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJz
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFm
MDU0NWRiZjliYS4uZTE1ZGRkZDQwMzQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMDcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgNjogQ29uc29saWRhdGUg
RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAxMzE2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTAtMDcgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gU2hhcmUgY2Fj
aGUgYmV0d2VlbiBwcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggOGExMzU5ZGZl
ODM2Li41YTYyZGFkOGFhY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRDRy5oPgogCkBAIC03MiwxMCArNzMsMTAgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBs
YXlXaXRoTWlzc2luZ1Jlc291cmNlKQogCiAgICAgewogICAgICAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Ci0gICAgICAgIElt
YWdlQnVmZmVySGFzaE1hcCBpbWFnZUJ1ZmZlck1hcDsKLSAgICAgICAgaW1hZ2VCdWZmZXJNYXAu
c2V0KGltYWdlQnVmZmVySWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgICAgIFJlc291cmNlSGVhcCByZXNvdXJjZUhlYXA7CisgICAgICAgIHJlc291cmNlSGVh
cC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
KTsKIAotICAgICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIGxpc3QsICZpbWFnZUJ1
ZmZlck1hcCB9OworICAgICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIGxpc3QsICZy
ZXNvdXJjZUhlYXAgfTsKICAgICAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsK
ICAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCwgbGlzdC5zaXplSW5C
eXRlcygpKTsKICAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZywgU3Rv
cFJlcGxheVJlYXNvbjo6UmVwbGF5ZWRBbGxJdGVtcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440639</attachid>
            <date>2021-10-08 10:27:43 -0700</date>
            <delta_ts>2021-10-11 21:49:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>38700</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGVlMWZhN2FiYjVkZmVkMzgwMzgyZjYwNTY5NWNjZTFjMjNiY2M0NDUKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgT2N0IDgg
MTA6MjY6NTkgMjAyMSAtMDcwMAoKICAgIFBhcnQgNgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzVmZjYzZjQw
OTcuLjg3NGU0ZGE0MjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTEwLTA4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDY6IENv
bnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRGlzcGxheSBsaXN0cyBuZWVkIHRvIGJlIHJlcGxheWVkIHdpdGhpbiBhIGNvbnRleHQs
IGFuZCB0aGF0IGNvbnRleHQgaW5jbHVkZXMgYSBjb2xsZWN0aW9uIG9mIHJlc291cmNlcworICAg
ICAgICB0aGF0IHRoZSBkaXNwbGF5IGxpc3QgaXRlbXMgbWlnaHQgcmVmZXJlbmNlLiBGb3IgZXhh
bXBsZSwgaWYgdGhlcmUncyBhIGRpc3BsYXkgbGlzdCBpdGVtIHRoYXQgc2F5cyB0byBkcmF3Cisg
ICAgICAgIGFuIGltYWdlLCB0aGUgaW1hZ2UgbmVlZHMgdG8gYmUgcHJlc2VudCBpbiB0aGUgY29s
bGVjdGlvbi4KKworICAgICAgICBXZSB3ZXJlIHJlcHJlc2VudGluZyB0aGlzIGNvbGxlY3Rpb24g
b2YgcmVzb3VyY2VzIGFzIDMgaW5kZXBlbmRlbnQgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFQ+cy4KKyAgICAgICAgVGhpcyBpcyBraW5kIG9mIHVuZm9ydHVuYXRlLCBiZWNh
dXNlIGl0IG1lYW5zIDMgb2JqZWN0cyBhcmUgcGFzc2VkIGFyb3VuZCBpbiBwYXJhbGxlbCBhcyBh
cmd1bWVudHMgdG8gdGhlCisgICAgICAgIHJlbGV2YW50IHBsYWNlcyB3aGljaCBuZWVkIHRoZW0u
IEl0J3MgbW9yZSBlbGVnYW50IHRvIHdyYXAgYW4gb2JqZWN0IGFyb3VuZCB0aGVzZSAzIEhhc2hN
YXBzLCB0byBhdm9pZAorICAgICAgICBwb2xsdXRpbmcgZnVuY3Rpb25zJyBwYXJhbWV0ZXIgbGlz
dHMuCisKKyAgICAgICAgTm90IG9ubHkgdGhhdCwgYnV0IHRoZSBHUFUgcHJvY2VzcyBkb2Vzbid0
IHdhbnQgdGhlIGtleSB0byB0aGVzZSBIYXNoTWFwcyB0byBiZSBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzLgorICAgICAgICBJbnN0ZWFkLCB0aGUgR1BVIHByb2Nlc3Mgd2FudHMgdGhlIGtl
eSB0byBiZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIChzZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzYzOCkuIFdyYXBw
aW5nIGFuIG9iamVjdCBhcm91bmQgdGhlc2UgSGFzaE1hcHMgYWxsb3dzIGEgbGF5ZXIgb2YKKyAg
ICAgICAgaW5kaXJlY3Rpb24sIHdoZXJlIHRoZSBHUFUgcHJvY2VzcyBjYW4gaW1wbGVtZW50IHRo
ZSBpbnRlcmZhY2Ugb2YgdGhpcyBvYmplY3QsIGJ1dCBpbnRlcm5hbGx5IHJlcHJlc2VudCB0aGUK
KyAgICAgICAgSGFzaE1hcHMgdXNpbmcgZGlmZmVyZW50IGtleXMuIFdlYkNvcmUgc2hvdWxkbid0
IGtub3cgYWJvdXQgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycywgc28gdGhp
cworICAgICAgICBsYXllciBvZiBpbmRpcmVjdGlvbiBpcyBuZWNlc3NhcnkgZm9yIHRoYXQgZ29h
bC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX25hdGl2ZUltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnJl
c291cmNlSGVhcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6aW1hZ2VCdWZmZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
Zm9udHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5
Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBs
eUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlc291cmNlSGVhcDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldEZvbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VC
dWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKToKKwog
MjAyMS0xMC0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBXVEY6Okl0ZXJhdG9yUmFuZ2UgcmV2ZXJzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4MjM4ZTczN2I5ZS4uMmRk
NTFhMDI4N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02NTAsNiArNjUwLDcgQEAKIAkJMUNBRjM0ODIwQTZDNDA1MjAwQUJF
MDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3QubW0gKi87IH07CiAJCTFDQUYzNDgzMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUY1NkRC
MjUzMDFBQzgwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAv
KiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkxQ0JGOTAwRjI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RS
ZXNvdXJjZUhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQkY5MDBEMjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5TGlzdFJlc291cmNlSGVhcC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQzU0
QUZFMjcwRjk2QUUwMDVCRjhCRSAvKiBQcm9jZXNzUXVhbGlmaWVkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0M1NEFGQjI3MEY5MkRBMDA1QkY4QkUg
LyogUHJvY2Vzc1F1YWxpZmllZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFDQ0Q4MTUwMjIzMUY4M0UwMDY1RkMyQiAvKiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxNDE2RkQyMzRGMDAzRDdBREIgLyogV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tICovOyB9OwogCQkx
Q0NERjVCRTE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDREY1QkMxOTkwMzMy
NDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLzsgfTsKQEAgLTcwNDksNiAr
NzA1MCw3IEBACiAJCTFDQUY1NkRFMjUzMDI0NUEwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3R2x5cGhzUmVjb3JkZXJDb3Jl
VGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEY4MjE3QjgzOTMw
MDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I2
QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0VW5kZXJsaW5lT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQkY5MDBEMjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0M1NEFGQjI3MEY5MkRBMDA1QkY4QkUgLyogUHJvY2Vzc1F1YWxpZmll
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzUXVhbGlmaWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RvT1RG
Rm9udENvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVC
QzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODIwOSw2ICsxODIxMSw3IEBACiAJCQkJMEZFNUZCRDEx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKIAkJCQkxQ0U4ODYz
RTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCiAJCQkJMUNF
ODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLywKKwkJCQkx
Q0JGOTAwRDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gZGlzcGxheWxpc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTMxNTY4LDYgKzMxNTcxLDcgQEAKIAkJCQkxQThBNjQ2MDFEMTlGQ0ZDMDBEMEUwMEYg
LyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMkM1OUYzMjAzNUZDRTIwMDEyMjM2QiAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBk
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThBNjQ2MzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBw
bGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkY5MDBG
MjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE4RjZCQkQwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBOEY2QkJGMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0
MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggYTdjY2FjMTIwN2Q0Li45ZmM0ZWE4MmViYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM5MSw4ICszOTEs
NiBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CiAgICAgcmV0dXJuIHdpZHRoOwogfQogCi11c2luZyBGb250UmVuZGVyaW5nUmVzb3Vy
Y2VNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEZvbnQ+PjsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDEzOTc4MDFiNGQ4
ZS4uNGI3MWQxZDZkYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKQEAgLTE0Miw2ICsxNDIsNCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKIH07CiAKLXVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8SW1hZ2VCdWZmZXI+PjsKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmgKaW5kZXggNDM2YjZhNTQzZGFiLi43OTJiZGE2OTUwM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtNzUsNiArNzUsNCBA
QCBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKIH07CiAKLXVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hN
YXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+PjsKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggY2IyMzUz
MDdmOGFiLi5kZmY0MTQ0MjYxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtNTIs
OCArNTIsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKCkgY29uc3QKICNlbmRpZgogCiBEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QoRGlzcGxheUxpc3QmJiBvdGhlcikKLSAgICA6IG1faW1hZ2VC
dWZmZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSkpCi0gICAgLCBt
X25hdGl2ZUltYWdlcyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pKQor
ICAgIDogbV9yZXNvdXJjZUhlYXAoc3RkOjpleGNoYW5nZShvdGhlci5tX3Jlc291cmNlSGVhcCwg
eyB9KSkKICAgICAsIG1faXRlbXMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zLCBudWxscHRy
KSkKICAgICAsIG1fZHJhd2luZ0l0ZW1FeHRlbnRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kcmF3
aW5nSXRlbUV4dGVudHMsIHsgfSkpCiB7CkBAIC02OSw4ICs2OCw3IEBAIERpc3BsYXlMaXN0Ojp+
RGlzcGxheUxpc3QoKSA9IGRlZmF1bHQ7CiAKIERpc3BsYXlMaXN0JiBEaXNwbGF5TGlzdDo6b3Bl
cmF0b3I9KERpc3BsYXlMaXN0JiYgb3RoZXIpCiB7Ci0gICAgbV9pbWFnZUJ1ZmZlcnMgPSBzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pOwotICAgIG1fbmF0aXZlSW1hZ2Vz
ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KTsKKyAgICBtX3Jlc291
cmNlSGVhcCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXNvdXJjZUhlYXAsIHsgfSk7CiAgICAg
bV9pdGVtcyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cik7CiAgICAgbV9k
cmF3aW5nSXRlbUV4dGVudHMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRl
bnRzLCB7IH0pOwogICAgIHJldHVybiAqdGhpczsKQEAgLTgxLDggKzc5LDcgQEAgdm9pZCBEaXNw
bGF5TGlzdDo6Y2xlYXIoKQogICAgIGlmIChtX2l0ZW1zKQogICAgICAgICBtX2l0ZW1zLT5jbGVh
cigpOwogICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzLmNsZWFyKCk7Ci0gICAgbV9pbWFnZUJ1ZmZl
cnMuY2xlYXIoKTsKLSAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOworICAgIG1fcmVzb3VyY2VI
ZWFwLmNsZWFyKCk7CiB9CiAKIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhB
c1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApp
bmRleCAyMjY4NGRjMzk4ZTEuLmYyNDVkMGI1MTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJl
c291cmNlSGVhcC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTczLDkgKzc0LDcgQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGFzVGV4dChBc1RleHRGbGFncykgY29uc3Q7CiAKLSAgICBjb25zdCBJbWFn
ZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJzOyB9Ci0gICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQotICAgIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNv
dXJjZU1hcCYgZm9udHMoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRzOyB9CisgICAgY29uc3QgUmVz
b3VyY2VIZWFwJiByZXNvdXJjZUhlYXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSGVhcDsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChJ
dGVtQnVmZmVyUmVhZGluZ0NsaWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXRl
bUJ1ZmZlcldyaXRpbmdDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQqKTsKQEAgLTExMywz
MCArMTEyLDIyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQogICAgIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZl
cnMuZW5zdXJlKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0o
KSB7Ci0gICAgICAgICAgICByZXR1cm4gUmVmIHsgaW1hZ2VCdWZmZXIgfTsKLSAgICAgICAgfSk7
CisgICAgICAgIG1fcmVzb3VyY2VIZWFwLmFkZChpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgUmVmIHsgaW1hZ2VCdWZmZXIgfSk7CiAgICAgfQogCiAgICAgdm9pZCBj
YWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKICAgICB7Ci0gICAgICAgIG1fbmF0
aXZlSW1hZ2VzLmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZd
KCkgewotICAgICAgICAgICAgcmV0dXJuIFJlZiB7IGltYWdlIH07Ci0gICAgICAgIH0pOworICAg
ICAgICBtX3Jlc291cmNlSGVhcC5hZGQoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCksIFJlZiB7IGltYWdlIH0pOwogICAgIH0KIAogICAgIHZvaWQgY2FjaGVGb250KEZvbnQmIGZv
bnQpCiAgICAgewotICAgICAgICBtX2ZvbnRzLmVuc3VyZShmb250LnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpLCBbJl0oKSB7Ci0gICAgICAgICAgICByZXR1cm4gUmVmIHsgZm9udCB9Owot
ICAgICAgICB9KTsKKyAgICAgICAgbV9yZXNvdXJjZUhlYXAuYWRkKGZvbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIFJlZiB7IGZvbnQgfSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKIAotICAgIElt
YWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKLSAgICBOYXRpdmVJbWFnZUhhc2hNYXAg
bV9uYXRpdmVJbWFnZXM7Ci0gICAgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwIG1fZm9udHM7Cisg
ICAgUmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVt
QnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+IG1f
ZHJhd2luZ0l0ZW1FeHRlbnRzOwogICAgIGJvb2wgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHMg
eyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXgg
Y2QzZDEwZDI3NzU1Li45NDFjMjA5M2NmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
SXRlbXMuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXNvdXJjZUhlYXAuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAt
MzYsMTMgKzM3LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCi1SZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1h
Z2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgY29uc3Qg
Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwKiBmb250cywgSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZUJ1
ZmZlciwgRGVsZWdhdGUqIGRlbGVnYXRlKQorUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBSZXNv
dXJjZUhlYXAqIHJlc291cmNlSGVhcCwgSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZUJ1ZmZlciwgRGVs
ZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21hc2tJ
bWFnZUJ1ZmZlcihtYXNrSW1hZ2VCdWZmZXIpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlM
aXN0KQotICAgICwgbV9pbWFnZUJ1ZmZlcnMoaW1hZ2VCdWZmZXJzID8gKmltYWdlQnVmZmVycyA6
IG1fZGlzcGxheUxpc3QuaW1hZ2VCdWZmZXJzKCkpCi0gICAgLCBtX25hdGl2ZUltYWdlcyhuYXRp
dmVJbWFnZXMgPyAqbmF0aXZlSW1hZ2VzIDogbV9kaXNwbGF5TGlzdC5uYXRpdmVJbWFnZXMoKSkK
LSAgICAsIG1fZm9udHMoZm9udHMgPyAqZm9udHMgOiBtX2Rpc3BsYXlMaXN0LmZvbnRzKCkpCisg
ICAgLCBtX3Jlc291cmNlSGVhcChyZXNvdXJjZUhlYXAgPyAqcmVzb3VyY2VIZWFwIDogbV9kaXNw
bGF5TGlzdC5yZXNvdXJjZUhlYXAoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9
CkBAIC01NSwxMSArNTQsMTEgQEAgR3JhcGhpY3NDb250ZXh0JiBSZXBsYXllcjo6Y29udGV4dCgp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZm
ZXJzLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxp
bmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBs
eUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNl
SGVhcCYgcmVzb3VyY2VIZWFwLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSog
ZGVsZWdhdGUpCiB7CiAgICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsK
ICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZl
cklkZW50aWZpZXIoKTsKLSAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMu
Z2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBy
ZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAg
ICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlQnVmZmVyKTsKICAgICAgICAg
aWYgKGRlbGVnYXRlKQogICAgICAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHJl
c291cmNlSWRlbnRpZmllcik7CkBAIC02OSwxMSArNjgsMTEgQEAgaW5saW5lIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0
ZW0oR3IKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFn
ZXMsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKK2lubGlu
ZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VI
ZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRlbGVnYXRlKiBk
ZWxlZ2F0ZSkKIHsKICAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdldDxUPigpOwog
ICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gbmF0aXZlSW1hZ2VJdGVtLmltYWdlSWRlbnRp
ZmllcigpOwotICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQocmVzb3VyY2VJ
ZGVudGlmaWVyKSkgeworICAgIGlmIChhdXRvKiBpbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRp
dmVJbWFnZShyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5h
cHBseShjb250ZXh0LCAqaW1hZ2UpOwogICAgICAgICBpZiAoZGVsZWdhdGUpCiAgICAgICAgICAg
ICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UocmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTgy
LDcgKzgxLDcgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3IKICAgICByZXR1cm4gcmVzb3VyY2VJ
ZGVudGlmaWVyOwogfQogCi1pbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0
ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBJ
dGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgYXV0
byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAKQEAgLTkyLDEzICs5MSwx
MyBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVy
bkltYWdlID0gbnVsbHB0cjsKIAogICAgIGlmICgoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVy
KCkpKSB7Ci0gICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQoc3Ry
b2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIHN0cm9rZVBh
dHRlcm5JbWFnZSA9IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShzdHJva2VQYXR0ZXJuUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1h
Z2UpCiAgICAgICAgICAgICByZXR1cm4gc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKICAgICB9CiAKICAgICBpZiAoKGZpbGxQYXR0ZXJuUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpKSB7
Ci0gICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KGZpbGxQYXR0ZXJu
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9
IHJlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKICAgICAgICAgICAg
IHJldHVybiBmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICB9CkBA
IC0xMTYsMTEgKzExNSwxMSBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5
ZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKK2lubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVt
LCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIGZvbnRJdGVtID0g
aXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVtLmZv
bnRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3VyY2VJ
ZGVudGlmaWVyKSkgeworICAgIGlmIChhdXRvKiBmb250ID0gcmVzb3VyY2VIZWFwLmdldEZvbnQo
cmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBmb250SXRlbS5hcHBseShjb250ZXh0LCAq
Zm9udCk7CiAgICAgICAgIGlmIChkZWxlZ2F0ZSkKICAgICAgICAgICAgIGRlbGVnYXRlLT5yZWNv
cmRSZXNvdXJjZVVzZShyZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMTM1LDM3ICsxMzQsMzcgQEAg
c3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKIAogICAgIGlmIChpdGVtLmlzPERyYXdJbWFnZUJ1ZmZlcj4oKSkgewot
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJ
bWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJz
LCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29u
dGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxDbGlw
VG9JbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNv
bnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBpZiAo
YXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0
ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1f
ZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIp
IH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAg
fQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7Ci0gICAgICAgIGlmIChh
dXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRl
bTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0sIG1fZGVs
ZWdhdGUpKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1fcmVz
b3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPERyYXdHbHlwaHM+KCkpIHsK
LSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX2ZvbnRzLCBpdGVtLCBtX2RlbGVnYXRl
KSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwg
bV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
cikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAg
ICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewotICAgICAgICBpZiAoYXV0
byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08
RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0sIG1fZGVsZWdhdGUp
KQorICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAs
IGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNv
bjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8U2V0U3RhdGU+KCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVt
KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0sIG1fZGVsZWdhdGUpKQorICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0
ZW0oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdU
Rk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJu
IHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA2YTQ2NDMyN2NjZjEuLjkyODViYmRkMTAwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0zNyw2ICszNyw4IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorY2xhc3Mg
UmVzb3VyY2VIZWFwOworCiBlbnVtIGNsYXNzIFN0b3BSZXBsYXlSZWFzb24gOiB1aW50OF90IHsK
ICAgICBSZXBsYXllZEFsbEl0ZW1zLAogICAgIE1pc3NpbmdDYWNoZWRSZXNvdXJjZSwKQEAgLTU3
LDcgKzU5LDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
cGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IElt
YWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0g
bnVsbHB0ciwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwKiA9IG51bGxwdHIsIFdlYkNv
cmU6OkltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBu
dWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IFJlc291cmNlSGVhcCogPSBudWxscHRyLCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciogbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVs
bHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBSZXBsYXlSZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7
IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNzgsOSArODAsNyBAQCBwcml2
YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CiAgICAgY29uc3QgRGlzcGxheUxpc3Qm
IG1fZGlzcGxheUxpc3Q7Ci0gICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVm
ZmVyczsKLSAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOwotICAg
IGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgbV9mb250czsKKyAgICBjb25zdCBSZXNv
dXJjZUhlYXAmIG1fcmVzb3VyY2VIZWFwOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNhODczZmI2MDgwZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlc291cmNlSGVhcC5oCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJG
b250LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5o
IgorI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworY2xhc3MgUmVzb3VyY2VIZWFwIHsK
K3B1YmxpYzoKKyAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCisg
ICAgeworICAgICAgICBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisgICAgfQorCisgICAgdm9pZCBhZGQoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5h
dGl2ZUltYWdlPiYmIGltYWdlKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVJbWFnZXMuYWRkKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOworICAgIH0KKworICAg
IHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFJlZjxGb250PiYmIGZvbnQpCisgICAgeworICAgICAgICBtX2ZvbnRzLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOworICAgIH0KKworICAg
IEltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
KworICAgIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2ZvbnRzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGJv
b2wgaGFzSW1hZ2VCdWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX2ltYWdl
QnVmZmVycy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNOYXRpdmVJbWFnZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fbmF0aXZlSW1hZ2VzLmlzRW1wdHkoKTsKKyAg
ICB9CisKKyAgICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFt
X2ZvbnRzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZUltYWdlQnVmZmVyKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgYm9vbCByZW1vdmVOYXRpdmVJbWFnZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlRm9udChSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX2ltYWdlQnVmZmVycy5j
bGVhcigpOworICAgICAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOworICAgICAgICBtX2ZvbnRz
LmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVBbGxGb250cygpCisgICAgeworICAg
ICAgICBtX2ZvbnRzLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hNYXA8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8SW1hZ2VCdWZmZXI+PiBtX2ltYWdlQnVmZmVy
czsKKyAgICBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUlt
YWdlPj4gbV9uYXRpdmVJbWFnZXM7CisgICAgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFJlZjxGb250Pj4gbV9mb250czsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZmIyN2M2
ZjJlZmMyLi5jNjNmYWM0MjU0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTAt
MDggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgNjog
Q29uc29saWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDExCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NDAxMzE2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRp
dmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNh
Y2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZv
bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVB
bGxGb250cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVt
b3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjp1cGRh
dGVIYXNBY3RpdmVEcmF3YWJsZXMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpyZXNvdXJjZUhlYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjppbWFnZUJ1ZmZlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJbWFnZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpmb250cyBjb25zdCk6IERlbGV0ZWQuCisKIDIw
MjEtMTAtMDggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBh
cnQgNTogTWlncmF0ZSBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGExNzM1NDU5YzQz
ZC4uZDJkOTMyMzVhNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMzgsOSArMjM4
LDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpz
dWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAgZGVzdGluYXRpb24uY29udGV4dCgpLAogICAgICAg
ICBkaXNwbGF5TGlzdCwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZl
cnMoKSwKLSAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKSwKLSAg
ICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250cygpLAorICAgICAgICAmcmVtb3RlUmVz
b3VyY2VDYWNoZSgpLnJlc291cmNlSGVhcCgpLAogICAgICAgICBtX2N1cnJlbnRNYXNrSW1hZ2VC
dWZmZXIuZ2V0KCksCiAgICAgICAgICZyZXBsYXllckRlbGVnYXRlCiAgICAgfS5yZXBsYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmNwcAppbmRleCBkNTFkNjNjOGI0ZWIuLmVlYmFmZjcwZDk3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcApAQCAtMzgsOSArMzgsNyBAQCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1v
dGVSZXNvdXJjZUNhY2hlKFByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQog
CiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlc291cmNl
Q2FjaGUmJiBvdGhlcikKICAgICA6IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIob3RoZXIubV93ZWJQ
cm9jZXNzSWRlbnRpZmllcikKLSAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUob3RoZXIubV9p
bWFnZUJ1ZmZlcnMpKQotICAgICwgbV9uYXRpdmVJbWFnZXMoV1RGTW92ZShvdGhlci5tX25hdGl2
ZUltYWdlcykpCi0gICAgLCBtX2ZvbnRzKFdURk1vdmUob3RoZXIubV9mb250cykpCisgICAgLCBt
X3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VIZWFwKSkKICAgICAsIG1fcmVz
b3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VVc2VDb3VudGVycykpCiB7
CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CkBAIC01MCw3ICs0OCw3IEBAIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIFF1YWxpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSA9PSBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX2ltYWdlQnVmZmVycy5h
ZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlQnVm
ZmVyKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURy
YXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CkBAIC01OSwxNCArNTcsMTQgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgUXVh
bGkKIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3Qo
KSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7
CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBpbWFn
ZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZSkpOwogICAg
IHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3Vu
dGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC03NSwyMSArNzMsMjEgQEAgdm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4m
JiBpbWFnZSwgUXVhbGlmaWVkUmUKIE5hdGl2ZUltYWdlKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZWROYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2
ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQsIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBm
b250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIpOwotICAgIG1fZm9udHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSwgV1RGTW92ZShmb250KSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShmb250KSk7CiAKICAgICBlbnN1
cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
Rm9udCogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udChRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewot
ICAgIHJldHVybiBtX2ZvbnRzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0
KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRGb250KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5z
dXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjplbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGUKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxG
b250cygpCiB7Ci0gICAgbV9mb250cy5jbGVhcigpOworICAgIG1fcmVzb3VyY2VIZWFwLmRlbGV0
ZUFsbEZvbnRzKCk7CiB9CiAKIGJvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVS
ZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwOjppdGVyYXRvciYgaXRlcmF0
b3IpCkBAIC0xNDksMTEgKzE0NywxMiBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJl
UmVtb3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaQogCiAgICAg
bV9yZXNvdXJjZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7CiAKLSAgICBpZiAobV9pbWFn
ZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkgfHwg
bV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3Qo
KSkpIHsKKyAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VCdWZmZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKQorICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5y
ZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKSB7
CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgaWYgKG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSkpCisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQg
YmVmb3JlIHJlbGVhc2luZyBpdC4KQEAgLTE4NSw3ICsxODQsNyBAQCBib29sIFJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnVwZGF0ZUhhc0FjdGl2ZURyYXdh
YmxlcygpCiB7Ci0gICAgbV9oYXNBY3RpdmVEcmF3YWJsZXMgPSAhbV9pbWFnZUJ1ZmZlcnMuaXNF
bXB0eSgpIHx8ICFtX25hdGl2ZUltYWdlcy5pc0VtcHR5KCk7CisgICAgbV9oYXNBY3RpdmVEcmF3
YWJsZXMgPSBtX3Jlc291cmNlSGVhcC5oYXNJbWFnZUJ1ZmZlcigpIHx8IG1fcmVzb3VyY2VIZWFw
Lmhhc05hdGl2ZUltYWdlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmgKaW5kZXggOGY0MDBkOWY1NzJkLi4yMDE2MjJkZGQ3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAt
NTQsOSArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7CiAg
ICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1
ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAgIGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVJbWFnZXM7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VN
YXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQorICAgIGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBib29sIGhhc0FjdGl2ZURyYXdhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQWN0aXZlRHJhd2FibGVzOyB9CiAKQEAgLTg5LDkgKzg3LDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50
aWZpZXI7CiAKLSAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7
Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotICAgIFdl
YkNvcmU6OkZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjphdG9taWM8
Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogCiAgICAgUmVzb3VyY2VVc2VD
b3VudGVyc01hcCBtX3Jlc291cmNlVXNlQ291bnRlcnM7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ZkYWVhZDk2Y2NjLi5jZDNhN2RhMTBmNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0xMC0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcnMgUGFydCA2OiBDb25zb2xpZGF0ZSBEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDEzMTY3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0xMC0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBXVEY6Okl0ZXJhdG9yUmFuZ2UgcmV2ZXJzaWJsZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcAppbmRleCA4YTEzNTlkZmU4MzYuLjVhNjJkYWQ4YWFjZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHND
Ry5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJl
c291cmNlSGVhcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAKQEAgLTcyLDEwICs3MywxMCBAQCBURVNUKERp
c3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAKICAgICB7CiAgICAg
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKLSAgICAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIGltYWdlQnVmZmVyTWFwOwotICAg
ICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsK
KyAgICAgICAgcmVzb3VyY2VIZWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY29u
dGV4dCwgbGlzdCwgJmltYWdlQnVmZmVyTWFwIH07CisgICAgICAgIFJlcGxheWVyIHJlcGxheWVy
IHsgY29udGV4dCwgbGlzdCwgJnJlc291cmNlSGVhcCB9OwogICAgICAgICBhdXRvIHJlc3VsdCA9
IHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm51bWJlck9mQnl0
ZXNSZWFkLCBsaXN0LnNpemVJbkJ5dGVzKCkpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0LnJl
YXNvbkZvclN0b3BwaW5nLCBTdG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zKTsK
</data>
<flag name="review"
          id="464969"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="464973"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440892</attachid>
            <date>2021-10-11 22:39:48 -0700</date>
            <delta_ts>2021-10-11 23:26:20 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-231411-20211011223947.patch</filename>
            <type>text/plain</type>
            <size>41570</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk5ZmI1NjNjOTU3Nzhj
MDdhNzc1MTY1MWI2YTYwMzgyOTk0ODYzYi4uYmE3M2I5ODM0ZWFjOGYwMGM3MTM2MDEzOGY5ZjZl
ZDUwNTk5ZDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTEwLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDg6IENvbnNvbGlk
YXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQw
MTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIERp
c3BsYXkgbGlzdHMgbmVlZCB0byBiZSByZXBsYXllZCB3aXRoaW4gYSBjb250ZXh0LCBhbmQgdGhh
dCBjb250ZXh0IGluY2x1ZGVzIGEgY29sbGVjdGlvbiBvZiByZXNvdXJjZXMKKyAgICAgICAgdGhh
dCB0aGUgZGlzcGxheSBsaXN0IGl0ZW1zIG1pZ2h0IHJlZmVyZW5jZS4gRm9yIGV4YW1wbGUsIGlm
IHRoZXJlJ3MgYSBkaXNwbGF5IGxpc3QgaXRlbSB0aGF0IHNheXMgdG8gZHJhdworICAgICAgICBh
biBpbWFnZSwgdGhlIGltYWdlIG5lZWRzIHRvIGJlIHByZXNlbnQgaW4gdGhlIGNvbGxlY3Rpb24u
CisKKyAgICAgICAgV2Ugd2VyZSByZXByZXNlbnRpbmcgdGhpcyBjb2xsZWN0aW9uIG9mIHJlc291
cmNlcyBhcyAzIGluZGVwZW5kZW50IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBUPnMuCisgICAgICAgIFRoaXMgaXMga2luZCBvZiB1bmZvcnR1bmF0ZSwgYmVjYXVzZSBpdCBt
ZWFucyAzIG9iamVjdHMgYXJlIHBhc3NlZCBhcm91bmQgaW4gcGFyYWxsZWwgYXMgYXJndW1lbnRz
IHRvIHRoZQorICAgICAgICByZWxldmFudCBwbGFjZXMgd2hpY2ggbmVlZCB0aGVtLiBJdCdzIG1v
cmUgZWxlZ2FudCB0byB3cmFwIGFuIG9iamVjdCBhcm91bmQgdGhlc2UgMyBIYXNoTWFwcywgdG8g
YXZvaWQKKyAgICAgICAgcG9sbHV0aW5nIGZ1bmN0aW9ucycgcGFyYW1ldGVyIGxpc3RzLgorCisg
ICAgICAgIE5vdCBvbmx5IHRoYXQsIGJ1dCB0aGUgR1BVIHByb2Nlc3MgZG9lc24ndCB3YW50IHRo
ZSBrZXkgdG8gdGhlc2UgSGFzaE1hcHMgdG8gYmUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
cy4KKyAgICAgICAgSW5zdGVhZCwgdGhlIEdQVSBwcm9jZXNzIHdhbnRzIHRoZSBrZXkgdG8gYmUg
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyAoc2VlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2MzgpLiBXcmFwcGluZyBhbiBv
YmplY3QgYXJvdW5kIHRoZXNlIEhhc2hNYXBzIGFsbG93cyBhIGxheWVyIG9mCisgICAgICAgIGlu
ZGlyZWN0aW9uLCB3aGVyZSB0aGUgR1BVIHByb2Nlc3MgY2FuIGltcGxlbWVudCB0aGUgaW50ZXJm
YWNlIG9mIHRoaXMgb2JqZWN0LCBidXQgaW50ZXJuYWxseSByZXByZXNlbnQgdGhlCisgICAgICAg
IEhhc2hNYXBzIHVzaW5nIGRpZmZlcmVudCBrZXlzLiBXZWJDb3JlIHNob3VsZG4ndCBrbm93IGFi
b3V0IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMsIHNvIHRoaXMKKyAgICAg
ICAgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gaXMgbmVjZXNzYXJ5IGZvciB0aGF0IGdvYWwuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjptX25hdGl2ZUltYWdlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6OnJlc291cmNlSGVhcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aW1hZ2VCdWZmZXJzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
bmF0aXZlSW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6Zm9udHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmdldEZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291
cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpy
ZW1vdmVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmRl
bGV0ZUFsbEZvbnRzKToKKwogMjAyMS0xMC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcnMgUGFydCA2OiBVbmlxdWlmeSBtb3JlIG9mIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIgYXQgZW50cnkgcG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQxMWMyNTU5ZWI1ODQ5ZDc1
N2E3Mzk0ZmVmMjZlNjNjZDI1YTQwOTYuLjc4NmIxOGZlODAxOGRkNDg5MzUwYThiNzNjYTBjZGY0
NDkwNWM5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTAtMTEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgODogQ29uc29saWRhdGUg
RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAxMzE2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6dXBkYXRlSGFzQWN0aXZlRHJh
d2FibGVzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVzb3VyY2VIZWFw
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6aW1hZ2VCdWZm
ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6bmF0aXZlSW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Zm9udHMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTEwLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDU6IE1pZ3JhdGUg
UmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGM0MTRjY2I4N2JlYzM0NzIxM2Y5ZDEwYzFlNjlhZmVi
NmU3YzI1MjQuLjE5OTEyYmQ1ZDkwNjFiZTc4ZDNhOWJiY2ZhY2EyMmIwNTc3NDNhYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTQwNCw2ICsxNDA0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0YmY0NDQ5ZDA3NDE1ZmZjOWUwMGVhMTVi
Y2EzNWEyNjljZWU1NDguLjU5ZDZlZWY3MTBiMzljMjhhYzE0YjI3ZjUzMTkwYzUyZTg0YzkzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTY1MCw2ICs2NTAsNyBAQAogCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2Vi
U2NyaXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLzsg
fTsKIAkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDgw
MEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjU2REIyNTMwMUFDODAw
MTdCNDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERyYXdHbHlw
aHNSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTFDQkY5MDBGMjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5TGlzdFJlc291cmNlSGVh
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCRjkw
MEQyNzBGRjhGNjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDNTRBRkUyNzBGOTZB
RTAwNUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzU0QUZCMjcwRjkyREEwMDVCRjhCRSAvKiBQcm9jZXNz
UXVhbGlmaWVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUNDRDgxNTAyMjMxRjgzRTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5
MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQg
LyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovOyB9OwpAQCAtNzA3Myw2ICs3MDc0LDcgQEAK
IAkJMUNBRjU2REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8q
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEZCMjE3Qjgz
OTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRV
bmRlcmxpbmVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCRjkwMEQy
NzBGRjhGNjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQzU0QUZCMjcwRjkyREEwMDVCRjhCRSAvKiBQcm9jZXNzUXVhbGlmaWVkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2Nlc3NRdWFsaWZpZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQ0RGNUJDMTk5MDMzMjQw
MEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4MjgwLDYgKzE4MjgyLDcgQEAKIAkJCQkwRkU1RkJDRjFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZCRDEx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKKwkJCQkxQ0JGOTAw
RDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLywKIAkJCQkx
Q0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCiAJ
CQkJMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLywK
IAkJCSk7CkBAIC0zMjQ1Nyw2ICszMjQ2MCw3IEBACiAJCQkJRjQyOTk1MEYyNzBFNzUwMDAwMzIy
OThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3
MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkY5MDBGMjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5
TGlzdFJlc291cmNlSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAw
MTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQy
OUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCQjVGQkUyNjA5OTFEMjAwNTQ1NzJDIC8qIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCmluZGV4IGE3Y2NhYzEyMDdkNDk5YjU3OWY1N2Y2NTkzYmU3N2NmYjM3
MGI2ZTAuLjlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM5MSw4ICszOTEsNiBAQCBBTFdB
WVNfSU5MSU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAg
ICAgcmV0dXJuIHdpZHRoOwogfQogCi11c2luZyBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEZvbnQ+PjsKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDgxNjBkZGYwYTE5YzMzMGRjZTVk
MzIxNjNhZGE4MjM2ZTVhNDE0NDkuLmEwNTkyYjk5Yjg4ZGJlMDE4ZmE5NWM1YTMwNWQyOTgyYzAy
NGY2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtMTQyLDYgKzE0Miw0IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogfTsKIAotdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFJlZjxJbWFnZUJ1ZmZlcj4+OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApp
bmRleCA0MzZiNmE1NDNkYWJlMDk3NTRiZmEwNjA5ODc4NDU2MjBiOTFiNGFhLi43OTJiZGE2OTUw
M2RhYTE3N2RlYjRjZGFhYzY0Mjc1MTkyZmViZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTc1LDYgKzc1LDQgQEAgcHJpdmF0ZToK
ICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI7CiB9OwogCi11c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj47Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGNiMjM1MzA3ZjhhYjRiNGZm
YmQ2ZGI5OTJlNzg0NWFlMjllMWQ5YTAuLmRmZjQxNDQyNjE5NjdiZmU4ZGUyZGVjOTJjNmY5Mzk4
MzJkZTE3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtNTIsOCArNTIsNyBAQCB2
b2lkIERpc3BsYXlMaXN0OjpkdW1wKCkgY29uc3QKICNlbmRpZgogCiBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QoRGlzcGxheUxpc3QmJiBvdGhlcikKLSAgICA6IG1faW1hZ2VCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSkpCi0gICAgLCBtX25hdGl2ZUltYWdl
cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pKQorICAgIDogbV9yZXNv
dXJjZUhlYXAoc3RkOjpleGNoYW5nZShvdGhlci5tX3Jlc291cmNlSGVhcCwgeyB9KSkKICAgICAs
IG1faXRlbXMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zLCBudWxscHRyKSkKICAgICAsIG1f
ZHJhd2luZ0l0ZW1FeHRlbnRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kcmF3aW5nSXRlbUV4dGVu
dHMsIHsgfSkpCiB7CkBAIC02OSw4ICs2OCw3IEBAIERpc3BsYXlMaXN0Ojp+RGlzcGxheUxpc3Qo
KSA9IGRlZmF1bHQ7CiAKIERpc3BsYXlMaXN0JiBEaXNwbGF5TGlzdDo6b3BlcmF0b3I9KERpc3Bs
YXlMaXN0JiYgb3RoZXIpCiB7Ci0gICAgbV9pbWFnZUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pOwotICAgIG1fbmF0aXZlSW1hZ2VzID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KTsKKyAgICBtX3Jlc291cmNlSGVhcCA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXNvdXJjZUhlYXAsIHsgfSk7CiAgICAgbV9pdGVtcyA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cik7CiAgICAgbV9kcmF3aW5nSXRlbUV4
dGVudHMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0pOwog
ICAgIHJldHVybiAqdGhpczsKQEAgLTgxLDggKzc5LDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xl
YXIoKQogICAgIGlmIChtX2l0ZW1zKQogICAgICAgICBtX2l0ZW1zLT5jbGVhcigpOwogICAgIG1f
ZHJhd2luZ0l0ZW1FeHRlbnRzLmNsZWFyKCk7Ci0gICAgbV9pbWFnZUJ1ZmZlcnMuY2xlYXIoKTsK
LSAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOworICAgIG1fcmVzb3VyY2VIZWFwLmNsZWFyKCk7
CiB9CiAKIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgSXRlbUhhbmRsZSBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA4OTg2ZThj
MzI5ZjBhMTFlODQ4MzAxMTk5NWIzNmQzYmExNjE3NjhlLi44NmYzMzBlZDU5ZDNkZDBmNDgzMTE5
ZTQxNjQ5OWY1NzUzOGRiMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgiCiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgpAQCAtNzMsOSArNzQsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
YXNUZXh0KEFzVGV4dEZsYWdzKSBjb25zdDsKIAotICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KLSAgICBj
b25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlSW1hZ2VzOyB9Ci0gICAgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250
cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udHM7IH0KKyAgICBjb25zdCBSZXNvdXJjZUhlYXAmIHJl
c291cmNlSGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KEl0ZW1CdWZmZXJSZWFk
aW5nQ2xpZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyV3JpdGlu
Z0NsaWVudChJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCopOwpAQCAtMTEzLDMwICsxMTIsMjIgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIpCiAgICAgewotICAgICAgICBtX2ltYWdlQnVmZmVycy5lbnN1cmUoaW1h
Z2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAg
ICAgIHJldHVybiBSZWYgeyBpbWFnZUJ1ZmZlciB9OwotICAgICAgICB9KTsKKyAgICAgICAgbV9y
ZXNvdXJjZUhlYXAuYWRkKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBSZWYgeyBpbWFnZUJ1ZmZlciB9KTsKICAgICB9CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogICAgIHsKLSAgICAgICAgbV9uYXRpdmVJbWFnZXMuZW5z
dXJlKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gUmVmIHsgaW1hZ2UgfTsKLSAgICAgICAgfSk7CisgICAgICAgIG1fcmVzb3Vy
Y2VIZWFwLmFkZChpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgUmVmIHsgaW1h
Z2UgfSk7CiAgICAgfQogCiAgICAgdm9pZCBjYWNoZUZvbnQoRm9udCYgZm9udCkKICAgICB7Ci0g
ICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IFsmXSgpIHsKLSAgICAgICAgICAgIHJldHVybiBSZWYgeyBmb250IH07Ci0gICAgICAgIH0pOwor
ICAgICAgICBtX3Jlc291cmNlSGVhcC5hZGQoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgUmVmIHsgZm9udCB9KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1w
Rm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCi0gICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIG1faW1hZ2VCdWZmZXJzOwotICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdl
czsKLSAgICBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKKyAgICBSZXNvdXJjZUhl
YXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEl0ZW1CdWZmZXI+IG1faXRl
bXM7CiAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3aW5nSXRlbUV4
dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBjZDNkMTBkMjc3NTU1
OWU5OTM4NTBkNDJjNTIxMmRjNzc1NTI0OTIxLi45NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAzZWQw
OWYyYzg1MzNiNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVzb3Vy
Y2VIZWFwLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5NZW1v
cnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM2LDEzICszNywxMSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5
ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IEZvbnRSZW5kZXJpbmdS
ZXNvdXJjZU1hcCogZm9udHMsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRl
KiBkZWxlZ2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFwKiByZXNv
dXJjZUhlYXAsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tYXNrSW1hZ2VCdWZmZXIobWFz
a0ltYWdlQnVmZmVyKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1f
aW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0
LmltYWdlQnVmZmVycygpKQotICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5h
dGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCi0gICAgLCBtX2ZvbnRz
KGZvbnRzID8gKmZvbnRzIDogbV9kaXNwbGF5TGlzdC5mb250cygpKQorICAgICwgbV9yZXNvdXJj
ZUhlYXAocmVzb3VyY2VIZWFwID8gKnJlc291cmNlSGVhcCA6IG1fZGlzcGxheUxpc3QucmVzb3Vy
Y2VIZWFwKCkpCiAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsMTEgKzU0
LDExIEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRs
ZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0
ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNl
SGVhcCwgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewog
ICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNv
dXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7
Ci0gICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlk
ZW50aWZpZXIpKSB7CisgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gcmVzb3VyY2VIZWFwLmdl
dEltYWdlQnVmZmVyKHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJ
dGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CiAgICAgICAgIGlmIChkZWxlZ2F0ZSkK
ICAgICAgICAgICAgIGRlbGVnYXRlLT5yZWNvcmRSZXNvdXJjZVVzZShyZXNvdXJjZUlkZW50aWZp
ZXIpOwpAQCAtNjksMTEgKzY4LDExIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyCiB9CiAKIHRl
bXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxl
IGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VI
ZWFwLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAg
ICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291
cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKLSAgICBp
ZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsK
KyAgICBpZiAoYXV0byogaW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocmVzb3Vy
Y2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwg
KmltYWdlKTsKICAgICAgICAgaWYgKGRlbGVnYXRlKQogICAgICAgICAgICAgZGVsZWdhdGUtPnJl
Y29yZFJlc291cmNlVXNlKHJlc291cmNlSWRlbnRpZmllcik7CkBAIC04Miw3ICs4MSw3IEBAIGlu
bGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtKEdyCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0K
IAotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6
RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVt
LCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIHNldFN0YXRlSXRl
bSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCkBAIC05MiwxMyArOTEsMTMgQEAgaW5saW5lIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRT
dGF0ZUl0ZW0oR3JhcGgKICAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxw
dHI7CiAKICAgICBpZiAoKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAg
ICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHN0cm9rZVBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBy
ZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQogICAgICAgICAg
ICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAg
fQogCiAgICAgaWYgKChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNl
dFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBmaWxs
UGF0dGVybkltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAu
Z2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmlsbFBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgfQpAQCAtMTE2LDExICsxMTUs
MTEgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlu
bGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5n
UmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSog
ZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
UmVzb3VyY2VIZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRl
bGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7
CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigp
OwotICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsK
KyAgICBpZiAoYXV0byogZm9udCA9IHJlc291cmNlSGVhcC5nZXRGb250KHJlc291cmNlSWRlbnRp
ZmllcikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwogICAgICAg
ICBpZiAoZGVsZWdhdGUpCiAgICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2Uo
cmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEzNSwzNyArMTM0LDM3IEBAIHN0ZDo6cGFpcjxzdGQ6
Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
PERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSwgbV9kZWxl
Z2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9yZXNv
dXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1h
Z2VCdWZmZXJzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChp
dGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUlt
YWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZl
SW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRl
bSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsK
ICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChh
dXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdH
bHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERy
YXdHbHlwaHM+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYg
KGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihj
b250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVn
YXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAog
ICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1f
bmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKaW5kZXggNmE0NjQzMjdjY2YxNTA2YWQ3ZmQ5MjVkYjU1ZDUzNmE1ZmUyODU1Ny4uOTI4
NWJiZGQxMDA0OGMyYWVmOWJmZGQzOWUyMGFlMWM2MzNkNWM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0zNyw2ICszNyw4IEBAIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorY2xhc3MgUmVzb3VyY2VIZWFwOwor
CiBlbnVtIGNsYXNzIFN0b3BSZXBsYXlSZWFzb24gOiB1aW50OF90IHsKICAgICBSZXBsYXllZEFs
bEl0ZW1zLAogICAgIE1pc3NpbmdDYWNoZWRSZXNvdXJjZSwKQEAgLTU3LDcgKzU5LDcgQEAgY2xh
c3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1Ymxp
YzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3Qg
Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwKiA9IG51bGxwdHIsIFdlYkNvcmU6OkltYWdlQnVmZmVy
KiBtYXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlz
dCYsIGNvbnN0IFJlc291cmNlSGVhcCogPSBudWxscHRyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciog
bWFza0ltYWdlQnVmZmVyID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlSZXN1
bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tS
ZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNzgsOSArODAsNyBAQCBwcml2YXRlOgogICAgIEdyYXBo
aWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
bV9tYXNrSW1hZ2VCdWZmZXI7CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7
Ci0gICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVyczsKLSAgICBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOwotICAgIGNvbnN0IEZvbnRSZW5k
ZXJpbmdSZXNvdXJjZU1hcCYgbV9mb250czsKKyAgICBjb25zdCBSZXNvdXJjZUhlYXAmIG1fcmVz
b3VyY2VIZWFwOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWRkYmQ2M2M3YjA2
MTMwM2U5NWNhYjYxNzFkYWM0ZTliYWMyY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VI
ZWFwLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgeworCitjbGFzcyBSZXNvdXJjZUhlYXAgeworcHVibGljOgorICAgIHZv
aWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlm
IChtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrbV9pbWFnZUJ1ZmZlckNvdW50
OworICAgIH0KKworICAgIHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKKyAgICB7
CisgICAgICAgIGlmIChtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBXVEZNb3ZlKGltYWdlKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrbV9uYXRpdmVJbWFn
ZUNvdW50OworICAgIH0KKworICAgIHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxGb250PiYmIGZvbnQpCisgICAgewor
ICAgICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
V1RGTW92ZShmb250KSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrbV9mb250Q291bnQ7Cisg
ICAgfQorCisgICAgSW1hZ2VCdWZmZXIqIGdldEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gZ2V0PEltYWdlQnVmZmVyPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIH0KKworICAgIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdldDxOYXRpdmVJbWFnZT4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZ2V0PEZvbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgYm9vbCBoYXNJbWFnZUJ1ZmZlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlckNvdW50OworICAgIH0KKworICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VDb3VudDsKKyAgICB9CisKKyAg
ICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udENvdW50
OworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiByZW1vdmU8SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9p
bWFnZUJ1ZmZlckNvdW50KTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlPE5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fbmF0aXZlSW1hZ2VDb3VudCk7CisgICAgfQorCisgICAgYm9vbCByZW1v
dmVGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlPEZvbnQ+KHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgbV9mb250Q291bnQpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQor
ICAgIHsKKyAgICAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZl
ckNvdW50ID0gMDsKKyAgICAgICAgbV9uYXRpdmVJbWFnZUNvdW50ID0gMDsKKyAgICAgICAgbV9m
b250Q291bnQgPSAwOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKQorICAgIHsK
KyAgICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlSWYoW10gKGNvbnN0IGF1dG8mIHJlc291cmNlKSB7
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Rm9udD4+KHJl
c291cmNlLnZhbHVlKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fZm9udENvdW50ID0gMDsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgVCogZ2V0KFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNv
bnN0CisgICAgeworICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZXMuZmluZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNv
dXJjZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFQ+PihpdGVy
YXRvci0+dmFsdWUpLnB0cigpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICAgIGJvb2wgcmVtb3ZlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyYXRvciA9IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
VD4+KGl0ZXJhdG9yLT52YWx1ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2Vz
LnJlbW92ZShpdGVyYXRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICAtLWNv
dW50ZXI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdXNpbmcgUmVzb3Vy
Y2UgPSBWYXJpYW50PFJlZjxJbWFnZUJ1ZmZlcj4sIFJlZjxOYXRpdmVJbWFnZT4sIFJlZjxGb250
Pj47CisgICAgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlPiBt
X3Jlc291cmNlczsKKyAgICB1bnNpZ25lZCBtX2ltYWdlQnVmZmVyQ291bnQgeyAwIH07CisgICAg
dW5zaWduZWQgbV9uYXRpdmVJbWFnZUNvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fZm9udENv
dW50IHsgMCB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDMzODg5
ZjRiOTdhYzQ2ZDljNjA2ZDZhMjE1YWYzZmVhODU0ZTAxNjMuLmMyODc3ZTFlOTFjOWZhZjVhYjUw
MjU5YWE0Y2ExNzRmMjcyMWQ5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTIzOCw5
ICsyMzgsNyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIHJldHVybiBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXIgewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAg
ICAgICAgIGRpc3BsYXlMaXN0LAotICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdl
QnVmZmVycygpLAotICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygp
LAotICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmZvbnRzKCksCisgICAgICAgICZyZW1v
dGVSZXNvdXJjZUNhY2hlKCkucmVzb3VyY2VIZWFwKCksCiAgICAgICAgIG1fY3VycmVudE1hc2tJ
bWFnZUJ1ZmZlci5nZXQoKSwKICAgICAgICAgJnJlcGxheWVyRGVsZWdhdGUKICAgICB9LnJlcGxh
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGQ1MWQ2M2M4YjRlYmRjNTNjYmZmMDRlNWY4MjQ3
ZDQ0YzkyOTU5ODEuLmVlYmFmZjcwZDk3ZWRlZGJiZDliODk0Y2M4ODYyZjNhMDAwMmQ0Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHAKQEAgLTM4LDkgKzM4LDcgQEAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6
UmVtb3RlUmVzb3VyY2VDYWNoZShQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
cikKIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNv
dXJjZUNhY2hlJiYgb3RoZXIpCiAgICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKG90aGVyLm1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKG90aGVy
Lm1faW1hZ2VCdWZmZXJzKSkKLSAgICAsIG1fbmF0aXZlSW1hZ2VzKFdURk1vdmUob3RoZXIubV9u
YXRpdmVJbWFnZXMpKQotICAgICwgbV9mb250cyhXVEZNb3ZlKG90aGVyLm1fZm9udHMpKQorICAg
ICwgbV9yZXNvdXJjZUhlYXAoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlSGVhcCkpCiAgICAgLCBt
X3Jlc291cmNlVXNlQ291bnRlcnMoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlVXNlQ291bnRlcnMp
KQogewogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwpAQCAtNTAsNyArNDgsNyBAQCB2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPEltYWdlQnVmZmVy
PiYmIGltYWdlQnVmZmVyLCBRdWFsaQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgbV9pbWFnZUJ1ZmZl
cnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFn
ZUJ1ZmZlcikpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKICAgICB1cGRhdGVIYXNBY3Rp
dmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNTksMTQgKzU3LDE0IEBAIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIs
IFF1YWxpCiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZm
ZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgY29uc3QKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0g
aW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcik7Ci0gICAgbV9uYXRpdmVJbWFnZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIG1fcmVzb3VyY2VIZWFwLmFk
ZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2UpKTsK
ICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNl
Q291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNzUsMjEgKzczLDIxIEBA
IHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1h
Z2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJlCiBOYXRpdmVJbWFnZSogUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKICAgICBBU1NFUlQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRO
YXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250LCBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkg
PT0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBtX2ZvbnRzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOwogCiAgICAg
ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKIEZvbnQqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9mb250cy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9i
amVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmVuc3VyZVJlc291cmNlVXNlQ291bnRlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTA1LDcgKzEwMyw3IEBAIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlCiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRl
QWxsRm9udHMoKQogewotICAgIG1fZm9udHMuY2xlYXIoKTsKKyAgICBtX3Jlc291cmNlSGVhcC5k
ZWxldGVBbGxGb250cygpOwogfQogCiBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVt
b3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVyc01hcDo6aXRlcmF0b3ImIGl0
ZXJhdG9yKQpAQCAtMTQ5LDExICsxNDcsMTIgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpt
YXliZVJlbW92ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmkKIAog
ICAgIG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRlcmF0b3IpOwogCi0gICAgaWYgKG1f
aW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkp
IHx8IG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCkpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdlQnVmZmVyKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkKKyAgICAgICAgfHwgbV9yZXNvdXJjZUhl
YXAucmVtb3ZlTmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgp
KSkgewogICAgICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGlmIChtX2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBl
bmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCkBAIC0xODUsNyArMTg0LDcgQEAgYm9vbCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjp1cGRhdGVIYXNBY3RpdmVE
cmF3YWJsZXMoKQogewotICAgIG1faGFzQWN0aXZlRHJhd2FibGVzID0gIW1faW1hZ2VCdWZmZXJz
LmlzRW1wdHkoKSB8fCAhbV9uYXRpdmVJbWFnZXMuaXNFbXB0eSgpOworICAgIG1faGFzQWN0aXZl
RHJhd2FibGVzID0gbV9yZXNvdXJjZUhlYXAuaGFzSW1hZ2VCdWZmZXIoKSB8fCBtX3Jlc291cmNl
SGVhcC5oYXNOYXRpdmVJbWFnZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oCmluZGV4IDhmNDAwZDlmNTcyZDgyMDQ4OTAwZmI4NWY1MTNkZTYwNjEzNTlmNmEuLjIw
MTYyMmRkZDdlMGU1NWQ2ODMwZmRlNTYzNWRjMGE3NTMwMDdjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApA
QCAtNTQsOSArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7
CiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFn
ZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAgIGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVJbWFnZXM7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3Vy
Y2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQorICAgIGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBib29sIGhhc0FjdGl2ZURyYXdhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlRHJhd2FibGVzOyB9CiAKQEAgLTg5LDkgKzg3LDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7CiAKLSAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZl
cnM7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotICAg
IFdlYkNvcmU6OkZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogCiAgICAgUmVzb3VyY2VV
c2VDb3VudGVyc01hcCBtX3Jlc291cmNlVXNlQ291bnRlcnM7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2U0M2JjYTMxYmJmZWFjMTI3NTM3NDRj
YzVmM2MwYzFlMGM5ZTAwZS4uYjgxNzNkODkwNzEyNmY4NWEzNmE3ODJhNGJkODBmMjdhMTYyNGI5
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTEwLTExICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVycyBQYXJ0IDg6IENvbnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2xpZ2h0bHkgYmV0dGVyIGlkaW9tIGZvciBBUkMgZGVidWcgYXV0b3JlbGVhc2Ugd29ya2Fy
b3VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA4YTEzNTlkZmU4MzZiMDM5ZWViZjI2N2Jm
MzQ3MDZhZmNkZDliNmZmLi41YTYyZGFkOGFhY2QwODBhY2Y0YmM2MzU0M2E4N2VkOTQ0NjNhNGJi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFk
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KIApAQCAtNzIs
MTAgKzczLDEwIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmdSZXNv
dXJjZSkKIAogICAgIHsKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAgICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAg
aW1hZ2VCdWZmZXJNYXA7Ci0gICAgICAgIGltYWdlQnVmZmVyTWFwLnNldChpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBSZXNvdXJj
ZUhlYXAgcmVzb3VyY2VIZWFwOworICAgICAgICByZXNvdXJjZUhlYXAuYWRkKGltYWdlQnVmZmVy
SWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICAgICAgUmVw
bGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCAmaW1hZ2VCdWZmZXJNYXAgfTsKKyAgICAg
ICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCAmcmVzb3VyY2VIZWFwIH07CiAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9F
UShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIGxpc3Quc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OlJl
cGxheWVkQWxsSXRlbXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440897</attachid>
            <date>2021-10-11 23:34:55 -0700</date>
            <delta_ts>2021-10-12 00:10:23 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-231411-20211011233455.patch</filename>
            <type>text/plain</type>
            <size>41570</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk5ZmI1NjNjOTU3Nzhj
MDdhNzc1MTY1MWI2YTYwMzgyOTk0ODYzYi4uYmE3M2I5ODM0ZWFjOGYwMGM3MTM2MDEzOGY5ZjZl
ZDUwNTk5ZDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTEwLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDg6IENvbnNvbGlk
YXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQw
MTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIERp
c3BsYXkgbGlzdHMgbmVlZCB0byBiZSByZXBsYXllZCB3aXRoaW4gYSBjb250ZXh0LCBhbmQgdGhh
dCBjb250ZXh0IGluY2x1ZGVzIGEgY29sbGVjdGlvbiBvZiByZXNvdXJjZXMKKyAgICAgICAgdGhh
dCB0aGUgZGlzcGxheSBsaXN0IGl0ZW1zIG1pZ2h0IHJlZmVyZW5jZS4gRm9yIGV4YW1wbGUsIGlm
IHRoZXJlJ3MgYSBkaXNwbGF5IGxpc3QgaXRlbSB0aGF0IHNheXMgdG8gZHJhdworICAgICAgICBh
biBpbWFnZSwgdGhlIGltYWdlIG5lZWRzIHRvIGJlIHByZXNlbnQgaW4gdGhlIGNvbGxlY3Rpb24u
CisKKyAgICAgICAgV2Ugd2VyZSByZXByZXNlbnRpbmcgdGhpcyBjb2xsZWN0aW9uIG9mIHJlc291
cmNlcyBhcyAzIGluZGVwZW5kZW50IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBUPnMuCisgICAgICAgIFRoaXMgaXMga2luZCBvZiB1bmZvcnR1bmF0ZSwgYmVjYXVzZSBpdCBt
ZWFucyAzIG9iamVjdHMgYXJlIHBhc3NlZCBhcm91bmQgaW4gcGFyYWxsZWwgYXMgYXJndW1lbnRz
IHRvIHRoZQorICAgICAgICByZWxldmFudCBwbGFjZXMgd2hpY2ggbmVlZCB0aGVtLiBJdCdzIG1v
cmUgZWxlZ2FudCB0byB3cmFwIGFuIG9iamVjdCBhcm91bmQgdGhlc2UgMyBIYXNoTWFwcywgdG8g
YXZvaWQKKyAgICAgICAgcG9sbHV0aW5nIGZ1bmN0aW9ucycgcGFyYW1ldGVyIGxpc3RzLgorCisg
ICAgICAgIE5vdCBvbmx5IHRoYXQsIGJ1dCB0aGUgR1BVIHByb2Nlc3MgZG9lc24ndCB3YW50IHRo
ZSBrZXkgdG8gdGhlc2UgSGFzaE1hcHMgdG8gYmUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
cy4KKyAgICAgICAgSW5zdGVhZCwgdGhlIEdQVSBwcm9jZXNzIHdhbnRzIHRoZSBrZXkgdG8gYmUg
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyAoc2VlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2MzgpLiBXcmFwcGluZyBhbiBv
YmplY3QgYXJvdW5kIHRoZXNlIEhhc2hNYXBzIGFsbG93cyBhIGxheWVyIG9mCisgICAgICAgIGlu
ZGlyZWN0aW9uLCB3aGVyZSB0aGUgR1BVIHByb2Nlc3MgY2FuIGltcGxlbWVudCB0aGUgaW50ZXJm
YWNlIG9mIHRoaXMgb2JqZWN0LCBidXQgaW50ZXJuYWxseSByZXByZXNlbnQgdGhlCisgICAgICAg
IEhhc2hNYXBzIHVzaW5nIGRpZmZlcmVudCBrZXlzLiBXZWJDb3JlIHNob3VsZG4ndCBrbm93IGFi
b3V0IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMsIHNvIHRoaXMKKyAgICAg
ICAgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gaXMgbmVjZXNzYXJ5IGZvciB0aGF0IGdvYWwuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjptX25hdGl2ZUltYWdlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6OnJlc291cmNlSGVhcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aW1hZ2VCdWZmZXJzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
bmF0aXZlSW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6Zm9udHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmdldEZvbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291
cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpy
ZW1vdmVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmRl
bGV0ZUFsbEZvbnRzKToKKwogMjAyMS0xMC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcnMgUGFydCA2OiBVbmlxdWlmeSBtb3JlIG9mIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIgYXQgZW50cnkgcG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQxMWMyNTU5ZWI1ODQ5ZDc1
N2E3Mzk0ZmVmMjZlNjNjZDI1YTQwOTYuLjc4NmIxOGZlODAxOGRkNDg5MzUwYThiNzNjYTBjZGY0
NDkwNWM5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTAtMTEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgODogQ29uc29saWRhdGUg
RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAxMzE2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6dXBkYXRlSGFzQWN0aXZlRHJh
d2FibGVzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVzb3VyY2VIZWFw
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6aW1hZ2VCdWZm
ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6bmF0aXZlSW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Zm9udHMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTEwLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDU6IE1pZ3JhdGUg
UmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGM0MTRjY2I4N2JlYzM0NzIxM2Y5ZDEwYzFlNjlhZmVi
NmU3YzI1MjQuLjE5OTEyYmQ1ZDkwNjFiZTc4ZDNhOWJiY2ZhY2EyMmIwNTc3NDNhYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTQwNCw2ICsxNDA0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0YmY0NDQ5ZDA3NDE1ZmZjOWUwMGVhMTVi
Y2EzNWEyNjljZWU1NDguLjU5ZDZlZWY3MTBiMzljMjhhYzE0YjI3ZjUzMTkwYzUyZTg0YzkzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTY1MCw2ICs2NTAsNyBAQAogCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2Vi
U2NyaXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLzsg
fTsKIAkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDgw
MEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjU2REIyNTMwMUFDODAw
MTdCNDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERyYXdHbHlw
aHNSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTFDQkY5MDBGMjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5TGlzdFJlc291cmNlSGVh
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCRjkw
MEQyNzBGRjhGNjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDNTRBRkUyNzBGOTZB
RTAwNUJGOEJFIC8qIFByb2Nlc3NRdWFsaWZpZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzU0QUZCMjcwRjkyREEwMDVCRjhCRSAvKiBQcm9jZXNz
UXVhbGlmaWVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUNDRDgxNTAyMjMxRjgzRTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5
MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQg
LyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovOyB9OwpAQCAtNzA3Myw2ICs3MDc0LDcgQEAK
IAkJMUNBRjU2REUyNTMwMjQ1QTAwMTdCNDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8q
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjZCNEZCMjE3Qjgz
OTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRV
bmRlcmxpbmVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCRjkwMEQy
NzBGRjhGNjAwMEM0NTdEIC8qIERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQzU0QUZCMjcwRjkyREEwMDVCRjhCRSAvKiBQcm9jZXNzUXVhbGlmaWVkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2Nlc3NRdWFsaWZpZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQ0RGNUJDMTk5MDMzMjQw
MEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4MjgwLDYgKzE4MjgyLDcgQEAKIAkJCQkwRkU1RkJDRjFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZCRDEx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKKwkJCQkxQ0JGOTAw
RDI3MEZGOEY2MDAwQzQ1N0QgLyogRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCAqLywKIAkJCQkx
Q0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCiAJ
CQkJMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLywK
IAkJCSk7CkBAIC0zMjQ1Nyw2ICszMjQ2MCw3IEBACiAJCQkJRjQyOTk1MEYyNzBFNzUwMDAwMzIy
OThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3
MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkY5MDBGMjcwRkY4RjYwMDBDNDU3RCAvKiBEaXNwbGF5
TGlzdFJlc291cmNlSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAw
MTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQy
OUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCQjVGQkUyNjA5OTFEMjAwNTQ1NzJDIC8qIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCmluZGV4IGE3Y2NhYzEyMDdkNDk5YjU3OWY1N2Y2NTkzYmU3N2NmYjM3
MGI2ZTAuLjlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM5MSw4ICszOTEsNiBAQCBBTFdB
WVNfSU5MSU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAg
ICAgcmV0dXJuIHdpZHRoOwogfQogCi11c2luZyBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEZvbnQ+PjsKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDgxNjBkZGYwYTE5YzMzMGRjZTVk
MzIxNjNhZGE4MjM2ZTVhNDE0NDkuLmEwNTkyYjk5Yjg4ZGJlMDE4ZmE5NWM1YTMwNWQyOTgyYzAy
NGY2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtMTQyLDYgKzE0Miw0IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogfTsKIAotdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFJlZjxJbWFnZUJ1ZmZlcj4+OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApp
bmRleCA0MzZiNmE1NDNkYWJlMDk3NTRiZmEwNjA5ODc4NDU2MjBiOTFiNGFhLi43OTJiZGE2OTUw
M2RhYTE3N2RlYjRjZGFhYzY0Mjc1MTkyZmViZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTc1LDYgKzc1LDQgQEAgcHJpdmF0ZToK
ICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI7CiB9OwogCi11c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj47Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGNiMjM1MzA3ZjhhYjRiNGZm
YmQ2ZGI5OTJlNzg0NWFlMjllMWQ5YTAuLmRmZjQxNDQyNjE5NjdiZmU4ZGUyZGVjOTJjNmY5Mzk4
MzJkZTE3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtNTIsOCArNTIsNyBAQCB2
b2lkIERpc3BsYXlMaXN0OjpkdW1wKCkgY29uc3QKICNlbmRpZgogCiBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QoRGlzcGxheUxpc3QmJiBvdGhlcikKLSAgICA6IG1faW1hZ2VCdWZmZXJzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSkpCi0gICAgLCBtX25hdGl2ZUltYWdl
cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pKQorICAgIDogbV9yZXNv
dXJjZUhlYXAoc3RkOjpleGNoYW5nZShvdGhlci5tX3Jlc291cmNlSGVhcCwgeyB9KSkKICAgICAs
IG1faXRlbXMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zLCBudWxscHRyKSkKICAgICAsIG1f
ZHJhd2luZ0l0ZW1FeHRlbnRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kcmF3aW5nSXRlbUV4dGVu
dHMsIHsgfSkpCiB7CkBAIC02OSw4ICs2OCw3IEBAIERpc3BsYXlMaXN0Ojp+RGlzcGxheUxpc3Qo
KSA9IGRlZmF1bHQ7CiAKIERpc3BsYXlMaXN0JiBEaXNwbGF5TGlzdDo6b3BlcmF0b3I9KERpc3Bs
YXlMaXN0JiYgb3RoZXIpCiB7Ci0gICAgbV9pbWFnZUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pOwotICAgIG1fbmF0aXZlSW1hZ2VzID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KTsKKyAgICBtX3Jlc291cmNlSGVhcCA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9yZXNvdXJjZUhlYXAsIHsgfSk7CiAgICAgbV9pdGVtcyA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cik7CiAgICAgbV9kcmF3aW5nSXRlbUV4
dGVudHMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0pOwog
ICAgIHJldHVybiAqdGhpczsKQEAgLTgxLDggKzc5LDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xl
YXIoKQogICAgIGlmIChtX2l0ZW1zKQogICAgICAgICBtX2l0ZW1zLT5jbGVhcigpOwogICAgIG1f
ZHJhd2luZ0l0ZW1FeHRlbnRzLmNsZWFyKCk7Ci0gICAgbV9pbWFnZUJ1ZmZlcnMuY2xlYXIoKTsK
LSAgICBtX25hdGl2ZUltYWdlcy5jbGVhcigpOworICAgIG1fcmVzb3VyY2VIZWFwLmNsZWFyKCk7
CiB9CiAKIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBm
bGFncywgSXRlbUhhbmRsZSBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA4OTg2ZThj
MzI5ZjBhMTFlODQ4MzAxMTk5NWIzNmQzYmExNjE3NjhlLi44NmYzMzBlZDU5ZDNkZDBmNDgzMTE5
ZTQxNjQ5OWY1NzUzOGRiMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgiCiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RJdGVtVHlwZS5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgpAQCAtNzMsOSArNzQsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
YXNUZXh0KEFzVGV4dEZsYWdzKSBjb25zdDsKIAotICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KLSAgICBj
b25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlSW1hZ2VzOyB9Ci0gICAgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250
cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udHM7IH0KKyAgICBjb25zdCBSZXNvdXJjZUhlYXAmIHJl
c291cmNlSGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KEl0ZW1CdWZmZXJSZWFk
aW5nQ2xpZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyV3JpdGlu
Z0NsaWVudChJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCopOwpAQCAtMTEzLDMwICsxMTIsMjIgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIpCiAgICAgewotICAgICAgICBtX2ltYWdlQnVmZmVycy5lbnN1cmUoaW1h
Z2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKLSAgICAgICAg
ICAgIHJldHVybiBSZWYgeyBpbWFnZUJ1ZmZlciB9OwotICAgICAgICB9KTsKKyAgICAgICAgbV9y
ZXNvdXJjZUhlYXAuYWRkKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBSZWYgeyBpbWFnZUJ1ZmZlciB9KTsKICAgICB9CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogICAgIHsKLSAgICAgICAgbV9uYXRpdmVJbWFnZXMuZW5z
dXJlKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gUmVmIHsgaW1hZ2UgfTsKLSAgICAgICAgfSk7CisgICAgICAgIG1fcmVzb3Vy
Y2VIZWFwLmFkZChpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgUmVmIHsgaW1h
Z2UgfSk7CiAgICAgfQogCiAgICAgdm9pZCBjYWNoZUZvbnQoRm9udCYgZm9udCkKICAgICB7Ci0g
ICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IFsmXSgpIHsKLSAgICAgICAgICAgIHJldHVybiBSZWYgeyBmb250IH07Ci0gICAgICAgIH0pOwor
ICAgICAgICBtX3Jlc291cmNlSGVhcC5hZGQoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgUmVmIHsgZm9udCB9KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1w
Rm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCi0gICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIG1faW1hZ2VCdWZmZXJzOwotICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdl
czsKLSAgICBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKKyAgICBSZXNvdXJjZUhl
YXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEl0ZW1CdWZmZXI+IG1faXRl
bXM7CiAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3aW5nSXRlbUV4
dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBjZDNkMTBkMjc3NTU1
OWU5OTM4NTBkNDJjNTIxMmRjNzc1NTI0OTIxLi45NDFjMjA5M2NmNTZmMjIyMTEzYWJmMDAzZWQw
OWYyYzg1MzNiNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVyYXRvci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVzb3Vy
Y2VIZWFwLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5NZW1v
cnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM2LDEzICszNywxMSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5
ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IEZvbnRSZW5kZXJpbmdS
ZXNvdXJjZU1hcCogZm9udHMsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRl
KiBkZWxlZ2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgUmVzb3VyY2VIZWFwKiByZXNv
dXJjZUhlYXAsIEltYWdlQnVmZmVyKiBtYXNrSW1hZ2VCdWZmZXIsIERlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tYXNrSW1hZ2VCdWZmZXIobWFz
a0ltYWdlQnVmZmVyKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1f
aW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0
LmltYWdlQnVmZmVycygpKQotICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5h
dGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCi0gICAgLCBtX2ZvbnRz
KGZvbnRzID8gKmZvbnRzIDogbV9kaXNwbGF5TGlzdC5mb250cygpKQorICAgICwgbV9yZXNvdXJj
ZUhlYXAocmVzb3VyY2VIZWFwID8gKnJlc291cmNlSGVhcCA6IG1fZGlzcGxheUxpc3QucmVzb3Vy
Y2VIZWFwKCkpCiAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsMTEgKzU0
LDExIEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRs
ZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0
ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNl
SGVhcCwgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewog
ICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNv
dXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7
Ci0gICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlk
ZW50aWZpZXIpKSB7CisgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gcmVzb3VyY2VIZWFwLmdl
dEltYWdlQnVmZmVyKHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJ
dGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CiAgICAgICAgIGlmIChkZWxlZ2F0ZSkK
ICAgICAgICAgICAgIGRlbGVnYXRlLT5yZWNvcmRSZXNvdXJjZVVzZShyZXNvdXJjZUlkZW50aWZp
ZXIpOwpAQCAtNjksMTEgKzY4LDExIEBAIGlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyCiB9CiAKIHRl
bXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxl
IGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VI
ZWFwLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAg
ICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291
cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKLSAgICBp
ZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsK
KyAgICBpZiAoYXV0byogaW1hZ2UgPSByZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocmVzb3Vy
Y2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwg
KmltYWdlKTsKICAgICAgICAgaWYgKGRlbGVnYXRlKQogICAgICAgICAgICAgZGVsZWdhdGUtPnJl
Y29yZFJlc291cmNlVXNlKHJlc291cmNlSWRlbnRpZmllcik7CkBAIC04Miw3ICs4MSw3IEBAIGlu
bGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtKEdyCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0K
IAotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6
RGVsZWdhdGUqIGRlbGVnYXRlKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVt
LCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIHNldFN0YXRlSXRl
bSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCkBAIC05MiwxMyArOTEsMTMgQEAgaW5saW5lIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRT
dGF0ZUl0ZW0oR3JhcGgKICAgICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxw
dHI7CiAKICAgICBpZiAoKHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAg
ICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHN0cm9rZVBhdHRlcm5SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBy
ZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2Uoc3Ryb2tlUGF0dGVyblJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQogICAgICAgICAg
ICAgcmV0dXJuIHN0cm9rZVBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAg
fQogCiAgICAgaWYgKChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHNl
dFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSkgewotICAgICAgICBmaWxs
UGF0dGVybkltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChmaWxsUGF0dGVyblJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSByZXNvdXJjZUhlYXAu
Z2V0TmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmlsbFBh
dHRlcm5SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgfQpAQCAtMTE2LDExICsxMTUs
MTEgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlu
bGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5n
UmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0sIFJlcGxheWVyOjpEZWxlZ2F0ZSog
ZGVsZWdhdGUpCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
UmVzb3VyY2VIZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6OkRl
bGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7
CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigp
OwotICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsK
KyAgICBpZiAoYXV0byogZm9udCA9IHJlc291cmNlSGVhcC5nZXRGb250KHJlc291cmNlSWRlbnRp
ZmllcikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwogICAgICAg
ICBpZiAoZGVsZWdhdGUpCiAgICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2Uo
cmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEzNSwzNyArMTM0LDM3IEBAIHN0ZDo6cGFpcjxzdGQ6
Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
PERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSwgbV9kZWxl
Z2F0ZSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9yZXNv
dXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1h
Z2VCdWZmZXJzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChp
dGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUlt
YWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZl
SW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX3Jlc291cmNlSGVhcCwgaXRl
bSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsK
ICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChh
dXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdH
bHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSwgbV9kZWxlZ2F0ZSkpCisgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERy
YXdHbHlwaHM+KGNvbnRleHQoKSwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYg
KGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihj
b250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fcmVzb3VyY2VIZWFwLCBpdGVtLCBtX2RlbGVn
YXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAog
ICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1f
bmF0aXZlSW1hZ2VzLCBpdGVtLCBtX2RlbGVnYXRlKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKaW5kZXggNmE0NjQzMjdjY2YxNTA2YWQ3ZmQ5MjVkYjU1ZDUzNmE1ZmUyODU1Ny4uOTI4
NWJiZGQxMDA0OGMyYWVmOWJmZGQzOWUyMGFlMWM2MzNkNWM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0zNyw2ICszNyw4IEBAIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorY2xhc3MgUmVzb3VyY2VIZWFwOwor
CiBlbnVtIGNsYXNzIFN0b3BSZXBsYXlSZWFzb24gOiB1aW50OF90IHsKICAgICBSZXBsYXllZEFs
bEl0ZW1zLAogICAgIE1pc3NpbmdDYWNoZWRSZXNvdXJjZSwKQEAgLTU3LDcgKzU5LDcgQEAgY2xh
c3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1Ymxp
YzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3Qg
Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwKiA9IG51bGxwdHIsIFdlYkNvcmU6OkltYWdlQnVmZmVy
KiBtYXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlz
dCYsIGNvbnN0IFJlc291cmNlSGVhcCogPSBudWxscHRyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciog
bWFza0ltYWdlQnVmZmVyID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlSZXN1
bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tS
ZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNzgsOSArODAsNyBAQCBwcml2YXRlOgogICAgIEdyYXBo
aWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
bV9tYXNrSW1hZ2VCdWZmZXI7CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7
Ci0gICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVyczsKLSAgICBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOwotICAgIGNvbnN0IEZvbnRSZW5k
ZXJpbmdSZXNvdXJjZU1hcCYgbV9mb250czsKKyAgICBjb25zdCBSZXNvdXJjZUhlYXAmIG1fcmVz
b3VyY2VIZWFwOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWRkYmQ2M2M3YjA2
MTMwM2U5NWNhYjYxNzFkYWM0ZTliYWMyY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VI
ZWFwLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgeworCitjbGFzcyBSZXNvdXJjZUhlYXAgeworcHVibGljOgorICAgIHZv
aWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlm
IChtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrbV9pbWFnZUJ1ZmZlckNvdW50
OworICAgIH0KKworICAgIHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKKyAgICB7
CisgICAgICAgIGlmIChtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBXVEZNb3ZlKGltYWdlKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrbV9uYXRpdmVJbWFn
ZUNvdW50OworICAgIH0KKworICAgIHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxGb250PiYmIGZvbnQpCisgICAgewor
ICAgICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
V1RGTW92ZShmb250KSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrbV9mb250Q291bnQ7Cisg
ICAgfQorCisgICAgSW1hZ2VCdWZmZXIqIGdldEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gZ2V0PEltYWdlQnVmZmVyPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIH0KKworICAgIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdldDxOYXRpdmVJbWFnZT4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZ2V0PEZvbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgYm9vbCBoYXNJbWFnZUJ1ZmZlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlckNvdW50OworICAgIH0KKworICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VDb3VudDsKKyAgICB9CisKKyAg
ICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udENvdW50
OworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiByZW1vdmU8SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9p
bWFnZUJ1ZmZlckNvdW50KTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlPE5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fbmF0aXZlSW1hZ2VDb3VudCk7CisgICAgfQorCisgICAgYm9vbCByZW1v
dmVGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlPEZvbnQ+KHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgbV9mb250Q291bnQpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQor
ICAgIHsKKyAgICAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZl
ckNvdW50ID0gMDsKKyAgICAgICAgbV9uYXRpdmVJbWFnZUNvdW50ID0gMDsKKyAgICAgICAgbV9m
b250Q291bnQgPSAwOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKQorICAgIHsK
KyAgICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlSWYoW10gKGNvbnN0IGF1dG8mIHJlc291cmNlKSB7
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Rm9udD4+KHJl
c291cmNlLnZhbHVlKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fZm9udENvdW50ID0gMDsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgVCogZ2V0KFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNv
bnN0CisgICAgeworICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZXMuZmluZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNv
dXJjZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFQ+PihpdGVy
YXRvci0+dmFsdWUpLnB0cigpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICAgIGJvb2wgcmVtb3ZlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyYXRvciA9IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
VD4+KGl0ZXJhdG9yLT52YWx1ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2Vz
LnJlbW92ZShpdGVyYXRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICAtLWNv
dW50ZXI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdXNpbmcgUmVzb3Vy
Y2UgPSBWYXJpYW50PFJlZjxJbWFnZUJ1ZmZlcj4sIFJlZjxOYXRpdmVJbWFnZT4sIFJlZjxGb250
Pj47CisgICAgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlPiBt
X3Jlc291cmNlczsKKyAgICB1bnNpZ25lZCBtX2ltYWdlQnVmZmVyQ291bnQgeyAwIH07CisgICAg
dW5zaWduZWQgbV9uYXRpdmVJbWFnZUNvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fZm9udENv
dW50IHsgMCB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDMzODg5
ZjRiOTdhYzQ2ZDljNjA2ZDZhMjE1YWYzZmVhODU0ZTAxNjMuLmMyODc3ZTFlOTFjOWZhZjVhYjUw
MjU5YWE0Y2ExNzRmMjcyMWQ5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTIzOCw5
ICsyMzgsNyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIHJldHVybiBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXIgewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAg
ICAgICAgIGRpc3BsYXlMaXN0LAotICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdl
QnVmZmVycygpLAotICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygp
LAotICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmZvbnRzKCksCisgICAgICAgICZyZW1v
dGVSZXNvdXJjZUNhY2hlKCkucmVzb3VyY2VIZWFwKCksCiAgICAgICAgIG1fY3VycmVudE1hc2tJ
bWFnZUJ1ZmZlci5nZXQoKSwKICAgICAgICAgJnJlcGxheWVyRGVsZWdhdGUKICAgICB9LnJlcGxh
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGQ1MWQ2M2M4YjRlYmRjNTNjYmZmMDRlNWY4MjQ3
ZDQ0YzkyOTU5ODEuLmVlYmFmZjcwZDk3ZWRlZGJiZDliODk0Y2M4ODYyZjNhMDAwMmQ0Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHAKQEAgLTM4LDkgKzM4LDcgQEAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6
UmVtb3RlUmVzb3VyY2VDYWNoZShQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
cikKIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNv
dXJjZUNhY2hlJiYgb3RoZXIpCiAgICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKG90aGVyLm1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKG90aGVy
Lm1faW1hZ2VCdWZmZXJzKSkKLSAgICAsIG1fbmF0aXZlSW1hZ2VzKFdURk1vdmUob3RoZXIubV9u
YXRpdmVJbWFnZXMpKQotICAgICwgbV9mb250cyhXVEZNb3ZlKG90aGVyLm1fZm9udHMpKQorICAg
ICwgbV9yZXNvdXJjZUhlYXAoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlSGVhcCkpCiAgICAgLCBt
X3Jlc291cmNlVXNlQ291bnRlcnMoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlVXNlQ291bnRlcnMp
KQogewogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwpAQCAtNTAsNyArNDgsNyBAQCB2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPEltYWdlQnVmZmVy
PiYmIGltYWdlQnVmZmVyLCBRdWFsaQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgbV9pbWFnZUJ1ZmZl
cnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFn
ZUJ1ZmZlcikpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKICAgICB1cGRhdGVIYXNBY3Rp
dmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNTksMTQgKzU3LDE0IEBAIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIs
IFF1YWxpCiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZm
ZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgY29uc3QKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0g
aW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcik7Ci0gICAgbV9uYXRpdmVJbWFnZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIG1fcmVzb3VyY2VIZWFwLmFk
ZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2UpKTsK
ICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNl
Q291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNzUsMjEgKzczLDIxIEBA
IHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1h
Z2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJlCiBOYXRpdmVJbWFnZSogUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKICAgICBBU1NFUlQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRO
YXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250LCBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkg
PT0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBtX2ZvbnRzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOwogCiAgICAg
ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKIEZvbnQqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9mb250cy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9i
amVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmVuc3VyZVJlc291cmNlVXNlQ291bnRlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTA1LDcgKzEwMyw3IEBAIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlCiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRl
QWxsRm9udHMoKQogewotICAgIG1fZm9udHMuY2xlYXIoKTsKKyAgICBtX3Jlc291cmNlSGVhcC5k
ZWxldGVBbGxGb250cygpOwogfQogCiBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVt
b3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVyc01hcDo6aXRlcmF0b3ImIGl0
ZXJhdG9yKQpAQCAtMTQ5LDExICsxNDcsMTIgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpt
YXliZVJlbW92ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmkKIAog
ICAgIG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRlcmF0b3IpOwogCi0gICAgaWYgKG1f
aW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkp
IHx8IG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCkpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdlQnVmZmVyKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkKKyAgICAgICAgfHwgbV9yZXNvdXJjZUhl
YXAucmVtb3ZlTmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgp
KSkgewogICAgICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGlmIChtX2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBl
bmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCkBAIC0xODUsNyArMTg0LDcgQEAgYm9vbCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjp1cGRhdGVIYXNBY3RpdmVE
cmF3YWJsZXMoKQogewotICAgIG1faGFzQWN0aXZlRHJhd2FibGVzID0gIW1faW1hZ2VCdWZmZXJz
LmlzRW1wdHkoKSB8fCAhbV9uYXRpdmVJbWFnZXMuaXNFbXB0eSgpOworICAgIG1faGFzQWN0aXZl
RHJhd2FibGVzID0gbV9yZXNvdXJjZUhlYXAuaGFzSW1hZ2VCdWZmZXIoKSB8fCBtX3Jlc291cmNl
SGVhcC5oYXNOYXRpdmVJbWFnZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oCmluZGV4IDhmNDAwZDlmNTcyZDgyMDQ4OTAwZmI4NWY1MTNkZTYwNjEzNTlmNmEuLjIw
MTYyMmRkZDdlMGU1NWQ2ODMwZmRlNTYzNWRjMGE3NTMwMDdjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApA
QCAtNTQsOSArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7
CiAgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFn
ZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQotICAgIGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVJbWFnZXM7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3Vy
Y2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQorICAgIGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VIZWFwOyB9CiAKICAgICBib29sIGhhc0FjdGl2ZURyYXdhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlRHJhd2FibGVzOyB9CiAKQEAgLTg5LDkgKzg3LDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7CiAKLSAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZl
cnM7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotICAg
IFdlYkNvcmU6OkZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogCiAgICAgUmVzb3VyY2VV
c2VDb3VudGVyc01hcCBtX3Jlc291cmNlVXNlQ291bnRlcnM7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2U0M2JjYTMxYmJmZWFjMTI3NTM3NDRj
YzVmM2MwYzFlMGM5ZTAwZS4uYjgxNzNkODkwNzEyNmY4NWEzNmE3ODJhNGJkODBmMjdhMTYyNGI5
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTEwLTExICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVycyBQYXJ0IDg6IENvbnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTMxNjc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2xpZ2h0bHkgYmV0dGVyIGlkaW9tIGZvciBBUkMgZGVidWcgYXV0b3JlbGVhc2Ugd29ya2Fy
b3VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA4YTEzNTlkZmU4MzZiMDM5ZWViZjI2N2Jm
MzQ3MDZhZmNkZDliNmZmLi41YTYyZGFkOGFhY2QwODBhY2Y0YmM2MzU0M2E4N2VkOTQ0NjNhNGJi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFk
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KIApAQCAtNzIs
MTAgKzczLDEwIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmdSZXNv
dXJjZSkKIAogICAgIHsKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAgICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAg
aW1hZ2VCdWZmZXJNYXA7Ci0gICAgICAgIGltYWdlQnVmZmVyTWFwLnNldChpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBSZXNvdXJj
ZUhlYXAgcmVzb3VyY2VIZWFwOworICAgICAgICByZXNvdXJjZUhlYXAuYWRkKGltYWdlQnVmZmVy
SWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICAgICAgUmVw
bGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCAmaW1hZ2VCdWZmZXJNYXAgfTsKKyAgICAg
ICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCAmcmVzb3VyY2VIZWFwIH07CiAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9F
UShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIGxpc3Quc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OlJl
cGxheWVkQWxsSXRlbXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>