<?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>204740</bug_id>
          
          <creation_ts>2019-12-02 02:08:28 -0800</creation_ts>
          <short_desc>Start adding encoding support for DisplayList and some DisplayListItems</short_desc>
          <delta_ts>2019-12-03 12:07:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594533</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 02:08:28 -0800</bug_when>
    <thetext>Start adding encoding support for DisplayList and some DisplayListItems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594534</commentid>
    <comment_count>1</comment_count>
      <attachid>384602</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 02:08:58 -0800</bug_when>
    <thetext>Created attachment 384602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594535</commentid>
    <comment_count>2</comment_count>
      <attachid>384603</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 02:11:29 -0800</bug_when>
    <thetext>Created attachment 384603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594642</commentid>
    <comment_count>3</comment_count>
      <attachid>384603</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-02 09:30:41 -0800</bug_when>
    <thetext>Comment on attachment 384603
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1907
&gt; +    // ApplyDeviceScaleFactor
&gt; +    default:

I think it would be better to remove the default and all the comments with missing types.
Also, this would be done for you automatically if Item contained a Variant of many types instead of being inherited from.  That might be worse for other reasons, but it might be worth considering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594663</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 10:06:31 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 384603 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384603&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1907
&gt; &gt; +    // ApplyDeviceScaleFactor
&gt; &gt; +    default:
&gt; 
&gt; I think it would be better to remove the default and all the comments with
&gt; missing types.

And add logging to each missing type instead?

&gt; Also, this would be done for you automatically if Item contained a Variant
&gt; of many types instead of being inherited from.  That might be worse for
&gt; other reasons, but it might be worth considering.

I will tippytap it and see how it looks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594692</commentid>
    <comment_count>5</comment_count>
      <attachid>384603</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-12-02 10:32:34 -0800</bug_when>
    <thetext>Comment on attachment 384603
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:320
&gt; +    Optional&lt;float&gt; x;
&gt; +    decoder &gt;&gt; x;
&gt; +    if (!x)
&gt; +        return WTF::nullopt;
&gt; +
&gt; +    Optional&lt;float&gt; y;
&gt; +    decoder &gt;&gt; y;
&gt; +    if (!y)
&gt; +        return WTF::nullopt;
&gt; +
&gt; +    return Translate::create(*x, *y);

I do not think we need to use these Optionals and these checks for something we do internally. Decoding should not fail unless we did something really bad while encoding the display list. I think we should not make let it go silently like that. Instead we should keep ASSERTing all the way. So I would expect a function like this to be like this:

    float x;
    float x;
    decoder &gt;&gt; x;
    decoder &gt;&gt; y;
    return Translate::create(x, y);

Decoder::operator&gt;&gt;() should always assert it is not at the end of the buffer and it has enough data to be consumed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594733</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 12:06:36 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #5)
&gt; Comment on attachment 384603 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384603&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:320
&gt; &gt; +    Optional&lt;float&gt; x;
&gt; &gt; +    decoder &gt;&gt; x;
&gt; &gt; +    if (!x)
&gt; &gt; +        return WTF::nullopt;
&gt; &gt; +
&gt; &gt; +    Optional&lt;float&gt; y;
&gt; &gt; +    decoder &gt;&gt; y;
&gt; &gt; +    if (!y)
&gt; &gt; +        return WTF::nullopt;
&gt; &gt; +
&gt; &gt; +    return Translate::create(*x, *y);
&gt; 
&gt; I do not think we need to use these Optionals and these checks for something
&gt; we do internally. Decoding should not fail unless we did something really
&gt; bad while encoding the display list.

This is idiomatic IPC encoding code. 

&gt; I think we should not make let it go
&gt; silently like that.

It is not silent. The optionals bubble up, the message decode is marked as failed, and the *process is killed*. That is the opposite of silent. Again, this is idiomatic, we have zillions of encoders exactly like this. There&apos;s nothing about display lists that makes them special or deserving of special treatment.

&gt; Instead we should keep ASSERTing all the way. So I would
&gt; expect a function like this to be like this:
&gt; 
&gt;     float x;
&gt;     float x;
&gt;     decoder &gt;&gt; x;
&gt;     decoder &gt;&gt; y;
&gt;     return Translate::create(x, y);
&gt; 
&gt; Decoder::operator&gt;&gt;() should always assert it is not at the end of the
&gt; buffer and it has enough data to be consumed.

No, this doesn&apos;t fit in with the existing model at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594765</commentid>
    <comment_count>7</comment_count>
      <attachid>384603</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-12-02 13:37:11 -0800</bug_when>
    <thetext>Comment on attachment 384603
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:101
&gt; +    if ((m_changeFlags.contains(GraphicsContextState::CompositeOperationChange) || m_changeFlags.contains(GraphicsContextState::BlendModeChange))

Can this be m_changeFlags.containsAny({ GraphicsContextState::CompositeOperationChange, GraphicsContextState::BlendModeChange })

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:164
&gt; +    if (flags.contains(GraphicsContextState::CompositeOperationChange) || flags.contains(GraphicsContextState::BlendModeChange)) {

Ditto

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:239
&gt; +    if (m_changeFlags.contains(GraphicsContextState::CompositeOperationChange) || m_changeFlags.contains(GraphicsContextState::BlendModeChange))

Ditto

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.h:134
&gt; +        if (!item)
&gt; +            continue;

Log here?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:174
&gt; +    template&lt;class Encoder&gt; void encodeForDrawingItem(Encoder&amp;) const;
&gt; +    template&lt;class Decoder&gt; static bool decodeForDrawingItem(Decoder&amp;, DrawingItem&amp;);

Names are confusing.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:504
&gt; +    if (*changeFlags &amp; GraphicsContextState::StrokeColorChange) {

stateChange.m_changeFlags.contains()

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:513
&gt; +    if (*changeFlags &amp; GraphicsContextState::FillColorChange) {

.contains()

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:522
&gt; +    if (*changeFlags &amp; GraphicsContextState::AlphaChange) {

.contains()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594927</commentid>
    <comment_count>8</comment_count>
      <attachid>384694</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 23:47:55 -0800</bug_when>
    <thetext>Created attachment 384694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594929</commentid>
    <comment_count>9</comment_count>
      <attachid>384694</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 23:49:50 -0800</bug_when>
    <thetext>Comment on attachment 384694
Patch

Rejecting attachment 384694 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 384694, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=384694&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=204740&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 384694 from bug 204740.
Fetching: https://bugs.webkit.org/attachment.cgi?id=384694
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 11 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #3 FAILED at 29536.
Hunk #4 succeeded at 29908 (offset -2 lines).
Hunk #5 FAILED at 30049.
Hunk #6 FAILED at 30160.
Hunk #7 FAILED at 30552.
Hunk #8 FAILED at 31175.
Hunk #9 FAILED at 31207.
Hunk #10 FAILED at 31243.
Hunk #11 FAILED at 31704.
Hunk #12 FAILED at 32498.
Hunk #13 FAILED at 32827.
10 out of 13 hunks FAILED -- saving rejects to file Source/WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/platform/graphics/GraphicsContext.cpp
patching file Source/WebCore/platform/graphics/GraphicsContext.h
patching file Source/WebCore/platform/graphics/Pattern.h
patching file Source/WebCore/platform/graphics/displaylists/DisplayList.h
patching file Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
patching file Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
patching file Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
patching file Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
patching file Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13285420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595016</commentid>
    <comment_count>10</comment_count>
      <attachid>384714</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-03 08:23:42 -0800</bug_when>
    <thetext>Created attachment 384714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595025</commentid>
    <comment_count>11</comment_count>
      <attachid>384714</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-03 08:50:51 -0800</bug_when>
    <thetext>Comment on attachment 384714
Patch

Clearing flags on attachment: 384714

Committed r253046: &lt;https://trac.webkit.org/changeset/253046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595026</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-03 08:50:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595027</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-03 08:51:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/57591573&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595059</commentid>
    <comment_count>14</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-12-03 10:38:42 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/253046/webkit

broke testing bot Mac debug wk2 https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20%28Tests%29/builds/6152

Testing is exiting early with crashes

example:
ASSERTION FAILED: Enumerator is not a positive power of two.
hasOneBitSet(static_cast&lt;StorageType&gt;(option))
/Volumes/Data/slave/mojave-debug/build/WebKitBuild/Debug/usr/local/include/wtf/OptionSet.h(88) :</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595063</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-03 10:41:05 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #14)
&gt; It looks like the changes in https://trac.webkit.org/changeset/253046/webkit
&gt; 
&gt; broke testing bot Mac debug wk2
&gt; https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20%28Tests%29/
&gt; builds/6152
&gt; 
&gt; Testing is exiting early with crashes
&gt; 
&gt; example:
&gt; ASSERTION FAILED: Enumerator is not a positive power of two.
&gt; hasOneBitSet(static_cast&lt;StorageType&gt;(option))
&gt; /Volumes/Data/slave/mojave-debug/build/WebKitBuild/Debug/usr/local/include/
&gt; wtf/OptionSet.h(88) :

Weird! I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595073</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-03 10:53:37 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #15)
&gt; (In reply to Truitt Savell from comment #14)
&gt; &gt; It looks like the changes in https://trac.webkit.org/changeset/253046/webkit
&gt; &gt; 
&gt; &gt; broke testing bot Mac debug wk2
&gt; &gt; https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20%28Tests%29/
&gt; &gt; builds/6152
&gt; &gt; 
&gt; &gt; Testing is exiting early with crashes
&gt; &gt; 
&gt; &gt; example:
&gt; &gt; ASSERTION FAILED: Enumerator is not a positive power of two.
&gt; &gt; hasOneBitSet(static_cast&lt;StorageType&gt;(option))
&gt; &gt; /Volumes/Data/slave/mojave-debug/build/WebKitBuild/Debug/usr/local/include/
&gt; &gt; wtf/OptionSet.h(88) :
&gt; 
&gt; Weird! I&apos;ll fix it.

Have a fix, just building to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595111</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-03 12:07:07 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; (In reply to Tim Horton from comment #15)
&gt; &gt; (In reply to Truitt Savell from comment #14)
&gt; &gt; &gt; It looks like the changes in https://trac.webkit.org/changeset/253046/webkit
&gt; &gt; &gt; 
&gt; &gt; &gt; broke testing bot Mac debug wk2
&gt; &gt; &gt; https://build.webkit.org/builders/Apple%20Mojave%20Debug%20WK2%20%28Tests%29/
&gt; &gt; &gt; builds/6152
&gt; &gt; &gt; 
&gt; &gt; &gt; Testing is exiting early with crashes
&gt; &gt; &gt; 
&gt; &gt; &gt; example:
&gt; &gt; &gt; ASSERTION FAILED: Enumerator is not a positive power of two.
&gt; &gt; &gt; hasOneBitSet(static_cast&lt;StorageType&gt;(option))
&gt; &gt; &gt; /Volumes/Data/slave/mojave-debug/build/WebKitBuild/Debug/usr/local/include/
&gt; &gt; &gt; wtf/OptionSet.h(88) :
&gt; &gt; 
&gt; &gt; Weird! I&apos;ll fix it.
&gt; 
&gt; Have a fix, just building to test.

Fixed in https://trac.webkit.org/changeset/253058/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384602</attachid>
            <date>2019-12-02 02:08:58 -0800</date>
            <delta_ts>2019-12-02 02:11:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204740-20191202020857.patch</filename>
            <type>text/plain</type>
            <size>62108</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZhOTQzODEyNDE3NmJk
NzI3YzY1OTgwZjFhZmQ4OGNiY2VhMTVmNC4uZmEwYjllMTQyZWFlZmJkY2NiOTJhMTkyMzlkOTY1
MmEyMzU4ZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE5LTEyLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IGFkZGlu
ZyBlbmNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdCBhbmQgc29tZSBEaXNwbGF5TGlzdEl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3
NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBi
ZSB1c2VkIGluIGEgbGF0ZXIgcGF0Y2guCisKKyAgICAgICAgU3RhcnQgZW5jb2RpbmcgYW5kIGRl
Y29kaW5nIERpc3BsYXlMaXN0LCBhbmQgaXRzIGNoaWxkIGl0ZW1zLiBXZQorICAgICAgICBjdXJy
ZW50bHkgc3VwcG9ydCBvbmx5IGEgc3Vic2V0IG9mIHRoZSBpdGVtIHN1YmNsYXNzZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3Vt
dWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgQWRvcHQgT3B0aW9uU2V0IGZvciBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06Okl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6U2F2ZTo6U2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzdG9yZTo6UmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
VHJhbnNsYXRlOjpUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJv
dGF0ZTo6Um90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6U2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1JlY3Q6OkRyYXdSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6RHJhd1BhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0OjpGaWxsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I6OkZpbGxSZWN0V2l0aENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OkZp
bGxDb21wb3NpdGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBh
dGg6OkZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVhclJlY3Q6
OkNsZWFyUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpp
c1N0YXRlSXRlbVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdJ
dGVtOjplbmNvZGVGb3JEcmF3aW5nSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd2luZ0l0ZW06OmRlY29kZUZvckRyYXdpbmdJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpTYXZlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNhdmU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXN0b3JlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlRy
YW5zbGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpU
cmFuc2xhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Um90YXRl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDb25jYXRlbmF0ZUNUTTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDb25jYXRlbmF0ZUNUTTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVjdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGaWxsUmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGaWxsUmVjdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGaWxsUmVjdFdpdGhDb2xvcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRoOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRoOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsZWFyUmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVhclJlY3Q6OmRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW06Okl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2F2ZTo6U2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVzdG9yZTo6UmVzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6VHJhbnNsYXRlOjpUcmFuc2xhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6Um90YXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6U2NhbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1JlY3Q6OkRyYXdSZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6RHJhd1BhdGgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0OjpGaWxsUmVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29s
b3I6OkZpbGxSZWN0V2l0aENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OkZpbGxDb21wb3NpdGVkUmVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg6OkZpbGxQYXRoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVhclJlY3Q6OkNsZWFyUmVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCiAyMDE5LTExLTMwICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBDb3JlQXVkaW9DYXB0dXJlU291cmNl
IHN1c3BlbnNpb24gbG9naWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5ODI0MzJhYjU5ODFmMGVlMDE3MDU1NzAwN2RkNDlmZTBl
OTUyOTVhLi5hZGNmNDVmOTVkMjNkNGM5NzBmMGJiZmRmMWFhMmNjZDhjY2Q3M2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
NTEsMTAgKzM1MSwxMCBAQAogCQkwRkRBN0MyNzE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRBN0MyNTE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi87IH07CiAJCTBGRENEN0YzMUQ0
N0U2NTUwMDlGMDhCQyAvKiBMb2dJbml0aWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQ0Q3RjIxRDQ3RTY1NTAwOUYwOEJDIC8qIExv
Z0luaXRpYWxpemF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZFNTgwNjQxOTMyN0E2MjAwREUzMkVCIC8qIFNjcm9sbGluZ1RyZWVNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTU4MDYy
MTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmggKi87IH07Ci0JCTBGRTVGQkQz
MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0IxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0LmggKi87IH07Ci0JCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dEl0ZW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovOyB9OwotCQkw
RkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0YxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLzsgfTsKLQkJMEZFNUZCRDkxQzNERDUx
RTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdFJlcGxheWVyLmggKi87IH07CisJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFNUZCQ0IxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDUxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dEl0ZW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxh
eWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZFNzE0MDYxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNzE0MDQxNDIxNzBCODAw
REIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovOyB9OwogCQkwRkVBM0U3QjE5MUIyRkM1
MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEzRTc5MTkxQjJGQzUwMDBG
MUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRUEzRTgwMTkxQjMxNjkwMDBG
MUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U3RTE5MUIzMTY5MDAwRjFC
NTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MjUsNiArODI1LDcgQEAKIAkJ
MkQ5QkY3NDYxREJGREM0NzAwN0E3RDk5IC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlCRjczMzFEQkZEQzBGMDA3QTdEOTkg
LyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKIAkJMkQ5QkY3NDcxREJGREM0OTAwN0E3RDk5IC8qIE1l
ZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEOUJGNzJGMURCRkRDMEYwMDdBN0Q5OSAvKiBNZWRpYUtleU1lc3NhZ2VF
dmVudC5jcHAgKi87IH07CiAJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5
RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjICovOyB9OworCQkyREFDQjlF
OTIzNzU1RDAwMDBCNEMxODUgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2
IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQ
cm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCAqLzsg
fTsKIAkJMkRENUE3MjcxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyNjFF
QkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEz
NjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRERFMUNFMDFGNTc0QUQxMDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3
LmggKi87IH07CkBAIC0xNjY0Miw4ICsxNjY0Myw4IEBACiAJCQkJMTE1Q0E4MzAyMzMyOEIxRTAw
RkQzQjA4IC8qIExheW91dFVuaXRzLmNwcCAqLywKIAkJCQk2RjczOTE4QzIxMDZDRUREMDA2QUYy
NjIgLyogTGF5b3V0VW5pdHMuaCAqLywKIAkJCQk2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyog
TWFyZ2luVHlwZXMuaCAqLywKLQkJCQlFNEFCQUJEQjIzNjA4OEZEMDBGQTQzNDUgLyogUmVuZGVy
QmxvY2tGbG93TGluZUxheW91dC5oICovLAogCQkJCUU0QUJBQkRFMjM2MDg5M0QwMEZBNDM0NSAv
KiBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcCAqLywKKwkJCQlFNEFCQUJEQjIzNjA4OEZE
MDBGQTQzNDUgLyogUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oICovLAogCQkJCTExRkYwMkQ1
MjBCQTNDODEwMDgzRjI1QiAvKiBWZXJpZmljYXRpb24uY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBsYXlvdXQ7CkBAIC0yODcyOSw4ICsyODczMCw4IEBACiAJCQkJRkZFRkFCMjkxODM4MERBMDAw
NTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oICovLAogCQkJCUU0ODRBMzNEMjMwNTUzMDMwMDlB
REU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCAqLywKIAkJCQlFNDg0QTMzQjIzMDU1MzAz
MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oICovLAotCQkJCUU0MzQzRDIxMjM5Mjc3
ODMwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsU2ltcGxlUGF0aC5oICovLAogCQkJCUU0
MzQzRDI0MjM5Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGgu
aCAqLywKKwkJCQlFNDM0M0QyMTIzOTI3NzgzMDBFQkJCNjYgLyogTGluZUxheW91dFRyYXZlcnNh
bFNpbXBsZVBhdGguaCAqLywKIAkJCQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdp
ZHRoLmNwcCAqLywKIAkJCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmgg
Ki8sCiAJCQkJRkZBQzMwRkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAg
Ki8sCkBAIC0yOTg5OCw2ICsyOTg5OSw3IEBACiAJCQkJMzFBQjUwMDAxMjI4NzhBMjAwMUE3REIw
IC8qIEdyYXBoaWNzQ29udGV4dDNESU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDg0M0E0QjIw
RkVCRTNEMDBGRTg2MEUgLyogR3JhcGhpY3NDb250ZXh0M0RNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBp
biBIZWFkZXJzICovLAorCQkJCTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0Nv
bnRleHRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBENjcwODBFOUU5REVCMDBFNDIwRjAg
LyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4g
SGVhZGVycyAqLywKQEAgLTMwNTQxLDcgKzMwNTQzLDYgQEAKIAkJCQk4MzcwNTY5MDFGNTA5MTVD
MDBEOTM0MjUgLyogSlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODMzQjlFMzYxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzEyQkU0ODgxRkU4Njg2QTAwMjAzMUNDIC8qIEpTRmlsbE1vZGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCUU0MzQzRDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5
b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUI2RDlEMjdCMTRF
QUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyODA4
MzNGMUM2REMyNkYwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMTE5Niw2ICszMTE5Nyw4IEBACiAJCQkJNkYyNkVCNDgyMzQwMDRBNTAwNjkwNkUyIC8q
IExpbmVMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkVGQUIyQTE4MzgwREEw
MDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg0QTMz
RTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21w
bGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQzNDNEMjMyMzkyNzc4NDAwRUJCQjY2IC8q
IExpbmVMYXlvdXRUcmF2ZXJzYWxTaW1wbGVQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkRC
QzA0NzE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
QkE5REMwQjFERjQ0REY0MDAwNTY3NUMgLyogTGlua0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE0M0IyNjMxREREMTUyMDAwMTRGQUM2IC8qIExpbmtJY29uLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxNjg5LDcgKzMxNjkyLDYgQEAKIAkJCQk1N0RDRUQ3NDIxNDMwNUYwMDAxNkI4NDcgLyog
UHVibGljS2V5Q3JlZGVudGlhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkVGMjAw
OTgwQzYwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTczMDNDMEEyMDA5OUJBRDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQzNDNEMjMyMzkyNzc4NDAw
RUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxTaW1wbGVQYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNT
dWZmaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQ
dWJsaWNVUkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzU1LDYgKzMxNzU3LDcgQEAK
IAkJCQk3Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzEwRDc2ODE3RDhFRTcxMDA1RTI2MjYgLyogUmVuZGVyQmxv
Y2tGbG93LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEFCQUJERDIzNjA4OEZFMDBGQTQzNDUgLyog
UmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjIw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQjE3
OUMxNDMzNzlGNTAwNTJFQUU5IC8qIFJlbmRlckJveEZyYWdtZW50SW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM5NkRCNDMwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDcwLDcgKzMyNDczLDYgQEAKIAkJCQkwODhDMkY3QTEy
MzkwMDgxMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4MTA5M0RDMTI1NUYwRTcwMEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MTY2OERBMTI1NjAzRDUwMDZGMjVERSAv
KiBTVkdUZXh0TGF5b3V0RW5naW5lLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEFCQUJERDIzNjA4
OEZFMDBGQTQzNDUgLyogUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDgwRTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNl
bGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgwRTQ5MjgxMjU1RjNCRDAwRUZDQTI3IC8qIFNW
R1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEYwQkZDNjEy
NTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggNzM4OGQ5ZmM3YzI1MzI1MWI1YzM5MWU4NDcyMjk4ZWRlN2U4YjQ2Yi4uYWZlYzcyYWU3
YWNiOTcyN2M2OTQwMjVlMjhjZWZkYWJiZjNmOGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHByaXZhdGU6CiAKICNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoZmxhZywg
cHJvcGVydHkpIFwKICAgICBpZiAoKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCi0gICAg
ICAgIGNoYW5nZUZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnOworICAgICAgICBj
aGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZsYWcpOwogCiBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6
Y2hhbmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0
CiB7CkBAIC04OCw3ICs4OCw3IEBAIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0CiAgICAgICAgICYm
IChtX3N0YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKICAgICAgICAgICAg
IHx8IG1fc3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCiAgICAgICAgICAgICB8
fCBtX3N0YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAgICAgY2hh
bmdlRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZTsKKyAgICAgICAg
Y2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwogCiAg
ICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBzdHJv
a2VUaGlja25lc3MpOwogICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3aW5n
TW9kZUNoYW5nZSwgdGV4dERyYXdpbmdNb2RlKTsKQEAgLTk4LDkgKzk4LDExIEBAIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
OjpjaGFuZ2VzRnJvbVN0CiAgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVD
aGFuZ2UsIGZpbGxSdWxlKTsKICAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNo
YW5nZSwgYWxwaGEpOwogCi0gICAgaWYgKChtX2NoYW5nZUZsYWdzICYgKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgfCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
QmxlbmRNb2RlQ2hhbmdlKSkKLSAgICAgICAgJiYgKG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Ig
IT0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgfHwgbV9zdGF0ZS5ibGVuZE1vZGUgIT0gc3RhdGUu
YmxlbmRNb2RlKSkKLSAgICAgICAgY2hhbmdlRmxhZ3MgfD0gKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgfCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRN
b2RlQ2hhbmdlKTsKKyAgICBpZiAoKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkgfHwgbV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAgICAgICAgJiYg
KG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgIT0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgfHwg
bV9zdGF0ZS5ibGVuZE1vZGUgIT0gc3RhdGUuYmxlbmRNb2RlKSkgeworICAgICAgICBjaGFuZ2VG
bGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSk7
CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2Rl
Q2hhbmdlKTsKKyAgICB9CiAKICAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaG91bGRB
bnRpYWxpYXNDaGFuZ2UsIHNob3VsZEFudGlhbGlhcyk7CiAgICAgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoU2hvdWxkU21vb3RoRm9udHNDaGFuZ2UsIHNob3VsZFNtb290aEZvbnRzKTsKQEAg
LTE1OSw3ICsxNjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVs
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgRwogICAgIGlmIChmbGFncyAm
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkKICAgICAgICAgbV9zdGF0ZS5hbHBo
YSA9IHN0YXRlLmFscGhhOwogCi0gICAgaWYgKGZsYWdzICYgKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgfCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRN
b2RlQ2hhbmdlKSkgeworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSB8fCBmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkgewogICAgICAgICBtX3N0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yID0gc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgICAgIG1fc3RhdGUuYmxl
bmRNb2RlID0gc3RhdGUuYmxlbmRNb2RlOwogICAgIH0KQEAgLTE4Nyw3ICsxODksNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgRwogICAgICAgICBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0g
c3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CiAjZW5kaWYKIAotICAgIG1fY2hhbmdlRmxhZ3MgfD0g
ZmxhZ3M7CisgICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
CkBAIC0yMzQsNyArMjM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGlmIChtX2NoYW5nZUZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKQogICAgICAgICBjb250ZXh0LnNl
dEFscGhhKG1fc3RhdGUuYWxwaGEpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiAoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSB8IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpIHx8IG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkp
CiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3IsIG1fc3RhdGUuYmxlbmRNb2RlKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDg3
OTE0NWIxM2M1N2Q2YzIwN2JiZjQ5MjY5ZmZmMmZkMzAzYWM1ZS4uMDQ2YTZkMzNhNjI5NjQ0MTU1
MGVjOTUxZGM2NzM2ZjAxMTM0OTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiAjaWYgVVNFKENHKQog
dHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwpAQCAtMTcx
LDcgKzE3Miw3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgICAgIFVzZURh
cmtBcHBlYXJhbmNlQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMjIsCiAjZW5kaWYKICAg
ICB9OwotICAgIHR5cGVkZWYgdWludDMyX3QgU3RhdGVDaGFuZ2VGbGFnczsKKyAgICB0eXBlZGVm
IE9wdGlvblNldDxDaGFuZ2U+IFN0YXRlQ2hhbmdlRmxhZ3M7CiAKICAgICBSZWZQdHI8R3JhZGll
bnQ+IHN0cm9rZUdyYWRpZW50OwogICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IDc1MWU5NjU3
NDRkODVhZDE2ZDRkYTlmODhjNjE5ZmRmOTQ3MjZmYWMuLjAwN2U1OTAyZDk1OTZiYjY1N2ViY2Y5
OGE5ZTNhNjE1NTVjYTk4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgSW1hZ2U7CiBjbGFzcyBQYXR0ZXJuIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwg
Ym9vbCByZXBlYXRZKTsKLSAgICB+UGF0dGVybigpOworICAgIFdFQkNPUkVfRVhQT1JUIH5QYXR0
ZXJuKCk7CiAKICAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1h
Z2UuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBkNDQzN2UzZDQxYmUxMjJj
Yzg5MDY1MjQ3YzkyMjI2ZTc4MWRjNzdiLi5hMjE3N2Q3Y2JiN2Y0YjQ2MzY5N2Q0ZTQwY2Q2MDY0
Nzg3Zjk3M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNzksOSArNzksMTMgQEAgcHVi
bGljOgogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECiAgICAgV1RGOjpD
U3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBkdW1wKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGlzcGxheUxpc3Q+IGRlY29kZShEZWNv
ZGVyJik7CisKKwogcHJpdmF0ZToKICAgICBJdGVtJiBhcHBlbmQoUmVmPEl0ZW0+JiYgaXRlbSkK
ICAgICB7CkBAIC0xMDIsNiArMTA2LDM4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxJdGVt
Pj4gbV9saXN0OwogfTsKIAorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEaXNwbGF5
TGlzdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obV9saXN0LnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBtX2xpc3QpCisgICAgICAgIGVuY29kZXIgPDwgaXRlbS5nZXQoKTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERpc3BsYXlMaXN0PiBEaXNwbGF5TGlzdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGl0ZW1Db3Vu
dDsKKyAgICBkZWNvZGVyID4+IGl0ZW1Db3VudDsKKyAgICBpZiAoIWl0ZW1Db3VudCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIERpc3BsYXlMaXN0IGRpc3BsYXlMaXN0Owor
CisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8ICppdGVtQ291bnQ7IGkrKykgeworICAgICAg
ICBhdXRvIGl0ZW0gPSBJdGVtOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIC8vIEZJWE1FOiBP
bmNlIHdlIGNhbiBkZWNvZGUgYWxsIHR5cGVzLCBmYWlsaW5nIHRvIGRlY29kZSBhbiBpdGVtIHNo
b3VsZCB0dXJuIGludG8gYSBkZWNvZGUgZmFpbHVyZS4KKyAgICAgICAgLy8gRm9yIG5vdywgd2Ug
anVzdCBoYXZlIHRvIGlnbm9yZSBpdC4KKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGRpc3BsYXlMaXN0LmFwcGVuZChXVEZNb3ZlKCppdGVtKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGRpc3BsYXlMaXN0OworfQorCiB9IC8vIERpc3BsYXlMaXN0CiAK
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAppbmRleCBkMzliNjYyYTRhYThhYjY0NmIzMzE3MDEwMmRiNmZjOGNkODJhMTUwLi45MWNiYjlm
ZWYyZjIzZjYwOTI4NjNjMDI0MGZlNzNlZGRjZDMyNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgVVNFKENHKQorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIApAQCAtNDQsNiArNDgs
MTMgQEAgV1RGOjpDU3RyaW5nIEl0ZW06OmRlc2NyaXB0aW9uKCkgY29uc3QKIH0KICNlbmRpZgog
CitJdGVtOjpJdGVtKEl0ZW1UeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKK3sKK30KKwor
SXRlbTo6fkl0ZW0oKSA9IGRlZmF1bHQ7CisKIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25z
dCBJdGVtJiBpdGVtKQogewogICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKQEAgLTE2Miw2ICsx
NzMsMjAgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdpbmdJdGVtJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorRHJhd2luZ0l0ZW06
OkRyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCisgICAgOiBJdGVtKHR5cGUpCit7Cit9CisKK0Ry
YXdpbmdJdGVtOjp+RHJhd2luZ0l0ZW0oKSA9IGRlZmF1bHQ7CisKK1NhdmU6OlNhdmUoKQorICAg
IDogSXRlbShJdGVtVHlwZTo6U2F2ZSkKK3sKK30KKworU2F2ZTo6flNhdmUoKSA9IGRlZmF1bHQ7
CisKIHZvaWQgU2F2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGNvbnRleHQuc2F2ZSgpOwpAQCAtMTczLDExICsxOTgsMjcgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNhdmUmIGl0ZW0pCiAgICAgcmV0
dXJuIHRzOwogfQogCitSZXN0b3JlOjpSZXN0b3JlKCkKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OlJl
c3RvcmUpCit7Cit9CisKK1Jlc3RvcmU6On5SZXN0b3JlKCkgPSBkZWZhdWx0OworCiB2b2lkIFJl
c3RvcmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250
ZXh0LnJlc3RvcmUoKTsKIH0KIAorVHJhbnNsYXRlOjpUcmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQg
eSkKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OlRyYW5zbGF0ZSkKKyAgICAsIG1feCh4KQorICAgICwg
bV95KHkpCit7Cit9CisKK1RyYW5zbGF0ZTo6flRyYW5zbGF0ZSgpID0gZGVmYXVsdDsKKwogdm9p
ZCBUcmFuc2xhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShtX3gsIG1feSk7CkBAIC0xOTEsNiArMjMyLDE0IEBAIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUm
IGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitSb3RhdGU6OlJvdGF0ZShmbG9hdCBhbmdsZSkK
KyAgICA6IEl0ZW0oSXRlbVR5cGU6OlJvdGF0ZSkKKyAgICAsIG1fYW5nbGUoYW5nbGUpCit7Cit9
CisKK1JvdGF0ZTo6flJvdGF0ZSgpID0gZGVmYXVsdDsKKwogdm9pZCBSb3RhdGU6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnJvdGF0ZShtX2Fu
Z2xlKTsKQEAgLTIwMyw2ICsyNTIsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJvdGF0ZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAK
K1NjYWxlOjpTY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCisgICAgOiBJdGVtKEl0ZW1UeXBl
OjpTY2FsZSkKKyAgICAsIG1fc2l6ZShzaXplKQoreworfQorCitTY2FsZTo6flNjYWxlKCkgPSBk
ZWZhdWx0OworCiB2b2lkIFNjYWxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgY29udGV4dC5zY2FsZShtX3NpemUpOwpAQCAtMjIxLDYgKzI3OCw4IEBAIENv
bmNhdGVuYXRlQ1RNOjpDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKIHsKIH0KIAorQ29uY2F0ZW5hdGVDVE06On5Db25jYXRlbmF0ZUNUTSgpID0gZGVmYXVs
dDsKKwogdm9pZCBDb25jYXRlbmF0ZUNUTTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogICAgIGNvbnRleHQuY29uY2F0Q1RNKG1fdHJhbnNmb3JtKTsKQEAgLTIzMyw2
ICsyOTIsMjAgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorU2V0U3Rh
dGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCisgICAgOiBJdGVtKEl0ZW1UeXBl
OjpTZXRTdGF0ZSkKKyAgICAsIG1fc3RhdGUoc3RhdGUsIGZsYWdzKQoreworfQorCitTZXRTdGF0
ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdl
KQorICAgIDogSXRlbShJdGVtVHlwZTo6U2V0U3RhdGUpCisgICAgLCBtX3N0YXRlKHN0YXRlQ2hh
bmdlKQoreworfQorCitTZXRTdGF0ZTo6flNldFN0YXRlKCkgPSBkZWZhdWx0OworCiB2b2lkIFNl
dFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgbV9z
dGF0ZS5hcHBseShjb250ZXh0KTsKQEAgLTU1MSw2ICs2MjQsMTUgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQog
ICAgIHJldHVybiB0czsKIH0KIAorRHJhd1JlY3Q6OkRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6
OkRyYXdSZWN0KQorICAgICwgbV9yZWN0KHJlY3QpCisgICAgLCBtX2JvcmRlclRoaWNrbmVzcyhi
b3JkZXJUaGlja25lc3MpCit7Cit9CisKK0RyYXdSZWN0Ojp+RHJhd1JlY3QoKSA9IGRlZmF1bHQ7
CisKIHZvaWQgRHJhd1JlY3Q6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
IHsKICAgICBjb250ZXh0LmRyYXdSZWN0KG1fcmVjdCwgbV9ib3JkZXJUaGlja25lc3MpOwpAQCAt
NjQzLDYgKzcyNSwxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0VsbGlwc2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitEcmF3
UGF0aDo6RHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpEcmF3UGF0aCkKKyAgICAsIG1fcGF0aChwYXRoKQoreworfQorCitEcmF3UGF0aDo6fkRy
YXdQYXRoKCkgPSBkZWZhdWx0OworCiB2b2lkIERyYXdQYXRoOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQpAQCAtNzA1LDYgKzc5NSwxNCBAQCBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0Zv
Y3VzUmluZ1JlY3RzJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorRmlsbFJlY3Q6OkZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpG
aWxsUmVjdCkKKyAgICAsIG1fcmVjdChyZWN0KQoreworfQorCitGaWxsUmVjdDo6fkZpbGxSZWN0
KCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxSZWN0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsUmVjdChtX3JlY3QpOwpAQCAtNzE3LDYg
KzgxNSwxNSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmlsbFJlY3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitGaWxsUmVjdFdpdGhD
b2xvcjo6RmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3Ip
CisgICAgLCBtX3JlY3QocmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3IpCit7Cit9CisKK0ZpbGxS
ZWN0V2l0aENvbG9yOjp+RmlsbFJlY3RXaXRoQ29sb3IoKSA9IGRlZmF1bHQ7CisKIHZvaWQgRmls
bFJlY3RXaXRoQ29sb3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBjb250ZXh0LmZpbGxSZWN0KG1fcmVjdCwgbV9jb2xvcik7CkBAIC03NDMsNiArODUwLDE3
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBG
aWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0ZpbGxDb21w
b3NpdGVkUmVjdDo6RmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3QpCisgICAg
LCBtX3JlY3QocmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3IpCisgICAgLCBtX29wKG9wKQorICAg
ICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQoreworfQorCitGaWxsQ29tcG9zaXRlZFJlY3Q6On5G
aWxsQ29tcG9zaXRlZFJlY3QoKSA9IGRlZmF1bHQ7CisKIHZvaWQgRmlsbENvbXBvc2l0ZWRSZWN0
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5m
aWxsUmVjdChtX3JlY3QsIG1fY29sb3IsIG1fb3AsIG1fYmxlbmRNb2RlKTsKQEAgLTc4Niw2ICs5
MDQsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlJiBpdGUKICAgICByZXR1cm4gdHM7CiB9CiAKK0Zp
bGxQYXRoOjpGaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQorICAgIDogRHJhd2luZ0l0ZW0oSXRl
bVR5cGU6OkZpbGxQYXRoKQorICAgICwgbV9wYXRoKHBhdGgpCit7Cit9CisKK0ZpbGxQYXRoOjp+
RmlsbFBhdGgoKSA9IGRlZmF1bHQ7CisKIHZvaWQgRmlsbFBhdGg6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmZpbGxQYXRoKG1fcGF0aCk7CkBA
IC04NzMsNiArOTk5LDE0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTdHJva2VFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAor
Q2xlYXJSZWN0OjpDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQorICAgIDogRHJhd2lu
Z0l0ZW0oSXRlbVR5cGU6OkNsZWFyUmVjdCkKKyAgICAsIG1fcmVjdChyZWN0KQoreworfQorCitD
bGVhclJlY3Q6On5DbGVhclJlY3QoKSA9IGRlZmF1bHQ7CisKIHZvaWQgQ2xlYXJSZWN0OjphcHBs
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5jbGVhclJl
Y3QobV9yZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGZiNzNhNjc4
MzNmMmQ4MzgyOGQ5MTk3NGNiMWE4ZWJmMDlkMWQ5NDUuLjFiNmZkYWUzMTNhZTYzZDAwNDZhZGUz
OGE5MTI0ZWFkZjA5NGZiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAt
MzUsMTAgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGVDRy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4
dFN0cmVhbTsKIH0KQEAgLTQ5LDcgKzQ1LDcgQEAgc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25z
OwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1lbnVtIGNsYXNzIEl0ZW1UeXBlIHsKK2Vu
dW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBTYXZlLAogICAgIFJlc3RvcmUsCiAg
ICAgVHJhbnNsYXRlLApAQCAtMTA3LDEyICsxMDMsOCBAQCBjbGFzcyBJdGVtIDogcHVibGljIFJl
ZkNvdW50ZWQ8SXRlbT4gewogcHVibGljOgogICAgIEl0ZW0oKSA9IGRlbGV0ZTsKIAotICAgIEl0
ZW0oSXRlbVR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+SXRlbSgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJdGVt
KEl0ZW1UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JdGVtKCk7CiAKICAgICBJ
dGVtVHlwZSB0eXBlKCkgY29uc3QKICAgICB7CkBAIC0xMzQsMTYgKzEyNiwxNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgaXNTdGF0ZUl0ZW1UeXBlKEl0ZW1UeXBlIGl0ZW1UeXBlKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChpdGVtVHlwZSkgewotICAgICAgICBjYXNlIEl0ZW1UeXBlOjog
VHJhbnNsYXRlOgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjogUm90YXRlOgotICAgICAgICBjYXNl
IEl0ZW1UeXBlOjogU2NhbGU6Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OiBDb25jYXRlbmF0ZUNU
TToKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFNldFN0YXRlOgotICAgICAgICBjYXNlIEl0ZW1U
eXBlOjogU2V0TGluZUNhcDoKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFNldExpbmVEYXNoOgot
ICAgICAgICBjYXNlIEl0ZW1UeXBlOjogU2V0TGluZUpvaW46Ci0gICAgICAgIGNhc2UgSXRlbVR5
cGU6OiBTZXRNaXRlckxpbWl0OgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjogQ2xlYXJTaGFkb3c6
CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKKyAgICAgICAgY2FzZSBJdGVtVHlw
ZTo6Um90YXRlOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKKyAgICAgICAgY2FzZSBJ
dGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRl
OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgorICAgICAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRMaW5lRGFzaDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Cisg
ICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6CisgICAgICAgIGNhc2UgSXRlbVR5
cGU6OkNsZWFyU2hhZG93OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTYsMTYgKzE0OCwxOCBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICBzdGF0aWMgc2l6ZV90IHNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mKTsK
IAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPEl0ZW0+
PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIEl0ZW1UeXBlIG1fdHlwZTsKIH07
CiAKIGNsYXNzIERyYXdpbmdJdGVtIDogcHVibGljIEl0ZW0gewogcHVibGljOgotICAgIGV4cGxp
Y2l0IERyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCi0gICAgICAgIDogSXRlbSh0eXBlKQotICAg
IHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRHJhd2luZ0l0ZW0oSXRlbVR5
cGUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd2luZ0l0ZW0oKTsKIAogICAg
IHZvaWQgc2V0RXh0ZW50KGNvbnN0IEZsb2F0UmVjdCYgcikgeyBtX2V4dGVudCA9IHI7IH0KICAg
ICBjb25zdCBGbG9hdFJlY3QmIGV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW50LnZhbHVl
KCk7IH0KQEAgLTE3NiwxMiArMTcwLDM2IEBAIHB1YmxpYzoKICAgICAvLyBEb2VzIG5vdCBpbmNs
dWRlIGVmZmV0cyBvZiB0cmFuc2Zvcm0sIHNoYWRvdyBldGMgaW4gdGhlIHN0YXRlLgogICAgIHZp
cnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlRm9yRHJhd2luZ0l0ZW0oRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZUZvckRyYXdpbmdJdGVt
KERlY29kZXImLCBEcmF3aW5nSXRlbSYpOworCiBwcml2YXRlOgogICAgIGJvb2wgaXNEcmF3aW5n
SXRlbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbV9leHRlbnQ7IC8vIEluIGJhc2UgY29vcmRpbmF0ZXMsIHRha2luZyBzaGFkb3dz
IGFuZCB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+Cit2b2lkIERyYXdpbmdJdGVtOjplbmNvZGVGb3JEcmF3aW5nSXRlbShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9leHRlbnQ7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+Citib29sIERyYXdpbmdJdGVtOjpkZWNvZGVGb3JEcmF3aW5nSXRlbShEZWNv
ZGVyJiBkZWNvZGVyLCBEcmF3aW5nSXRlbSYgaXRlbSkKK3sKKyAgICBPcHRpb25hbDxPcHRpb25h
bDxGbG9hdFJlY3Q+PiBleHRlbnQ7CisgICAgZGVjb2RlciA+PiBleHRlbnQ7CisgICAgaWYgKCFl
eHRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFVOVVNFRF9QQVJBTShpdGVtKTsK
KyAgICAvLyBGSVhNRTogRm9yIHNvbWUgcmVhc29uLCBhcHBseWluZyB0aGUgZXh0ZW50IGNhdXNl
cyB0aGUgaXRlbQorICAgIC8vIHRvIG5vdCBwYWludC4gV2Ugc2hvdWxkIGludmVzdGlnYXRlIGFu
ZCB0aGVuIHJlLWVuYWJsZSB0aGlzIG9wdGltaXphdGlvbi4KKworICAgIHJldHVybiB0cnVlOwor
fQorCiBjbGFzcyBTYXZlIDogcHVibGljIEl0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U2F2ZT4gY3JlYXRlKCkKQEAgLTE4OSwyMSArMjA3LDQzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2F2ZSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB+U2F2ZSgpOworCiAgICAgLy8gSW5kZXggaW4gdGhlIGRpc3BsYXkgbGlzdCBvZiB0aGUg
Y29ycmVzcG9uZGluZyBSZXN0b3JlIGl0ZW0uIDAgaWYgdW5tYXRjaGVkLgogICAgIHNpemVfdCBy
ZXN0b3JlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RvcmVJbmRleDsgfQogICAgIHZvaWQg
c2V0UmVzdG9yZUluZGV4KHNpemVfdCBpbmRleCkgeyBtX3Jlc3RvcmVJbmRleCA9IGluZGV4OyB9
CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxTYXZl
Pj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBTYXZlKCkKLSAgICAgICAgOiBJ
dGVtKEl0ZW1UeXBlOjpTYXZlKQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgU2F2
ZSgpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKICAgICBzaXplX3QgbV9yZXN0b3JlSW5kZXggeyAwIH07CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBTYXZlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3Jlc3RvcmVJbmRleCk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8U2F2ZT4+IFNhdmU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN0
b3JlSW5kZXg7CisgICAgZGVjb2RlciA+PiByZXN0b3JlSW5kZXg7CisgICAgaWYgKCFyZXN0b3Jl
SW5kZXgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyBGSVhNRTogVmFs
aWRhdGUgcmVzdG9yZUluZGV4PyBCdXQgd2UgZG9uJ3QgaGF2ZSB0aGUgbGlzdCBjb250ZXh0IGhl
cmUuCisgICAgYXV0byBzYXZlID0gU2F2ZTo6Y3JlYXRlKCk7CisgICAgc2F2ZS0+c2V0UmVzdG9y
ZUluZGV4KHN0YXRpY19jYXN0PHNpemVfdD4oKnJlc3RvcmVJbmRleCkpOworICAgIHJldHVybiBz
YXZlOworfQorCiBjbGFzcyBSZXN0b3JlIDogcHVibGljIEl0ZW0gewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8UmVzdG9yZT4gY3JlYXRlKCkKQEAgLTIxMSwxNSArMjUxLDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzdG9yZSk7CiAgICAgfQogCisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+UmVzdG9yZSgpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8UmVzdG9yZT4+IGRlY29kZShEZWNvZGVyJik7CisK
IHByaXZhdGU6Ci0gICAgUmVzdG9yZSgpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6UmVzdG9y
ZSkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlc3RvcmUoKTsKIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCit0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBSZXN0b3JlOjplbmNvZGUoRW5jb2RlciYpIGNvbnN0Cit7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8UmVzdG9yZT4+IFJl
c3RvcmU6OmRlY29kZShEZWNvZGVyJikKK3sKKyAgICByZXR1cm4gUmVzdG9yZTo6Y3JlYXRlKCk7
Cit9CisKIGNsYXNzIFRyYW5zbGF0ZSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFRyYW5zbGF0ZT4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHkpCkBAIC0yMjcsMTYgKzI4
MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zbGF0ZSh4
LCB5KSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+VHJhbnNsYXRlKCk7
CisKICAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CiAgICAgZmxvYXQgeSgpIGNv
bnN0IHsgcmV0dXJuIG1feTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxSZWY8VHJhbnNsYXRlPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToK
LSAgICBUcmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiBJdGVtKEl0ZW1UeXBl
OjpUcmFuc2xhdGUpCi0gICAgICAgICwgbV94KHgpCi0gICAgICAgICwgbV95KHkpCi0gICAgewot
ICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBUcmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0y
NDQsNiArMjk3LDI5IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV95OwogfTsKIAordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgVHJhbnNsYXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1feDsKKyAgICBlbmNvZGVyIDw8IG1feTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxUcmFuc2xhdGU+PiBUcmFuc2xh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPGZsb2F0PiB4Owor
ICAgIGRlY29kZXIgPj4geDsKKyAgICBpZiAoIXgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDxmbG9hdD4geTsKKyAgICBkZWNvZGVyID4+IHk7CisgICAgaWYg
KCF5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFRyYW5zbGF0
ZTo6Y3JlYXRlKCp4LCAqeSk7Cit9CisKIGNsYXNzIFJvdGF0ZSA6IHB1YmxpYyBJdGVtIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJvdGF0ZT4gY3JlYXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5z
KQpAQCAtMjUxLDIwICszMjcsMzggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSb3RhdGUoYW5nbGVJblJhZGlhbnMpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5Sb3RhdGUoKTsKKwogICAgIGZsb2F0IGFuZ2xlKCkgY29uc3QgeyByZXR1cm4g
bV9hbmdsZTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxSZWY8Um90YXRlPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBSb3RhdGUo
ZmxvYXQgYW5nbGUpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6Um90YXRlKQotICAgICAgICAs
IG1fYW5nbGUoYW5nbGUpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSb3RhdGUo
ZmxvYXQgYW5nbGUpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGZsb2F0IG1fYW5nbGU7IC8vIEluIHJhZGlhbnMuCiB9OwogCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBSb3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9hbmdsZTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxSb3RhdGU+PiBSb3RhdGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPGZsb2F0PiBhbmdsZTsKKyAgICBkZWNvZGVyID4+IGFu
Z2xlOworICAgIGlmICghYW5nbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gUm90YXRlOjpjcmVhdGUoKmFuZ2xlKTsKK30KKwogY2xhc3MgU2NhbGUgOiBwdWJs
aWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTY2FsZT4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKQEAgLTI3MiwyMCArMzY2LDM4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2NhbGUoc2l6ZSkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflNjYWxlKCk7CisKICAgICBjb25zdCBGbG9hdFNpemUmIGFtb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxSZWY8U2NhbGU+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgot
ICAgIFNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBJdGVtKEl0ZW1UeXBl
OjpTY2FsZSkKLSAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNP
UkVfRVhQT1JUIFNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0U2l6ZSBtX3NpemU7CiB9
OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTY2FsZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NpemU7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8U2NhbGU+PiBTY2FsZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBzY2FsZTsKKyAgICBkZWNv
ZGVyID4+IHNjYWxlOworICAgIGlmICghc2NhbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gU2NhbGU6OmNyZWF0ZSgqc2NhbGUpOworfQorCiBjbGFzcyBDb25j
YXRlbmF0ZUNUTSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbmNh
dGVuYXRlQ1RNPiBjcmVhdGUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCkBAIC0yOTMs
MjIgKzQwNSw1MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbmNh
dGVuYXRlQ1RNKG1hdHJpeCkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
fkNvbmNhdGVuYXRlQ1RNKCk7CisKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxDb25jYXRlbmF0ZUNUTT4+IGRlY29kZShEZWNv
ZGVyJik7CisKIHByaXZhdGU6Ci0gICAgQ29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOwogfTsKIAordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ29uY2F0ZW5hdGVDVE06OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV90cmFuc2Zvcm07Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8Q29uY2F0ZW5hdGVDVE0+PiBDb25jYXRlbmF0
ZUNUTTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8QWZmaW5lVHJh
bnNmb3JtPiB0cmFuc2Zvcm07CisgICAgZGVjb2RlciA+PiB0cmFuc2Zvcm07CisgICAgaWYgKCF0
cmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQ29u
Y2F0ZW5hdGVDVE06OmNyZWF0ZSgqdHJhbnNmb3JtKTsKK30KKwogY2xhc3MgU2V0U3RhdGUgOiBw
dWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTZXRTdGF0ZT4gY3JlYXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXRTdGF0ZShzdGF0ZSwgZmxhZ3MpKTsKICAgICB9CisKKyAgICBzdGF0aWMgUmVmPFNldFN0
YXRlPiBjcmVhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2V0U3RhdGUoc3RhdGVDaGFu
Z2UpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TZXRTdGF0ZSgpOwog
ICAgIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGU7IH0KIApAQCAtMzE5LDE4ICs0NjAsNzcgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGJ1aWxkZXJTdGF0ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsK
IAogICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0ZUNoYW5nZXMoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncyk7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFJlZjxTZXRTdGF0ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgU2V0U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKLSAgICAgICAgOiBJdGVtKEl0ZW1UeXBlOjpTZXRT
dGF0ZSkKLSAgICAgICAgLCBtX3N0YXRlKHN0YXRlLCBmbGFncykKLSAgICB7Ci0gICAgfQorICAg
IFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIFdFQkNPUkVfRVhQT1JU
IFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7CiAKICAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UgbV9zdGF0ZTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+
Cit2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1fc3RhdGUubV9jaGFuZ2VGbGFnczsKKworICAgIC8vIEZJWE1FOiBFbmNvZGUg
dGhlIG90aGVyIHN0YXRlIGNoYW5nZXMuCisKKyAgICBpZiAobV9zdGF0ZS5tX2NoYW5nZUZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKQorICAgICAgICBlbmNv
ZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5zdHJva2VDb2xvcjsKKworICAgIGlmIChtX3N0YXRlLm1f
Y2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKQorICAg
ICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5maWxsQ29sb3I7CisKKyAgICBpZiAobV9z
dGF0ZS5tX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKQor
ICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5hbHBoYTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxTZXRTdGF0ZT4+IFNldFN0YXRlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncz4gY2hhbmdlRmxhZ3M7CisgICAgZGVjb2RlciA+PiBjaGFuZ2VGbGFn
czsKKyAgICBpZiAoIWNoYW5nZUZsYWdzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7CisgICAgc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFuZ2VGbGFnczsKKworICAgIGlmICgqY2hhbmdlRmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpIHsKKyAgICAgICAg
T3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOworICAgICAgICBkZWNvZGVyID4+IHN0cm9rZUNv
bG9yOworICAgICAgICBpZiAoIXN0cm9rZUNvbG9yKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUNvbG9yID0gKnN0
cm9rZUNvbG9yOworICAgIH0KKworICAgIGlmICgqY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSB7CisgICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxs
Q29sb3I7CisgICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOworICAgICAgICBpZiAoIWZpbGxD
b2xvcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAqZmlsbENvbG9yOworICAgIH0KKworICAgIGlmICgq
Y2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpIHsKKyAgICAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhOworICAgICAgICBkZWNvZGVyID4+IGFscGhhOworICAg
ICAgICBpZiAoIWFscGhhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFscGhhID0gKmFscGhhOworICAgIH0KKworICAgIHJl
dHVybiBTZXRTdGF0ZTo6Y3JlYXRlKHN0YXRlQ2hhbmdlKTsKK30KKwogY2xhc3MgU2V0TGluZUNh
cCA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNldExpbmVDYXA+IGNy
ZWF0ZShMaW5lQ2FwIGxpbmVDYXApCkBAIC03NDEsMTYgKzk0MSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdSZWN0KHJlY3QsIGJvcmRlclRoaWNrbmVzcykp
OwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdSZWN0KCk7CisKICAg
ICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGZsb2F0IGJv
cmRlclRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fYm9yZGVyVGhpY2tuZXNzOyB9CiAKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UmVjdD4+
IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgRHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0o
SXRlbVR5cGU6OkRyYXdSZWN0KQotICAgICAgICAsIG1fcmVjdChyZWN0KQotICAgICAgICAsIG1f
Ym9yZGVyVGhpY2tuZXNzKGJvcmRlclRoaWNrbmVzcykKLSAgICB7Ci0gICAgfQorICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cyk7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CkBAIC03NTksNiArOTU5LDM2IEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgbV9ib3JkZXJUaGlja25lc3M7CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBEcmF3UmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7CisgICAgZW5jb2RlciA8PCBtX2JvcmRlclRo
aWNrbmVzczsKKworICAgIGVuY29kZUZvckRyYXdpbmdJdGVtKGVuY29kZXIpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPERyYXdSZWN0Pj4gRHJhd1JlY3Q6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsK
KyAgICBkZWNvZGVyID4+IHJlY3Q7CisgICAgaWYgKCFyZWN0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGJvcmRlclRoaWNrbmVzczsKKyAgICBk
ZWNvZGVyID4+IGJvcmRlclRoaWNrbmVzczsKKyAgICBpZiAoIWJvcmRlclRoaWNrbmVzcykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaXRlbSA9IERyYXdSZWN0Ojpj
cmVhdGUoKnJlY3QsICpib3JkZXJUaGlja25lc3MpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3
aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHJldHVybiBpdGVtOworfQorCiBjbGFzcyBEcmF3TGluZSA6IHB1YmxpYyBEcmF3
aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3TGluZT4gY3JlYXRlKGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQpAQCAtODc4LDE0
ICsxMTA4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1Bh
dGgocGF0aCkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdQYXRo
KCk7CisKICAgICBjb25zdCBQYXRoJiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UGF0
aD4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgRHJhd1BhdGgoY29uc3QgUGF0
aCYgcGF0aCkKLSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdGgpCi0gICAg
ICAgICwgbV9wYXRoKHBhdGgpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3
UGF0aChjb25zdCBQYXRoJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOwogCkBAIC04OTQsNiArMTEyNSwzMCBAQCBwcml2YXRlOgogICAgIGNvbnN0
IFBhdGggbV9wYXRoOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd1Bh
dGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9w
YXRoOworCisgICAgZW5jb2RlRm9yRHJhd2luZ0l0ZW0oZW5jb2Rlcik7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BhdGg+PiBEcmF3UGF0aDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKKyAgICBkZWNv
ZGVyID4+IHBhdGg7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgYXV0byBpdGVtID0gRHJhd1BhdGg6OmNyZWF0ZSgqcGF0aCk7CisKKyAgICBpZiAo
IWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0ZW0uZ2V0KCkpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0ZW07Cit9CisKIGNsYXNzIERyYXdGb2N1
c1JpbmdQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PERyYXdGb2N1c1JpbmdQYXRoPiBjcmVhdGUoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgs
IGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtOTY1LDE0ICsxMjIwLDE1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsbFJlY3QocmVjdCkpOwog
ICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkZpbGxSZWN0KCk7CisKICAgICBG
bG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RmlsbFJlY3Q+PiBkZWNvZGUoRGVj
b2RlciYpOworCiBwcml2YXRlOgotICAgIEZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
LSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbFJlY3QpCi0gICAgICAgICwgbV9y
ZWN0KHJlY3QpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBGaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KQEAgLTk4MCw2
ICsxMjM2LDMwIEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZpbGxSZWN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVjdDsKKworICAgIGVuY29kZUZvckRyYXdp
bmdJdGVtKGVuY29kZXIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8
UmVmPEZpbGxSZWN0Pj4gRmlsbFJlY3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKKyAgICBkZWNvZGVyID4+IHJlY3Q7CisgICAgaWYg
KCFyZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVtID0g
RmlsbFJlY3Q6OmNyZWF0ZSgqcmVjdCk7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdpbmdJdGVt
KGRlY29kZXIsIGl0ZW0uZ2V0KCkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGl0ZW07Cit9CisKIC8vIEZJWE1FOiBNYWtlIHRoZXNlIGluaGVyaXQgZnJvbSBG
aWxsUmVjdCBwcm9wZXIuCiBjbGFzcyBGaWxsUmVjdFdpdGhDb2xvciA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiBwdWJsaWM6CkBAIC05ODgsMTYgKzEyNjgsMTYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxsUmVjdFdpdGhDb2xvcihyZWN0LCBjb2xvcikpOwogICAg
IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkZpbGxSZWN0V2l0aENvbG9yKCk7CisK
ICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0
IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAorICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPEZpbGxSZWN0V2l0aENvbG9yPj4g
ZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBGaWxsUmVjdFdpdGhDb2xvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IpCi0gICAgICAgICwgbV9yZWN0KHJlY3Qp
Ci0gICAgICAgICwgbV9jb2xvcihjb2xvcikKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIEZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJik7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CkBAIC0xMDA2LDYgKzEyODYsMzYgQEAgcHJp
dmF0ZToKICAgICBDb2xvciBtX2NvbG9yOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgRmlsbFJlY3RXaXRoQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9yZWN0OworICAgIGVuY29kZXIgPDwgbV9jb2xvcjsKKworICAg
IGVuY29kZUZvckRyYXdpbmdJdGVtKGVuY29kZXIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorT3B0aW9uYWw8UmVmPEZpbGxSZWN0V2l0aENvbG9yPj4gRmlsbFJlY3RXaXRoQ29sb3I6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVj
dDsKKyAgICBkZWNvZGVyID4+IHJlY3Q7CisgICAgaWYgKCFyZWN0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRlY29kZXIg
Pj4gY29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGF1dG8gaXRlbSA9IEZpbGxSZWN0V2l0aENvbG9yOjpjcmVhdGUoKnJlY3QsICpjb2xv
cik7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0ZW0uZ2V0KCkp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0ZW07Cit9CisK
IGNsYXNzIEZpbGxSZWN0V2l0aEdyYWRpZW50IDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEZpbGxSZWN0V2l0aEdyYWRpZW50PiBjcmVhdGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQpCkBAIC0xMDM3LDIwICsxMzQ3LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsbENvbXBvc2l0ZWRSZWN0
KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RmlsbENvbXBvc2l0ZWRSZWN0KCk7CisKICAgICBGbG9hdFJlY3QgcmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29sb3I7IH0KICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3A7IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9ibGVuZE1vZGU7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPEZpbGxDb21wb3NpdGVkUmVjdD4+IGRlY29kZShEZWNv
ZGVyJik7CisKIHByaXZhdGU6Ci0gICAgRmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKLSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0KQotICAgICAgICAsIG1fcmVjdChyZWN0KQotICAgICAgICAsIG1fY29sb3IoY29s
b3IpCi0gICAgICAgICwgbV9vcChvcCkKLSAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUp
Ci0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBGaWxsQ29tcG9zaXRlZFJlY3QoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
KTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KQEAgLTEwNjEsNiArMTM2OSw0OCBA
QCBwcml2YXRlOgogICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKIH07CiAKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIEZpbGxDb21wb3NpdGVkUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7CisgICAgZW5jb2RlciA8PCBt
X2NvbG9yOworICAgIGVuY29kZXIgPDwgbV9vcDsKKyAgICBlbmNvZGVyIDw8IG1fYmxlbmRNb2Rl
OworCisgICAgZW5jb2RlRm9yRHJhd2luZ0l0ZW0oZW5jb2Rlcik7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RmlsbENvbXBvc2l0ZWRSZWN0Pj4gRmlsbENvbXBv
c2l0ZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IHJlY3Q7CisgICAgZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAg
ICBkZWNvZGVyID4+IGNvbG9yOworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gb3A7CisgICAgZGVj
b2RlciA+PiBvcDsKKyAgICBpZiAoIW9wKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CisgICAgZGVjb2RlciA+PiBibGVu
ZE1vZGU7CisgICAgaWYgKCFibGVuZE1vZGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBhdXRvIGl0ZW0gPSBGaWxsQ29tcG9zaXRlZFJlY3Q6OmNyZWF0ZSgqcmVjdCwgKmNv
bG9yLCAqb3AsICpibGVuZE1vZGUpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShk
ZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBpdGVtOworfQorCiBjbGFzcyBGaWxsUm91bmRlZFJlY3QgOiBwdWJsaWMgRHJhd2lu
Z0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RmlsbFJvdW5kZWRSZWN0PiBjcmVhdGUo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQpAQCAtMTEyNCwxNCArMTQ3NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZpbGxQYXRoKHBhdGgpKTsKICAgICB9CiAKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5GaWxsUGF0aCgpOworCiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxSZWY8RmlsbFBhdGg+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRl
OgotICAgIEZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0o
SXRlbVR5cGU6OkZpbGxQYXRoKQotICAgICAgICAsIG1fcGF0aChwYXRoKQotICAgIHsKLSAgICB9
CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsbFBhdGgoY29uc3QgUGF0aCYpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KQEAgLTExMzksNiArMTQ5MCwz
MCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFBhdGggbV9wYXRoOwogfTsKIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgRmlsbFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9wYXRoOworCisgICAgZW5jb2RlRm9yRHJhd2luZ0l0ZW0o
ZW5jb2Rlcik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8Rmls
bFBhdGg+PiBGaWxsUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9u
YWw8UGF0aD4gcGF0aDsKKyAgICBkZWNvZGVyID4+IHBhdGg7CisgICAgaWYgKCFwYXRoKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVtID0gRmlsbFBhdGg6OmNy
ZWF0ZSgqcGF0aCk7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0
ZW0uZ2V0KCkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0
ZW07Cit9CisKIGNsYXNzIEZpbGxFbGxpcHNlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEZpbGxFbGxpcHNlPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQpAQCAtMTIzOSwxNCArMTYxNCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENsZWFyUmVjdChyZWN0KSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+Q2xlYXJSZWN0KCk7CisKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxSZWY8Q2xlYXJSZWN0Pj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBD
bGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQotICAgICAgICA6IERyYXdpbmdJdGVtKEl0
ZW1UeXBlOjpDbGVhclJlY3QpCi0gICAgICAgICwgbV9yZWN0KHJlY3QpCi0gICAgewotICAgIH0K
KyAgICBXRUJDT1JFX0VYUE9SVCBDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CkBAIC0xMjU0LDYgKzE2MzAsMzAgQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFJlY3QgbV9yZWN0OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQ2xlYXJSZWN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fcmVjdDsKKworICAgIGVuY29kZUZvckRyYXdpbmdJdGVtKGVuY29kZXIpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPENsZWFyUmVjdD4+IENsZWFy
UmVjdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiByZWN0OworICAgIGRlY29kZXIgPj4gcmVjdDsKKyAgICBpZiAoIXJlY3QpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGl0ZW0gPSBDbGVhclJlY3Q6OmNyZWF0ZSgq
cmVjdCk7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0ZW0uZ2V0
KCkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0ZW07Cit9
CisKICNpZiBVU0UoQ0cpCiBjbGFzcyBBcHBseVN0cm9rZVBhdHRlcm4gOiBwdWJsaWMgSXRlbSB7
CiBwdWJsaWM6CkBAIC0xMzExLDYgKzE3MTEsMjA3IEBAIHByaXZhdGU6CiAKIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJdGVtJik7CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV90eXBlOworCisgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFNh
dmU+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToK
KyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxSZXN0b3JlPigqdGhpcyk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKKyAgICAgICAgZW5jb2RlciA8PCBk
b3duY2FzdDxUcmFuc2xhdGU+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6Um90YXRlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFJvdGF0ZT4oKnRoaXMp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKKyAgICAgICAgZW5j
b2RlciA8PCBkb3duY2FzdDxTY2FsZT4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxD
b25jYXRlbmF0ZUNUTT4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRTdGF0ZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxTZXRTdGF0ZT4oKnRoaXMp
OworICAgICAgICBicmVhazsKKyAgICAvLyBTZXRMaW5lQ2FwCisgICAgLy8gU2V0TGluZURhc2gK
KyAgICAvLyBTZXRMaW5lSm9pbgorICAgIC8vIFNldE1pdGVyTGltaXQKKyAgICAvLyBDbGVhclNo
YWRvdworICAgIC8vIENsaXAKKyAgICAvLyBDbGlwT3V0CisgICAgLy8gQ2xpcE91dFRvUGF0aAor
ICAgIC8vIENsaXBQYXRoCisgICAgLy8gRHJhd0dseXBocworICAgIC8vIERyYXdJbWFnZQorICAg
IC8vIERyYXdUaWxlZEltYWdlCisgICAgLy8gRHJhd1RpbGVkU2NhbGVkSW1hZ2UKKyNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQorICAgIC8vIERyYXdOYXRpdmVJbWFn
ZQorI2VuZGlmCisgICAgLy8gRHJhd1BhdHRlcm4KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDoKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UmVjdD4oKnRoaXMpOworICAgICAg
ICBicmVhazsKKyAgICAvLyBEcmF3TGluZQorICAgIC8vIERyYXdMaW5lc0ZvclRleHQKKyAgICAv
LyBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyCisgICAgLy8gRHJhd0VsbGlwc2UKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0aDoKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGF0
aD4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICAvLyBEcmF3Rm9jdXNSaW5nUGF0aAorICAg
IC8vIERyYXdGb2N1c1JpbmdSZWN0cworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgorICAg
ICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxSZWN0PigqdGhpcyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgorICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PEZpbGxSZWN0V2l0aENvbG9yPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwor
ICAgIC8vIEZpbGxSZWN0V2l0aEdyYWRpZW50CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxDb21wb3NpdGVkUmVj
dD4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICAvLyBGaWxsUm91bmRlZFJlY3QKKyAgICAv
LyBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZQorICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgor
ICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxQYXRoPigqdGhpcyk7CisgICAgICAgIGJy
ZWFrOworICAgIC8vIEZpbGxFbGxpcHNlCisgICAgLy8gU3Ryb2tlUmVjdAorICAgIC8vIFN0cm9r
ZVBhdGgKKyAgICAvLyBTdHJva2VFbGxpcHNlCisgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0
OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENsZWFyUmVjdD4oKnRoaXMpOworICAgICAg
ICBicmVhazsKKyAgICAvLyBCZWdpblRyYW5zcGFyZW5jeUxheWVyCisgICAgLy8gRW5kVHJhbnNw
YXJlbmN5TGF5ZXIKKyNpZiBVU0UoQ0cpCisgICAgLy8gQXBwbHlTdHJva2VQYXR0ZXJuCisgICAg
Ly8gQXBwbHlGaWxsUGF0dGVybgorI2VuZGlmCisgICAgLy8gQXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cgorICAgIGRlZmF1bHQ6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06
OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBpdGVtIG9mIHR5cGUgJWxsZCIsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX3R5cGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJdGVtVHlwZT4gaXRlbVR5cGU7CisgICAgZGVj
b2RlciA+PiBpdGVtVHlwZTsKKyAgICBpZiAoIWl0ZW1UeXBlKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgc3dpdGNoICgqaXRlbVR5cGUpIHsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpTYXZlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gU2F2ZTo6ZGVjb2RlKGRlY29kZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCpp
dGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CisgICAg
ICAgIGlmIChhdXRvIGl0ZW0gPSBSZXN0b3JlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgorICAgICAgICBpZiAo
YXV0byBpdGVtID0gVHJhbnNsYXRlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgorICAgICAgICBpZiAoYXV0byBpdGVt
ID0gUm90YXRlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBTY2FsZTo6ZGVj
b2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gQ29uY2F0ZW5hdGVDVE06
OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRTdGF0ZToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFNldFN0YXRlOjpkZWNvZGUo
ZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgLy8gU2V0TGluZUNhcAorICAg
IC8vIFNldExpbmVEYXNoCisgICAgLy8gU2V0TGluZUpvaW4KKyAgICAvLyBTZXRNaXRlckxpbWl0
CisgICAgLy8gQ2xlYXJTaGFkb3cKKyAgICAvLyBDbGlwCisgICAgLy8gQ2xpcE91dAorICAgIC8v
IENsaXBPdXRUb1BhdGgKKyAgICAvLyBDbGlwUGF0aAorICAgIC8vIERyYXdHbHlwaHMKKyAgICAv
LyBEcmF3SW1hZ2UKKyAgICAvLyBEcmF3VGlsZWRJbWFnZQorICAgIC8vIERyYXdUaWxlZFNjYWxl
ZEltYWdlCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKyAgICAv
LyBEcmF3TmF0aXZlSW1hZ2UKKyNlbmRpZgorICAgIC8vIERyYXdQYXR0ZXJuCisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3UmVjdDo6ZGVj
b2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIC8vIERyYXdMaW5lCisg
ICAgLy8gRHJhd0xpbmVzRm9yVGV4dAorICAgIC8vIERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIK
KyAgICAvLyBEcmF3RWxsaXBzZQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgorICAgICAg
ICBpZiAoYXV0byBpdGVtID0gRHJhd1BhdGg6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAg
ICAgICBicmVhazsKKyAgICAvLyBEcmF3Rm9jdXNSaW5nUGF0aAorICAgIC8vIERyYXdGb2N1c1Jp
bmdSZWN0cworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gRmlsbFJlY3Q6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKKyAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IEZpbGxSZWN0V2l0aENvbG9yOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgLy8gRmlsbFJlY3RXaXRoR3JhZGllbnQKKyAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsQ29tcG9zaXRlZFJlY3Q6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxsQ29tcG9z
aXRlZFJlY3Q6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICAv
LyBGaWxsUm91bmRlZFJlY3QKKyAgICAvLyBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZQorICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxQYXRoOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRmlsbFBhdGg6
OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICAvLyBGaWxsRWxs
aXBzZQorICAgIC8vIFN0cm9rZVJlY3QKKyAgICAvLyBTdHJva2VQYXRoCisgICAgLy8gU3Ryb2tl
RWxsaXBzZQorICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKKyAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IENsZWFyUmVjdDo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFr
OworICAgIC8vIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIKKyAgICAvLyBFbmRUcmFuc3BhcmVuY3lM
YXllcgorI2lmIFVTRShDRykKKyAgICAvLyBBcHBseVN0cm9rZVBhdHRlcm4KKyAgICAvLyBBcHBs
eUZpbGxQYXR0ZXJuCisjZW5kaWYKKyAgICAvLyBBcHBseURldmljZVNjYWxlRmFjdG9yCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2Rl
IGNhbm5vdCB5ZXQgZGVjb2RlIGl0ZW0gb2YgdHlwZSAlbGxkIiwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KCppdGVtVHlwZSkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworfQorCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCkBAIC0xMzc5LDMgKzE5ODAsNjMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19ESVNQTEFZTElTVF9JVEVNKEFwcGx5RmlsbFBhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0RJU1BMQVlMSVNUX0lURU0oQXBwbHlEZXZpY2VTY2FsZUZhY3RvcikKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGVhclNoYWRvdykKIAorbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTYXZlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9yZSwK
KyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZSwKKyAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJvdGF0ZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlNjYWxlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE0sCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
ZXRTdGF0ZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVDYXAs
CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaCwKKyAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVKb2luLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdCwKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyU2hhZG93LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Q2xpcCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBPdXQsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGgsCisgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzLAorICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZSwKKyNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykg
fHwgVVNFKERJUkVDVDJEKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlLAorI2VuZGlmCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3UGF0dGVybiwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdS
ZWN0LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0LAorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciwK
KyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlLAorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGgsCisgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aCwKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0cywKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbFBhdGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsRWxsaXBzZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9r
ZVJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoLAor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZSwKKyAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyUmVjdCwKKyAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllciwKKyNpZiBVU0Uo
Q0cpCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRl
cm4sCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJu
LAorI2VuZGlmCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGUyMGYzZWQxM2NiNmU1NWY3ODJl
OGM5YWRjMTMwODcyZGU2ZWYxMzIuLmEyNTM1MzIwOWQwOWZjMGVmODVlN2JjZjRkYWRiYWI1NDg1
N2I3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgdm9pZCBSZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRl
bSkKICAgICAgICAgaWYgKGNoYW5nZXNGcm9tTGFzdFN0YXRlKSB7CiAgICAgICAgICAgICBMT0df
V0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInByZS1kcmF3aW5nLCBzYXZpbmcg
c3RhdGUgIiA8PCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZXMubV9zdGF0
ZSwgY2hhbmdlc0Zyb21MYXN0U3RhdGUpKTsKICAgICAgICAgICAgIG1fZGlzcGxheUxpc3QuYXBw
ZW5kKFNldFN0YXRlOjpjcmVhdGUoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFz
dFN0YXRlKSk7Ci0gICAgICAgICAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9IDA7Cisg
ICAgICAgICAgICBzdGF0ZUNoYW5nZXMubV9jaGFuZ2VGbGFncyA9IHsgfTsKICAgICAgICAgICAg
IGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsK
ICAgICAgICAgfQogICAgICAgICBjdXJyZW50U3RhdGUoKS53YXNVc2VkRm9yRHJhd2luZyA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA1MTZkNGRmOGM3
ZmQ5ZWI1ZjI5OTc1NjU4ZGQ3NjNkMTgwMGMzY2Q2Li5hNGU2ODg2MWNmMzBlY2JhZTM5NjJiYmIz
NDRlOWJkODc4N2Y0YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
QEAgLTUxLDggKzUxLDggQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0
SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICB2aXJ0dWFsIH5S
ZWNvcmRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYs
IERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggNGY5NjhlODQ2YzY1NzZhYjU1NTlhZjEyNDAxMjQx
MTZiZTYzMWE2ZS4uNjBlNjVhZjI3OGU2NDliMWYwNGEzNDQwZmI1NGE1NGQ1NGEyY2IwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0zOSwxMCArMzksMTAgQEAg
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6Ci0gICAgUmVwbGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmKTsKLSAgICB+UmVwbGF5ZXIoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0PiByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9v
bCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9
IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAgICAgCiBwcml2YXRlOgogICAg
IGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384603</attachid>
            <date>2019-12-02 02:11:29 -0800</date>
            <delta_ts>2019-12-02 23:47:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204740-20191202021128.patch</filename>
            <type>text/plain</type>
            <size>63642</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI5ZGJmNDFlN2Q3ZDFl
ZDBmYTE1NzIwODJiMzViODUyZTRiMTZlMS4uZmQxNTY1ZGQ4ZGQzZTBiOWU1MzQ1YWE2NmU5MjVm
OThjYjQ0ZWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE5LTEyLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IGFkZGlu
ZyBlbmNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdCBhbmQgc29tZSBEaXNwbGF5TGlzdEl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3
NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBi
ZSB1c2VkIGluIGEgbGF0ZXIgcGF0Y2guCisKKyAgICAgICAgU3RhcnQgZW5jb2RpbmcgYW5kIGRl
Y29kaW5nIERpc3BsYXlMaXN0LCBhbmQgaXRzIGNoaWxkIGl0ZW1zLiBXZQorICAgICAgICBjdXJy
ZW50bHkgc3VwcG9ydCBvbmx5IGEgc3Vic2V0IG9mIHRoZSBpdGVtIHN1YmNsYXNzZXMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3Vt
dWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgQWRvcHQgT3B0aW9uU2V0IGZvciBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06Okl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6U2F2ZTo6U2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzdG9yZTo6UmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
VHJhbnNsYXRlOjpUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJv
dGF0ZTo6Um90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6U2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1JlY3Q6OkRyYXdSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6RHJhd1BhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0OjpGaWxsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I6OkZpbGxSZWN0V2l0aENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OkZp
bGxDb21wb3NpdGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBh
dGg6OkZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVhclJlY3Q6
OkNsZWFyUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpp
c1N0YXRlSXRlbVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdJ
dGVtOjplbmNvZGVGb3JEcmF3aW5nSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd2luZ0l0ZW06OmRlY29kZUZvckRyYXdpbmdJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpTYXZlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNhdmU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXN0b3JlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlRy
YW5zbGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpU
cmFuc2xhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Um90YXRl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDb25jYXRlbmF0ZUNUTTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDb25jYXRlbmF0ZUNUTTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVjdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGaWxsUmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGaWxsUmVjdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGaWxsUmVjdFdpdGhDb2xvcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRoOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRoOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsZWFyUmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVhclJlY3Q6OmRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW06Okl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2F2ZTo6U2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVzdG9yZTo6UmVzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6VHJhbnNsYXRlOjpUcmFuc2xhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6Um90YXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6U2NhbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpTZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1JlY3Q6OkRyYXdSZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6RHJhd1BhdGgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0OjpGaWxsUmVjdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29s
b3I6OkZpbGxSZWN0V2l0aENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OkZpbGxDb21wb3NpdGVkUmVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFBhdGg6OkZpbGxQYXRoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVhclJlY3Q6OkNsZWFyUmVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCiAyMDE5LTEyLTAyICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtSZW5kZXIgdHJlZV0gU3VwcG9ydCBMRkMg
aW4gTGluZUxheW91dFRyYXZlcnNhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhNDc4NWJmY2ZmMDdmYTdkZGRmZDM2N2MzZTBl
NzBkYmQ1ZThmMDcuLjAxZjVhMmNhN2Q1Y2I0OGNjMzg4OTI2OGM1NGVhMzRhYTFjOTc0YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM1MSwxMCArMzUxLDEwIEBACiAJCTBGREE3QzI3MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREE3QzI1MTg4MzMzMzIwMEM5NTRCNSAvKiBK
U1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCAqLzsgfTsKIAkJMEZEQ0Q3
RjMxRDQ3RTY1NTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRDRDdGMjFENDdFNjU1MDA5RjA4QkMg
LyogTG9nSW5pdGlhbGl6YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkU1ODA2NDE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJl
ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
NTgwNjIxOTMyN0E2MjAwREUzMkVCIC8qIFNjcm9sbGluZ1RyZWVNYWMuaCAqLzsgfTsKLQkJMEZF
NUZCRDMxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDQjFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3QuaCAqLzsgfTsKLQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi87IH07
Ci0JCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDRjFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyB9OwotCQkwRkU1RkJEOTFD
M0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLzsgfTsKKwkJMEZFNUZCRDMxQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkU1RkJDQjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU1RkJENTFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0Yx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU1RkJEOTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0
UmVwbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MTQwNDE0MjE3
MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi87IH07CiAJCTBGRUEzRTdCMTkx
QjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFNzkxOTFCMkZD
NTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFQTNFODAxOTFCMzE2
OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEzRTdFMTkxQjMxNjkw
MDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgyNSw2ICs4MjUsNyBA
QAogCQkyRDlCRjc0NjFEQkZEQzQ3MDA3QTdEOTkgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUJGNzMzMURCRkRDMEYwMDdB
N0Q5OSAvKiBNZWRpYUtleXMuY3BwICovOyB9OwogCQkyRDlCRjc0NzFEQkZEQzQ5MDA3QTdEOTkg
LyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ5QkY3MkYxREJGREMwRjAwN0E3RDk5IC8qIE1lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCAqLzsgfTsKIAkJMkQ5RjBFMTMxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVh
clNSR0IuaWNjIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDlGMEUxMjE0RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgKi87IH07CisJCTJE
QUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAwMTIzRjFGQUQ4N0Q2MDA1
MzFENzYgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQUYzNDNEMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25z
dGFudFByb3BlcnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREFGMzQzQjFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5o
ICovOyB9OwogCQkyREQ1QTcyNzFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDVB
NzI2MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3NpdGlvblVuZGVybGluZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEREUxQ0UzMUY1NzRBRTUw
MEQxQTM2NSAvKiBKU1ZSRmllbGRPZlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0UwMUY1NzRBRDEwMEQxQTM2NSAvKiBKU1ZSRmllbGRP
ZlZpZXcuaCAqLzsgfTsKQEAgLTI5NTM1LDYgKzI5NTM2LDcgQEAKIAkJCQlGNDdBMDlEMTIwQTkz
QTk3MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0VEQUFGQzkxOUEyQ0NEQzAwMzRERkQxIC8qIERpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTE5OUZBNUIyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCBp
biBIZWFkZXJzICovLAorCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBEaXNwbGF5SW5s
aW5lQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDMxQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDcx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMjk5MDgsNiArMjk5MTAsNyBAQAogCQkJCTMxQUI1MDAwMTIyODc4QTIwMDFBN0RCMCAvKiBH
cmFwaGljc0NvbnRleHQzRElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA4NDNBNEIyMEZFQkUz
RDAwRkU4NjBFIC8qIEdyYXBoaWNzQ29udGV4dDNETWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyREFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyogR3JhcGhpY3NDb250ZXh0
SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRDY3MDgwRTlFOURFQjAwRTQyMEYwIC8qIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4
MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDA0OCw3ICszMDA1MSw2IEBACiAJCQkJQTg3MURCMkIwQTE1MEJENjAwQjEy
QTY4IC8qIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcx
REIyQTBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4NzFEQjJGMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDb2xFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDUxQzYyODIzOTI5M0VDMDA5OTMxOTAgLyogTGluZUxh
eW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREIy
NzBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTg3MURCMkMwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZVBhcnRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODcxREIzMTBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlUm93
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDE2MCw3ICszMDE2Miw2IEBACiAJCQkJQkM3
RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBN
YXJnaW5UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdB
IC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRC
MTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwNTUzLDcgKzMwNTU0LDYgQEAKIAkJCQk4MzcwNTY5MDFGNTA5
MTVDMDBEOTM0MjUgLyogSlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODMzQjlFMzYxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbUZpbGVFbnRyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyQkU0ODgxRkU4Njg2QTAwMjAzMUNDIC8qIEpTRmlsbE1v
ZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0MzQzRDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5l
TGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUI2RDlEMjdC
MTRFQUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
ODA4MzNGMUM2REMyNkYwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMTE3Nyw2ICszMTE3Nyw3IEBACiAJCQkJNkY3Q0EzQzYyMDhDMjk1NzAwMkYyOUFC
IC8qIExheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGMjIwQkE0QTMyMDA2
NUE4RDAgLyogTGF5b3V0VHJlZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MURDMDQ4
MTY0ODM0OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDUx
QzYzMTIzOTQwMjc5MDA5OTMxOTAgLyogTGF5b3V0VW5pdHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERThCNUVEMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUNERjRCNzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1T
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVGMTFBNjk3NzhCMDBCNEI2NkEgLyog
TGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMjA4LDYgKzMx
MjA5LDkgQEAKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogTGluZUxheW91dENvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJBMTgzODBEQTAwMDUxNDUzNCAvKiBMaW5l
TGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODRBMzNFMjMwNTUzMjUwMDlBREU2
QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDM0M0QyNTIz
OTI3NzkwMDBFQkJCNjYgLyogTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFNDUxQzYyODIzOTI5M0VDMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDM0M0QyMzIzOTI3Nzg0
MDBFQkJCNjYgLyogTGluZUxheW91dFRyYXZlcnNhbFNpbXBsZVBhdGguaCBpbiBIZWFkZXJzICov
LAogCQkJCUZGREJDMDQ3MTgzRDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNCQTlEQzBCMURGNDRERjQwMDA1Njc1QyAvKiBMaW5rSGVhZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTQzQjI2MzFEREQxNTIwMDAxNEZBQzYgLyogTGlua0ljb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzEyNDEsNiArMzEyNDUsNyBAQAogCQkJCTQ2RUZBRjEyMUU1RkI5RjEw
MEU3RjM0QiAvKiBMb3dQb3dlck1vZGVOb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FF
NkM5M0MxQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE4RjZCQzYwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNDUxQzYzMjIzOTQwMzFBMDA5OTMxOTAgLyogTWFyZ2luVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJr
ZWRUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyog
bWFya3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MDEsNyArMzE3MDYsNiBA
QAogCQkJCTU3RENFRDc0MjE0MzA1RjAwMDE2Qjg0NyAvKiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRUYyMDA5ODBDNjAwMzU1OTY1IC8qIFB1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0MwQTIw
MDk5QkFEMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNDM0M0QyMzIzOTI3Nzg0MDBFQkJCNjYgLyogTGluZUxheW91dFRy
YXZlcnNhbFNpbXBsZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkVCMjAwOTdGNDAw
MDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDA4MUZGMDAxNkIwQTJEMzAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzI0OTYsNyArMzI1MDAsNiBAQAogCQkJCUIyMjI3QURBMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FE
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QURGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNDUxQzYzMTIzOTQwMjc5MDA5OTMxOTAgLyogTGF5b3V0VW5pdHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDU4MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFu
c2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFNTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyODI2LDcg
KzMyODI5LDYgQEAKIAkJCQk0OUM3QjlFMDEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0YzRDM2QTFBNjlCN0I5MDA1OUZDMkIg
LyogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY5OTVB
MjIxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUM3QjlFMzEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xTaGFkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUEwN0QzMzU4MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRl
clByZWNpc2lvbkZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDFEM0NGODcxNEJEMEEzMDAw
RkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IDczODhkOWZjN2MyNTMyNTFiNWMzOTFlODQ3MjI5OGVkZTdlOGI0NmIuLmFmZWM3MmFlN2FjYjk3
MjdjNjk0MDI1ZTI4Y2VmZGFiYmYzZjhlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzMsNyArNzMsNyBAQCBw
cml2YXRlOgogCiAjZGVmaW5lIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKGZsYWcsIHByb3Bl
cnR5KSBcCiAgICAgaWYgKChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZs
YWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRlLnByb3BlcnR5KSkgXAotICAgICAgICBj
aGFuZ2VGbGFncyB8PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZzsKKyAgICAgICAgY2hhbmdl
RmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpmbGFnKTsKIAogR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5n
ZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKSBjb25zdAogewpA
QCAtODgsNyArODgsNyBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdAogICAgICAgICAmJiAobV9z
dGF0ZS5zaGFkb3dPZmZzZXQgIT0gc3RhdGUuc2hhZG93T2Zmc2V0CiAgICAgICAgICAgICB8fCBt
X3N0YXRlLnNoYWRvd0JsdXIgIT0gc3RhdGUuc2hhZG93Qmx1cgogICAgICAgICAgICAgfHwgbV9z
dGF0ZS5zaGFkb3dDb2xvciAhPSBzdGF0ZS5zaGFkb3dDb2xvcikpCi0gICAgICAgIGNoYW5nZUZs
YWdzIHw9IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2U7CisgICAgICAgIGNoYW5n
ZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKIAogICAgIENI
RUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVRoaWNrbmVzc0NoYW5nZSwgc3Ryb2tlVGhp
Y2tuZXNzKTsKICAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShUZXh0RHJhd2luZ01vZGVD
aGFuZ2UsIHRleHREcmF3aW5nTW9kZSk7CkBAIC05OCw5ICs5OCwxMSBAQCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hh
bmdlc0Zyb21TdAogICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdl
LCBmaWxsUnVsZSk7CiAgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2Us
IGFscGhhKTsKIAotICAgIGlmICgobV9jaGFuZ2VGbGFncyAmIChHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5k
TW9kZUNoYW5nZSkpCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0
YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5k
TW9kZSkpCi0gICAgICAgIGNoYW5nZUZsYWdzIHw9IChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNo
YW5nZSk7CisgICAgaWYgKChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpIHx8IG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCisgICAgICAgICYmIChtX3N0
YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3Rh
dGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9kZSkpIHsKKyAgICAgICAgY2hhbmdlRmxhZ3Mu
YWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAg
ICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5n
ZSk7CisgICAgfQogCiAgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFs
aWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxpYXMpOwogICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKFNob3VsZFNtb290aEZvbnRzQ2hhbmdlLCBzaG91bGRTbW9vdGhGb250cyk7CkBAIC0xNTks
NyArMTYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEcKICAgICBpZiAoZmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpCiAgICAgICAgIG1fc3RhdGUuYWxwaGEgPSBz
dGF0ZS5hbHBoYTsKIAotICAgIGlmIChmbGFncyAmIChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNo
YW5nZSkpIHsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkgfHwgZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpIHsKICAgICAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciA9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBtX3N0YXRlLmJsZW5kTW9k
ZSA9IHN0YXRlLmJsZW5kTW9kZTsKICAgICB9CkBAIC0xODcsNyArMTg5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIEcKICAgICAgICAgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSA9IHN0YXRl
LnVzZURhcmtBcHBlYXJhbmNlOwogI2VuZGlmCiAKLSAgICBtX2NoYW5nZUZsYWdzIHw9IGZsYWdz
OworICAgIG1fY2hhbmdlRmxhZ3MuYWRkKGZsYWdzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAt
MjM0LDcgKzIzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkKICAgICAgICAgY29udGV4dC5zZXRBbHBo
YShtX3N0YXRlLmFscGhhKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgfCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSB8fCBtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQogICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3N0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yLCBtX3N0YXRlLmJsZW5kTW9kZSk7CiAKICAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGZhOWU4NDhk
MmIzZGQxNzc2YjIzMDM3OGE4YWZmNjk2ZGI0NDQ3MmIuLjc1MjIyYzFiYzM3OGY1MzI3ZjNkNGZh
MTgxNzQ4MGQ4NzlmYTIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGF0
dGVybi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogI2lmIFVTRShDRykKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKQEAgLTE3MSw3ICsx
NzIsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAgICAgICBVc2VEYXJrQXBw
ZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIyLAogI2VuZGlmCiAgICAgfTsK
LSAgICB0eXBlZGVmIHVpbnQzMl90IFN0YXRlQ2hhbmdlRmxhZ3M7CisgICAgdHlwZWRlZiBPcHRp
b25TZXQ8Q2hhbmdlPiBTdGF0ZUNoYW5nZUZsYWdzOwogCiAgICAgUmVmUHRyPEdyYWRpZW50PiBz
dHJva2VHcmFkaWVudDsKICAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCA3NTFlOTY1NzQ0ZDg1
YWQxNmQ0ZGE5Zjg4YzYxOWZkZjk0NzI2ZmFjLi4wMDdlNTkwMmQ5NTk2YmI2NTdlYmNmOThhOWUz
YTYxNTU1Y2E5ODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgUGF0dGVybiBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBh
dHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wg
cmVwZWF0WSk7Ci0gICAgflBhdHRlcm4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVybigp
OwogCiAgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggZDQ0MzdlM2Q0MWJlMTIyY2M4OTA2
NTI0N2M5MjIyNmU3ODFkYzc3Yi4uYTIxNzdkN2NiYjdmNGI0NjM2OTdkNGU0MGNkNjA2NDc4N2Y5
NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTc5LDkgKzc5LDEzIEBAIHB1YmxpYzoK
IAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAogICAgIFdURjo6Q1N0cmlu
ZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIHZvaWQgZHVtcCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHVtcCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0PiBkZWNvZGUoRGVjb2RlciYp
OworCisKIHByaXZhdGU6CiAgICAgSXRlbSYgYXBwZW5kKFJlZjxJdGVtPiYmIGl0ZW0pCiAgICAg
ewpAQCAtMTAyLDYgKzEwNiwzOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8SXRlbT4+IG1f
bGlzdDsKIH07CiAKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGlzcGxheUxpc3Q6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG1fbGlzdC5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBpdGVtIDog
bV9saXN0KQorICAgICAgICBlbmNvZGVyIDw8IGl0ZW0uZ2V0KCk7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+CitPcHRpb25hbDxEaXNwbGF5TGlzdD4gRGlzcGxheUxpc3Q6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpdGVtQ291bnQ7Cisg
ICAgZGVjb2RlciA+PiBpdGVtQ291bnQ7CisgICAgaWYgKCFpdGVtQ291bnQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdDsKKworICAg
IGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaXRlbUNvdW50OyBpKyspIHsKKyAgICAgICAgYXV0
byBpdGVtID0gSXRlbTo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAvLyBGSVhNRTogT25jZSB3
ZSBjYW4gZGVjb2RlIGFsbCB0eXBlcywgZmFpbGluZyB0byBkZWNvZGUgYW4gaXRlbSBzaG91bGQg
dHVybiBpbnRvIGEgZGVjb2RlIGZhaWx1cmUuCisgICAgICAgIC8vIEZvciBub3csIHdlIGp1c3Qg
aGF2ZSB0byBpZ25vcmUgaXQuCisgICAgICAgIGlmICghaXRlbSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBkaXNwbGF5TGlzdC5hcHBlbmQoV1RGTW92ZSgqaXRlbSkpOworICAgIH0K
KworICAgIHJldHVybiBkaXNwbGF5TGlzdDsKK30KKwogfSAvLyBEaXNwbGF5TGlzdAogCiBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5k
ZXggZDM5YjY2MmE0YWE4YWI2NDZiMzMxNzAxMDJkYjZmYzhjZDgyYTE1MC4uOTFjYmI5ZmVmMmYy
M2Y2MDkyODYzYzAyNDBmZTczZWRkY2QzMjViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIFVTRShDRykKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTQ0LDYgKzQ4LDEzIEBA
IFdURjo6Q1N0cmluZyBJdGVtOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB9CiAjZW5kaWYKIAorSXRl
bTo6SXRlbShJdGVtVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUpCit7Cit9CisKK0l0ZW06
On5JdGVtKCkgPSBkZWZhdWx0OworCiBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRl
bSYgaXRlbSkKIHsKICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7CkBAIC0xNjIsNiArMTczLDIw
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3aW5nSXRlbSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0RyYXdpbmdJdGVtOjpEcmF3
aW5nSXRlbShJdGVtVHlwZSB0eXBlKQorICAgIDogSXRlbSh0eXBlKQoreworfQorCitEcmF3aW5n
SXRlbTo6fkRyYXdpbmdJdGVtKCkgPSBkZWZhdWx0OworCitTYXZlOjpTYXZlKCkKKyAgICA6IEl0
ZW0oSXRlbVR5cGU6OlNhdmUpCit7Cit9CisKK1NhdmU6On5TYXZlKCkgPSBkZWZhdWx0OworCiB2
b2lkIFNhdmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBj
b250ZXh0LnNhdmUoKTsKQEAgLTE3MywxMSArMTk4LDI3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTYXZlJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAorUmVzdG9yZTo6UmVzdG9yZSgpCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpSZXN0b3Jl
KQoreworfQorCitSZXN0b3JlOjp+UmVzdG9yZSgpID0gZGVmYXVsdDsKKwogdm9pZCBSZXN0b3Jl
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiB9CiAKK1RyYW5zbGF0ZTo6VHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCisg
ICAgOiBJdGVtKEl0ZW1UeXBlOjpUcmFuc2xhdGUpCisgICAgLCBtX3goeCkKKyAgICAsIG1feSh5
KQoreworfQorCitUcmFuc2xhdGU6On5UcmFuc2xhdGUoKSA9IGRlZmF1bHQ7CisKIHZvaWQgVHJh
bnNsYXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29u
dGV4dC50cmFuc2xhdGUobV94LCBtX3kpOwpAQCAtMTkxLDYgKzIzMiwxNCBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBpdGVt
KQogICAgIHJldHVybiB0czsKIH0KIAorUm90YXRlOjpSb3RhdGUoZmxvYXQgYW5nbGUpCisgICAg
OiBJdGVtKEl0ZW1UeXBlOjpSb3RhdGUpCisgICAgLCBtX2FuZ2xlKGFuZ2xlKQoreworfQorCitS
b3RhdGU6On5Sb3RhdGUoKSA9IGRlZmF1bHQ7CisKIHZvaWQgUm90YXRlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5yb3RhdGUobV9hbmdsZSk7
CkBAIC0yMDMsNiArMjUyLDE0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBSb3RhdGUmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitTY2Fs
ZTo6U2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgIDogSXRlbShJdGVtVHlwZTo6U2Nh
bGUpCisgICAgLCBtX3NpemUoc2l6ZSkKK3sKK30KKworU2NhbGU6On5TY2FsZSgpID0gZGVmYXVs
dDsKKwogdm9pZCBTY2FsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ewogICAgIGNvbnRleHQuc2NhbGUobV9zaXplKTsKQEAgLTIyMSw2ICsyNzgsOCBAQCBDb25jYXRl
bmF0ZUNUTTo6Q29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0p
CiB7CiB9CiAKK0NvbmNhdGVuYXRlQ1RNOjp+Q29uY2F0ZW5hdGVDVE0oKSA9IGRlZmF1bHQ7CisK
IHZvaWQgQ29uY2F0ZW5hdGVDVE06OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICAgICBjb250ZXh0LmNvbmNhdENUTShtX3RyYW5zZm9ybSk7CkBAIC0yMzMsNiArMjky
LDIwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1NldFN0YXRlOjpT
ZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorICAgIDogSXRlbShJdGVtVHlwZTo6U2V0
U3RhdGUpCisgICAgLCBtX3N0YXRlKHN0YXRlLCBmbGFncykKK3sKK30KKworU2V0U3RhdGU6OlNl
dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKKyAg
ICA6IEl0ZW0oSXRlbVR5cGU6OlNldFN0YXRlKQorICAgICwgbV9zdGF0ZShzdGF0ZUNoYW5nZSkK
K3sKK30KKworU2V0U3RhdGU6On5TZXRTdGF0ZSgpID0gZGVmYXVsdDsKKwogdm9pZCBTZXRTdGF0
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIG1fc3RhdGUu
YXBwbHkoY29udGV4dCk7CkBAIC01NTEsNiArNjI0LDE1IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKICAgICBy
ZXR1cm4gdHM7CiB9CiAKK0RyYXdSZWN0OjpEcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGZsb2F0IGJvcmRlclRoaWNrbmVzcykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3
UmVjdCkKKyAgICAsIG1fcmVjdChyZWN0KQorICAgICwgbV9ib3JkZXJUaGlja25lc3MoYm9yZGVy
VGhpY2tuZXNzKQoreworfQorCitEcmF3UmVjdDo6fkRyYXdSZWN0KCkgPSBkZWZhdWx0OworCiB2
b2lkIERyYXdSZWN0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgY29udGV4dC5kcmF3UmVjdChtX3JlY3QsIG1fYm9yZGVyVGhpY2tuZXNzKTsKQEAgLTY0Myw2
ICs3MjUsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorRHJhd1BhdGg6
OkRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6
RHJhd1BhdGgpCisgICAgLCBtX3BhdGgocGF0aCkKK3sKK30KKworRHJhd1BhdGg6On5EcmF3UGF0
aCgpID0gZGVmYXVsdDsKKwogdm9pZCBEcmF3UGF0aDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBjb25zdAogewogI2lmIFVTRShDRykKQEAgLTcwNSw2ICs3OTUsMTQgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1Jp
bmdSZWN0cyYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0ZpbGxSZWN0OjpGaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbFJl
Y3QpCisgICAgLCBtX3JlY3QocmVjdCkKK3sKK30KKworRmlsbFJlY3Q6On5GaWxsUmVjdCgpID0g
ZGVmYXVsdDsKKwogdm9pZCBGaWxsUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0KTsKQEAgLTcxNyw2ICs4MTUs
MTUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEZpbGxSZWN0JiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorRmlsbFJlY3RXaXRoQ29sb3I6
OkZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKQorICAg
ICwgbV9yZWN0KHJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQoreworfQorCitGaWxsUmVjdFdp
dGhDb2xvcjo6fkZpbGxSZWN0V2l0aENvbG9yKCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxSZWN0
V2l0aENvbG9yOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
Y29udGV4dC5maWxsUmVjdChtX3JlY3QsIG1fY29sb3IpOwpAQCAtNzQzLDYgKzg1MCwxNyBAQCBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJl
Y3RXaXRoR3JhZGllbnQmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitGaWxsQ29tcG9zaXRl
ZFJlY3Q6OkZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisg
ICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0KQorICAgICwgbV9y
ZWN0KHJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQorICAgICwgbV9vcChvcCkKKyAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKK3sKK30KKworRmlsbENvbXBvc2l0ZWRSZWN0Ojp+RmlsbENv
bXBvc2l0ZWRSZWN0KCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxDb21wb3NpdGVkUmVjdDo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJl
Y3QobV9yZWN0LCBtX2NvbG9yLCBtX29wLCBtX2JsZW5kTW9kZSk7CkBAIC03ODYsNiArOTA0LDE0
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlCiAgICAgcmV0dXJuIHRzOwogfQogCitGaWxsUGF0
aDo6RmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpGaWxsUGF0aCkKKyAgICAsIG1fcGF0aChwYXRoKQoreworfQorCitGaWxsUGF0aDo6fkZpbGxQ
YXRoKCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxQYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsUGF0aChtX3BhdGgpOwpAQCAtODcz
LDYgKzk5OSwxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0NsZWFy
UmVjdDo6Q2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICA6IERyYXdpbmdJdGVt
KEl0ZW1UeXBlOjpDbGVhclJlY3QpCisgICAgLCBtX3JlY3QocmVjdCkKK3sKK30KKworQ2xlYXJS
ZWN0Ojp+Q2xlYXJSZWN0KCkgPSBkZWZhdWx0OworCiB2b2lkIENsZWFyUmVjdDo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuY2xlYXJSZWN0KG1f
cmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmYjczYTY3ODMzZjJk
ODM4MjhkOTE5NzRjYjFhOGViZjA5ZDFkOTQ1Li4xYjZmZGFlMzEzYWU2M2QwMDQ2YWRlMzhhOTEy
NGVhZGYwOTRmYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM1LDEw
ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlQ0cuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJl
YW07CiB9CkBAIC00OSw3ICs0NSw3IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIAog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotZW51bSBjbGFzcyBJdGVtVHlwZSB7CitlbnVtIGNs
YXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBSZXN0b3JlLAogICAgIFRy
YW5zbGF0ZSwKQEAgLTEwNywxMiArMTAzLDggQEAgY2xhc3MgSXRlbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEl0ZW0+IHsKIHB1YmxpYzoKICAgICBJdGVtKCkgPSBkZWxldGU7CiAKLSAgICBJdGVtKEl0
ZW1UeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQotICAg
IHZpcnR1YWwgfkl0ZW0oKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSXRlbShJdGVt
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SXRlbSgpOwogCiAgICAgSXRlbVR5
cGUgdHlwZSgpIGNvbnN0CiAgICAgewpAQCAtMTM0LDE2ICsxMjYsMTYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGlzU3RhdGVJdGVtVHlwZShJdGVtVHlwZSBpdGVtVHlwZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFRyYW5z
bGF0ZToKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFJvdGF0ZToKLSAgICAgICAgY2FzZSBJdGVt
VHlwZTo6IFNjYWxlOgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjogQ29uY2F0ZW5hdGVDVE06Ci0g
ICAgICAgIGNhc2UgSXRlbVR5cGU6OiBTZXRTdGF0ZToKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6
IFNldExpbmVDYXA6Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OiBTZXRMaW5lRGFzaDoKLSAgICAg
ICAgY2FzZSBJdGVtVHlwZTo6IFNldExpbmVKb2luOgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjog
U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IENsZWFyU2hhZG93OgorICAg
ICAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlJv
dGF0ZToKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIGNhc2UgSXRlbVR5
cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZURhc2g6CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgorICAgICAg
ICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGVhclNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU2LDE2ICsxNDgsMTggQEAgcHVibGljOgog
I2VuZGlmCiAgICAgc3RhdGljIHNpemVfdCBzaXplSW5CeXRlcyhjb25zdCBJdGVtJik7CiAKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxJdGVtPj4gZGVj
b2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBJdGVtVHlwZSBtX3R5cGU7CiB9OwogCiBj
bGFzcyBEcmF3aW5nSXRlbSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBE
cmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQotICAgICAgICA6IEl0ZW0odHlwZSkKLSAgICB7Ci0g
ICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IERyYXdpbmdJdGVtKEl0ZW1UeXBlKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdpbmdJdGVtKCk7CiAKICAgICB2b2lk
IHNldEV4dGVudChjb25zdCBGbG9hdFJlY3QmIHIpIHsgbV9leHRlbnQgPSByOyB9CiAgICAgY29u
c3QgRmxvYXRSZWN0JiBleHRlbnQoKSBjb25zdCB7IHJldHVybiBtX2V4dGVudC52YWx1ZSgpOyB9
CkBAIC0xNzYsMTIgKzE3MCwzNiBAQCBwdWJsaWM6CiAgICAgLy8gRG9lcyBub3QgaW5jbHVkZSBl
ZmZldHMgb2YgdHJhbnNmb3JtLCBzaGFkb3cgZXRjIGluIHRoZSBzdGF0ZS4KICAgICB2aXJ0dWFs
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZUZvckRyYXdpbmdJdGVtKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGVGb3JEcmF3aW5nSXRlbShEZWNv
ZGVyJiwgRHJhd2luZ0l0ZW0mKTsKKwogcHJpdmF0ZToKICAgICBib29sIGlzRHJhd2luZ0l0ZW0o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IG1fZXh0ZW50OyAvLyBJbiBiYXNlIGNvb3JkaW5hdGVzLCB0YWtpbmcgc2hhZG93cyBhbmQg
dHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBEcmF3aW5nSXRlbTo6ZW5jb2RlRm9yRHJhd2luZ0l0ZW0oRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fZXh0ZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorYm9vbCBEcmF3aW5nSXRlbTo6ZGVjb2RlRm9yRHJhd2luZ0l0ZW0oRGVjb2RlciYg
ZGVjb2RlciwgRHJhd2luZ0l0ZW0mIGl0ZW0pCit7CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8Rmxv
YXRSZWN0Pj4gZXh0ZW50OworICAgIGRlY29kZXIgPj4gZXh0ZW50OworICAgIGlmICghZXh0ZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBVTlVTRURfUEFSQU0oaXRlbSk7CisgICAg
Ly8gRklYTUU6IEZvciBzb21lIHJlYXNvbiwgYXBwbHlpbmcgdGhlIGV4dGVudCBjYXVzZXMgdGhl
IGl0ZW0KKyAgICAvLyB0byBub3QgcGFpbnQuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBhbmQgdGhl
biByZS1lbmFibGUgdGhpcyBvcHRpbWl6YXRpb24uCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
Y2xhc3MgU2F2ZSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNhdmU+
IGNyZWF0ZSgpCkBAIC0xODksMjEgKzIwNyw0MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNhdmUpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flNhdmUoKTsKKwogICAgIC8vIEluZGV4IGluIHRoZSBkaXNwbGF5IGxpc3Qgb2YgdGhlIGNvcnJl
c3BvbmRpbmcgUmVzdG9yZSBpdGVtLiAwIGlmIHVubWF0Y2hlZC4KICAgICBzaXplX3QgcmVzdG9y
ZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0b3JlSW5kZXg7IH0KICAgICB2b2lkIHNldFJl
c3RvcmVJbmRleChzaXplX3QgaW5kZXgpIHsgbV9yZXN0b3JlSW5kZXggPSBpbmRleDsgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8U2F2ZT4+IGRl
Y29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgU2F2ZSgpCi0gICAgICAgIDogSXRlbShJ
dGVtVHlwZTo6U2F2ZSkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIFNhdmUoKTsK
IAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
CiAgICAgc2l6ZV90IG1fcmVzdG9yZUluZGV4IHsgMCB9OwogfTsKIAordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgU2F2ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9yZXN0b3JlSW5kZXgpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFNhdmU+PiBTYXZlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVzdG9yZUlu
ZGV4OworICAgIGRlY29kZXIgPj4gcmVzdG9yZUluZGV4OworICAgIGlmICghcmVzdG9yZUluZGV4
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gRklYTUU6IFZhbGlkYXRl
IHJlc3RvcmVJbmRleD8gQnV0IHdlIGRvbid0IGhhdmUgdGhlIGxpc3QgY29udGV4dCBoZXJlLgor
ICAgIGF1dG8gc2F2ZSA9IFNhdmU6OmNyZWF0ZSgpOworICAgIHNhdmUtPnNldFJlc3RvcmVJbmRl
eChzdGF0aWNfY2FzdDxzaXplX3Q+KCpyZXN0b3JlSW5kZXgpKTsKKyAgICByZXR1cm4gc2F2ZTsK
K30KKwogY2xhc3MgUmVzdG9yZSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFJlc3RvcmU+IGNyZWF0ZSgpCkBAIC0yMTEsMTUgKzI1MSwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlc3RvcmUpOwogICAgIH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgflJlc3RvcmUoKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UmVmPFJlc3RvcmU+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2
YXRlOgotICAgIFJlc3RvcmUoKQotICAgICAgICA6IEl0ZW0oSXRlbVR5cGU6OlJlc3RvcmUpCi0g
ICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZXN0b3JlKCk7CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgUmVzdG9yZTo6ZW5jb2RlKEVuY29kZXImKSBjb25zdAoreworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFJlc3RvcmU+PiBSZXN0b3Jl
OjpkZWNvZGUoRGVjb2RlciYpCit7CisgICAgcmV0dXJuIFJlc3RvcmU6OmNyZWF0ZSgpOworfQor
CiBjbGFzcyBUcmFuc2xhdGUgOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxUcmFuc2xhdGU+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KQpAQCAtMjI3LDE2ICsyODAsMTYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2xhdGUoeCwgeSkp
OwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflRyYW5zbGF0ZSgpOworCiAg
ICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQogICAgIGZsb2F0IHkoKSBjb25zdCB7
IHJldHVybiBtX3k7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmVmPFRyYW5zbGF0ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAg
VHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6VHJh
bnNsYXRlKQotICAgICAgICAsIG1feCh4KQotICAgICAgICAsIG1feSh5KQotICAgIHsKLSAgICB9
CisgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMjQ0LDYg
KzI5NywyOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1feTsKIH07CiAKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIFRyYW5zbGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX3g7CisgICAgZW5jb2RlciA8PCBtX3k7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8VHJhbnNsYXRlPj4gVHJhbnNsYXRlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxmbG9hdD4geDsKKyAgICBk
ZWNvZGVyID4+IHg7CisgICAgaWYgKCF4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8ZmxvYXQ+IHk7CisgICAgZGVjb2RlciA+PiB5OworICAgIGlmICgheSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBUcmFuc2xhdGU6OmNy
ZWF0ZSgqeCwgKnkpOworfQorCiBjbGFzcyBSb3RhdGUgOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSb3RhdGU+IGNyZWF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykKQEAg
LTI1MSwyMCArMzI3LDM4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Um90YXRlKGFuZ2xlSW5SYWRpYW5zKSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB+Um90YXRlKCk7CisKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5n
bGU7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVm
PFJvdGF0ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgUm90YXRlKGZsb2F0
IGFuZ2xlKQotICAgICAgICA6IEl0ZW0oSXRlbVR5cGU6OlJvdGF0ZSkKLSAgICAgICAgLCBtX2Fu
Z2xlKGFuZ2xlKQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgUm90YXRlKGZsb2F0
IGFuZ2xlKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBmbG9hdCBtX2FuZ2xlOyAvLyBJbiByYWRpYW5zLgogfTsKIAordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUm90YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fYW5nbGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitPcHRpb25hbDxSZWY8Um90YXRlPj4gUm90YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxmbG9hdD4gYW5nbGU7CisgICAgZGVjb2RlciA+PiBhbmdsZTsK
KyAgICBpZiAoIWFuZ2xlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIFJvdGF0ZTo6Y3JlYXRlKCphbmdsZSk7Cit9CisKIGNsYXNzIFNjYWxlIDogcHVibGljIEl0
ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2NhbGU+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUpCkBAIC0yNzIsMjAgKzM2NiwzOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNjYWxlKHNpemUpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5TY2FsZSgpOworCiAgICAgY29uc3QgRmxvYXRTaXplJiBhbW91bnQoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPFNjYWxlPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBT
Y2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6U2Nh
bGUpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBTY2FsZShjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgbV9zaXplOwogfTsKIAor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2NhbGU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zaXplOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFNjYWxlPj4gU2NhbGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2NhbGU7CisgICAgZGVjb2RlciA+
PiBzY2FsZTsKKyAgICBpZiAoIXNjYWxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIFNjYWxlOjpjcmVhdGUoKnNjYWxlKTsKK30KKwogY2xhc3MgQ29uY2F0ZW5h
dGVDVE0gOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDb25jYXRlbmF0
ZUNUTT4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQpAQCAtMjkzLDIyICs0
MDUsNTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb25jYXRlbmF0
ZUNUTShtYXRyaXgpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25j
YXRlbmF0ZUNUTSgpOworCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Q29uY2F0ZW5hdGVDVE0+PiBkZWNvZGUoRGVjb2RlciYp
OworCiBwcml2YXRlOgotICAgIENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKIH07CiAKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIENvbmNhdGVuYXRlQ1RNOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdHJhbnNmb3JtOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPENvbmNhdGVuYXRlQ1RNPj4gQ29uY2F0ZW5hdGVDVE06
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9y
bT4gdHJhbnNmb3JtOworICAgIGRlY29kZXIgPj4gdHJhbnNmb3JtOworICAgIGlmICghdHJhbnNm
b3JtKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIENvbmNhdGVu
YXRlQ1RNOjpjcmVhdGUoKnRyYW5zZm9ybSk7Cit9CisKIGNsYXNzIFNldFN0YXRlIDogcHVibGlj
IEl0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2V0U3RhdGU+IGNyZWF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNo
YW5nZUZsYWdzIGZsYWdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2V0
U3RhdGUoc3RhdGUsIGZsYWdzKSk7CiAgICAgfQorCisgICAgc3RhdGljIFJlZjxTZXRTdGF0ZT4g
Y3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNldFN0YXRlKHN0YXRlQ2hhbmdlKSk7
CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2V0U3RhdGUoKTsKICAgICAK
ICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9CiAKQEAgLTMxOSwxOCArNDYwLDc3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBidWlsZGVyU3RhdGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKICAg
ICBzdGF0aWMgdm9pZCBkdW1wU3RhdGVDaGFuZ2VzKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8
U2V0U3RhdGU+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIFNldFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6U2V0U3RhdGUp
Ci0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSwgZmxhZ3MpCi0gICAgewotICAgIH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYpOwogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlIG1fc3RhdGU7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBtX3N0YXRlLm1fY2hhbmdlRmxhZ3M7CisKKyAgICAvLyBGSVhNRTogRW5jb2RlIHRoZSBv
dGhlciBzdGF0ZSBjaGFuZ2VzLgorCisgICAgaWYgKG1fc3RhdGUubV9jaGFuZ2VGbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkKKyAgICAgICAgZW5jb2RlciA8
PCBtX3N0YXRlLm1fc3RhdGUuc3Ryb2tlQ29sb3I7CisKKyAgICBpZiAobV9zdGF0ZS5tX2NoYW5n
ZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkKKyAgICAgICAg
ZW5jb2RlciA8PCBtX3N0YXRlLm1fc3RhdGUuZmlsbENvbG9yOworCisgICAgaWYgKG1fc3RhdGUu
bV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkKKyAgICAg
ICAgZW5jb2RlciA8PCBtX3N0YXRlLm1fc3RhdGUuYWxwaGE7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IERlY29kZXI+CitPcHRpb25hbDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOworICAgIGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7Cisg
ICAgaWYgKCFjaGFuZ2VGbGFncykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOworICAgIHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7CisKKyAgICBpZiAoKmNoYW5nZUZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSB7CisgICAgICAgIE9wdGlv
bmFsPENvbG9yPiBzdHJva2VDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsK
KyAgICAgICAgaWYgKCFzdHJva2VDb2xvcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VD
b2xvcjsKKyAgICB9CisKKyAgICBpZiAoKmNoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxDb2xvckNoYW5nZSkgeworICAgICAgICBPcHRpb25hbDxDb2xvcj4gZmlsbENvbG9y
OworICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKKyAgICAgICAgaWYgKCFmaWxsQ29sb3Ip
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdl
Lm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xvcjsKKyAgICB9CisKKyAgICBpZiAoKmNoYW5n
ZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSB7CisgICAgICAgIE9w
dGlvbmFsPGZsb2F0PiBhbHBoYTsKKyAgICAgICAgZGVjb2RlciA+PiBhbHBoYTsKKyAgICAgICAg
aWYgKCFhbHBoYSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5hbHBoYSA9ICphbHBoYTsKKyAgICB9CisKKyAgICByZXR1cm4g
U2V0U3RhdGU6OmNyZWF0ZShzdGF0ZUNoYW5nZSk7Cit9CisKIGNsYXNzIFNldExpbmVDYXAgOiBw
dWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTZXRMaW5lQ2FwPiBjcmVhdGUo
TGluZUNhcCBsaW5lQ2FwKQpAQCAtNzQxLDE2ICs5NDEsMTYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UmVjdChyZWN0LCBib3JkZXJUaGlja25lc3MpKTsKICAg
ICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3UmVjdCgpOworCiAgICAgRmxv
YXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBmbG9hdCBib3JkZXJU
aGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX2JvcmRlclRoaWNrbmVzczsgfQogCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd1JlY3Q+PiBkZWNv
ZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIERyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQotICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpEcmF3UmVjdCkKLSAgICAgICAgLCBtX3JlY3QocmVjdCkKLSAgICAgICAgLCBtX2JvcmRl
clRoaWNrbmVzcyhib3JkZXJUaGlja25lc3MpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBEcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpOwog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtNzU5LDYgKzk1OSwzNiBAQCBwcml2
YXRlOgogICAgIGZsb2F0IG1fYm9yZGVyVGhpY2tuZXNzOwogfTsKIAordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgRHJhd1JlY3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9yZWN0OworICAgIGVuY29kZXIgPDwgbV9ib3JkZXJUaGlja25l
c3M7CisKKyAgICBlbmNvZGVGb3JEcmF3aW5nSXRlbShlbmNvZGVyKTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3UmVjdD4+IERyYXdSZWN0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAg
ZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPGZsb2F0PiBib3JkZXJUaGlja25lc3M7CisgICAgZGVjb2Rl
ciA+PiBib3JkZXJUaGlja25lc3M7CisgICAgaWYgKCFib3JkZXJUaGlja25lc3MpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGl0ZW0gPSBEcmF3UmVjdDo6Y3JlYXRl
KCpyZWN0LCAqYm9yZGVyVGhpY2tuZXNzKTsKKworICAgIGlmICghZGVjb2RlRm9yRHJhd2luZ0l0
ZW0oZGVjb2RlciwgaXRlbS5nZXQoKSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gaXRlbTsKK30KKwogY2xhc3MgRHJhd0xpbmUgOiBwdWJsaWMgRHJhd2luZ0l0
ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RHJhd0xpbmU+IGNyZWF0ZShjb25zdCBGbG9h
dFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikKQEAgLTg3OCwxNCArMTEw
OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdQYXRoKHBh
dGgpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3UGF0aCgpOwor
CiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd1BhdGg+PiBk
ZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIERyYXdQYXRoKGNvbnN0IFBhdGgmIHBh
dGgpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdQYXRoKQotICAgICAgICAs
IG1fcGF0aChwYXRoKQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd1BhdGgo
Y29uc3QgUGF0aCYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtODk0LDYgKzExMjUsMzAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBQYXRo
IG1fcGF0aDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdQYXRoOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGF0aDsK
KworICAgIGVuY29kZUZvckRyYXdpbmdJdGVtKGVuY29kZXIpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPERyYXdQYXRoPj4gRHJhd1BhdGg6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CisgICAgZGVjb2RlciA+
PiBwYXRoOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gaXRlbSA9IERyYXdQYXRoOjpjcmVhdGUoKnBhdGgpOworCisgICAgaWYgKCFkZWNv
ZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQorCiBjbGFzcyBEcmF3Rm9jdXNSaW5n
UGF0aCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3
Rm9jdXNSaW5nUGF0aD4gY3JlYXRlKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9h
dCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTk2NSwxNCArMTIyMCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGxSZWN0KHJlY3QpKTsKICAgICB9
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWxsUmVjdCgpOworCiAgICAgRmxvYXRS
ZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPEZpbGxSZWN0Pj4gZGVjb2RlKERlY29kZXIm
KTsKKwogcHJpdmF0ZToKLSAgICBGaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi0gICAg
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxSZWN0KQotICAgICAgICAsIG1fcmVjdChy
ZWN0KQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CkBAIC05ODAsNiArMTIz
NiwzMCBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBGaWxsUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7CisKKyAgICBlbmNvZGVGb3JEcmF3aW5nSXRl
bShlbmNvZGVyKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxG
aWxsUmVjdD4+IEZpbGxSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAgZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVj
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaXRlbSA9IEZpbGxS
ZWN0OjpjcmVhdGUoKnJlY3QpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNv
ZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBpdGVtOworfQorCiAvLyBGSVhNRTogTWFrZSB0aGVzZSBpbmhlcml0IGZyb20gRmlsbFJl
Y3QgcHJvcGVyLgogY2xhc3MgRmlsbFJlY3RXaXRoQ29sb3IgOiBwdWJsaWMgRHJhd2luZ0l0ZW0g
ewogcHVibGljOgpAQCAtOTg4LDE2ICsxMjY4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRmlsbFJlY3RXaXRoQ29sb3IocmVjdCwgY29sb3IpKTsKICAgICB9CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWxsUmVjdFdpdGhDb2xvcigpOworCiAgICAg
RmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBDb2xv
ciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxGaWxsUmVjdFdpdGhDb2xvcj4+IGRlY29k
ZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgRmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0o
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKQotICAgICAgICAsIG1fcmVjdChyZWN0KQotICAg
ICAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBG
aWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpOwogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtMTAwNiw2ICsxMjg2LDM2IEBAIHByaXZhdGU6
CiAgICAgQ29sb3IgbV9jb2xvcjsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IEZpbGxSZWN0V2l0aENvbG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fcmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7CisKKyAgICBlbmNv
ZGVGb3JEcmF3aW5nSXRlbShlbmNvZGVyKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPFJlZjxGaWxsUmVjdFdpdGhDb2xvcj4+IEZpbGxSZWN0V2l0aENvbG9yOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7Cisg
ICAgZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNv
bG9yOworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBhdXRvIGl0ZW0gPSBGaWxsUmVjdFdpdGhDb2xvcjo6Y3JlYXRlKCpyZWN0LCAqY29sb3IpOwor
CisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQorCiBjbGFz
cyBGaWxsUmVjdFdpdGhHcmFkaWVudCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxGaWxsUmVjdFdpdGhHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQpAQCAtMTAzNywyMCArMTM0NywxOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGxDb21wb3NpdGVkUmVjdChyZWN0
LCBjb2xvciwgb3AsIGJsZW5kTW9kZSkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkZpbGxDb21wb3NpdGVkUmVjdCgpOworCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yOyB9CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX29wOyB9CiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFJlZjxGaWxsQ29tcG9zaXRlZFJlY3Q+PiBkZWNvZGUoRGVjb2RlciYp
OworCiBwcml2YXRlOgotICAgIEZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdCkKLSAgICAgICAgLCBtX3JlY3QocmVjdCkKLSAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQot
ICAgICAgICAsIG1fb3Aob3ApCi0gICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAg
IHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CkBAIC0xMDYxLDYgKzEzNjksNDggQEAgcHJp
dmF0ZToKICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBGaWxsQ29tcG9zaXRlZFJlY3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZWN0OworICAgIGVuY29kZXIgPDwgbV9jb2xv
cjsKKyAgICBlbmNvZGVyIDw8IG1fb3A7CisgICAgZW5jb2RlciA8PCBtX2JsZW5kTW9kZTsKKwor
ICAgIGVuY29kZUZvckRyYXdpbmdJdGVtKGVuY29kZXIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8UmVmPEZpbGxDb21wb3NpdGVkUmVjdD4+IEZpbGxDb21wb3NpdGVk
UmVjdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiByZWN0OworICAgIGRlY29kZXIgPj4gcmVjdDsKKyAgICBpZiAoIXJlY3QpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVj
b2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wOworICAgIGRlY29kZXIg
Pj4gb3A7CisgICAgaWYgKCFvcCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIGRlY29kZXIgPj4gYmxlbmRNb2Rl
OworICAgIGlmICghYmxlbmRNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgYXV0byBpdGVtID0gRmlsbENvbXBvc2l0ZWRSZWN0OjpjcmVhdGUoKnJlY3QsICpjb2xvciwg
Km9wLCAqYmxlbmRNb2RlKTsKKworICAgIGlmICghZGVjb2RlRm9yRHJhd2luZ0l0ZW0oZGVjb2Rl
ciwgaXRlbS5nZXQoKSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gaXRlbTsKK30KKwogY2xhc3MgRmlsbFJvdW5kZWRSZWN0IDogcHVibGljIERyYXdpbmdJdGVt
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZpbGxSb3VuZGVkUmVjdD4gY3JlYXRlKGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKQEAgLTExMjQsMTQgKzE0NzQsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGaWxsUGF0aChwYXRoKSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RmlsbFBhdGgoKTsKKwogICAgIGNvbnN0IFBhdGgmIHBhdGgoKSBjb25zdCB7
IHJldHVybiBtX3BhdGg7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPEZpbGxQYXRoPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAg
ICBGaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQotICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpGaWxsUGF0aCkKLSAgICAgICAgLCBtX3BhdGgocGF0aCkKLSAgICB7Ci0gICAgfQorICAg
IFdFQkNPUkVfRVhQT1JUIEZpbGxQYXRoKGNvbnN0IFBhdGgmKTsKIAogICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CkBAIC0xMTM5LDYgKzE0OTAsMzAgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBQYXRoIG1fcGF0aDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIEZpbGxQYXRoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fcGF0aDsKKworICAgIGVuY29kZUZvckRyYXdpbmdJdGVtKGVuY29k
ZXIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEZpbGxQYXRo
Pj4gRmlsbFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBh
dGg+IHBhdGg7CisgICAgZGVjb2RlciA+PiBwYXRoOworICAgIGlmICghcGF0aCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaXRlbSA9IEZpbGxQYXRoOjpjcmVhdGUo
KnBhdGgpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdl
dCgpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOwor
fQorCiBjbGFzcyBGaWxsRWxsaXBzZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxGaWxsRWxsaXBzZT4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
QEAgLTEyMzksMTQgKzE2MTQsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDbGVhclJlY3QocmVjdCkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkNsZWFyUmVjdCgpOworCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
UmVmPENsZWFyUmVjdD4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgQ2xlYXJS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlw
ZTo6Q2xlYXJSZWN0KQotICAgICAgICAsIG1fcmVjdChyZWN0KQotICAgIHsKLSAgICB9CisgICAg
V0VCQ09SRV9FWFBPUlQgQ2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtMTI1NCw2ICsxNjMwLDMwIEBAIHByaXZhdGU6CiAgICAg
RmxvYXRSZWN0IG1fcmVjdDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENs
ZWFyUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBtX3JlY3Q7CisKKyAgICBlbmNvZGVGb3JEcmF3aW5nSXRlbShlbmNvZGVyKTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxDbGVhclJlY3Q+PiBDbGVhclJlY3Q6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVj
dDsKKyAgICBkZWNvZGVyID4+IHJlY3Q7CisgICAgaWYgKCFyZWN0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVtID0gQ2xlYXJSZWN0OjpjcmVhdGUoKnJlY3Qp
OworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQorCiAj
aWYgVVNFKENHKQogY2xhc3MgQXBwbHlTdHJva2VQYXR0ZXJuIDogcHVibGljIEl0ZW0gewogcHVi
bGljOgpAQCAtMTMxMSw2ICsxNzExLDIwNyBAQCBwcml2YXRlOgogCiBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSXRlbSYpOwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG1fdHlwZTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAg
Y2FzZSBJdGVtVHlwZTo6U2F2ZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxTYXZlPigq
dGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CisgICAg
ICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8UmVzdG9yZT4oKnRoaXMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8VHJhbnNsYXRlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OlJvdGF0ZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxSb3RhdGU+KCp0aGlzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8U2NhbGU+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6Q29uY2F0ZW5hdGVDVE06CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Q29uY2F0
ZW5hdGVDVE0+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0
U3RhdGU6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8U2V0U3RhdGU+KCp0aGlzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgLy8gU2V0TGluZUNhcAorICAgIC8vIFNldExpbmVEYXNoCisgICAg
Ly8gU2V0TGluZUpvaW4KKyAgICAvLyBTZXRNaXRlckxpbWl0CisgICAgLy8gQ2xlYXJTaGFkb3cK
KyAgICAvLyBDbGlwCisgICAgLy8gQ2xpcE91dAorICAgIC8vIENsaXBPdXRUb1BhdGgKKyAgICAv
LyBDbGlwUGF0aAorICAgIC8vIERyYXdHbHlwaHMKKyAgICAvLyBEcmF3SW1hZ2UKKyAgICAvLyBE
cmF3VGlsZWRJbWFnZQorICAgIC8vIERyYXdUaWxlZFNjYWxlZEltYWdlCisjaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKyAgICAvLyBEcmF3TmF0aXZlSW1hZ2UKKyNl
bmRpZgorICAgIC8vIERyYXdQYXR0ZXJuCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Cisg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1JlY3Q+KCp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgLy8gRHJhd0xpbmUKKyAgICAvLyBEcmF3TGluZXNGb3JUZXh0CisgICAgLy8gRHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcgorICAgIC8vIERyYXdFbGxpcHNlCisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdGg6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdGg+KCp0
aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgLy8gRHJhd0ZvY3VzUmluZ1BhdGgKKyAgICAvLyBE
cmF3Rm9jdXNSaW5nUmVjdHMKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKKyAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsUmVjdD4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKKyAgICAgICAgZW5jb2RlciA8PCBk
b3duY2FzdDxGaWxsUmVjdFdpdGhDb2xvcj4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICAv
LyBGaWxsUmVjdFdpdGhHcmFkaWVudAorICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdDoKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCp0
aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgLy8gRmlsbFJvdW5kZWRSZWN0CisgICAgLy8gRmls
bFJlY3RXaXRoUm91bmRlZEhvbGUKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKKyAgICAg
ICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsUGF0aD4oKnRoaXMpOworICAgICAgICBicmVhazsK
KyAgICAvLyBGaWxsRWxsaXBzZQorICAgIC8vIFN0cm9rZVJlY3QKKyAgICAvLyBTdHJva2VQYXRo
CisgICAgLy8gU3Ryb2tlRWxsaXBzZQorICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKKyAg
ICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxDbGVhclJlY3Q+KCp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgLy8gQmVnaW5UcmFuc3BhcmVuY3lMYXllcgorICAgIC8vIEVuZFRyYW5zcGFyZW5j
eUxheWVyCisjaWYgVVNFKENHKQorICAgIC8vIEFwcGx5U3Ryb2tlUGF0dGVybgorICAgIC8vIEFw
cGx5RmlsbFBhdHRlcm4KKyNlbmRpZgorICAgIC8vIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IKKyAg
ICBkZWZhdWx0OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNv
ZGUgY2Fubm90IHlldCBlbmNvZGUgaXRlbSBvZiB0eXBlICVsbGQiLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4obV90eXBlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgT3B0aW9uYWw8SXRlbVR5cGU+IGl0ZW1UeXBlOworICAgIGRlY29kZXIg
Pj4gaXRlbVR5cGU7CisgICAgaWYgKCFpdGVtVHlwZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHN3aXRjaCAoKml0ZW1UeXBlKSB7CisgICAgY2FzZSBJdGVtVHlwZTo6U2F2
ZToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFNhdmU6OmRlY29kZShkZWNvZGVyKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgorICAgICAgICBp
ZiAoYXV0byBpdGVtID0gUmVzdG9yZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKKyAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IFRyYW5zbGF0ZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFJv
dGF0ZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OlNjYWxlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gU2NhbGU6OmRlY29kZShk
ZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDb25j
YXRlbmF0ZUNUTToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IENvbmNhdGVuYXRlQ1RNOjpkZWNv
ZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0
ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
U2V0U3RhdGU6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBTZXRTdGF0ZTo6ZGVjb2RlKGRlY29k
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZN
b3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIC8vIFNldExpbmVDYXAKKyAgICAvLyBT
ZXRMaW5lRGFzaAorICAgIC8vIFNldExpbmVKb2luCisgICAgLy8gU2V0TWl0ZXJMaW1pdAorICAg
IC8vIENsZWFyU2hhZG93CisgICAgLy8gQ2xpcAorICAgIC8vIENsaXBPdXQKKyAgICAvLyBDbGlw
T3V0VG9QYXRoCisgICAgLy8gQ2xpcFBhdGgKKyAgICAvLyBEcmF3R2x5cGhzCisgICAgLy8gRHJh
d0ltYWdlCisgICAgLy8gRHJhd1RpbGVkSW1hZ2UKKyAgICAvLyBEcmF3VGlsZWRTY2FsZWRJbWFn
ZQorI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCisgICAgLy8gRHJh
d05hdGl2ZUltYWdlCisjZW5kaWYKKyAgICAvLyBEcmF3UGF0dGVybgorICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1JlY3Q6OmRlY29kZShk
ZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICAvLyBEcmF3TGluZQorICAgIC8v
IERyYXdMaW5lc0ZvclRleHQKKyAgICAvLyBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyCisgICAg
Ly8gRHJhd0VsbGlwc2UKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKKyAgICAgICAgaWYg
KGF1dG8gaXRlbSA9IERyYXdQYXRoOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAg
YnJlYWs7CisgICAgLy8gRHJhd0ZvY3VzUmluZ1BhdGgKKyAgICAvLyBEcmF3Rm9jdXNSaW5nUmVj
dHMKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9
IEZpbGxSZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6CisgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBGaWxsUmVjdFdpdGhDb2xvcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJy
ZWFrOworICAgIC8vIEZpbGxSZWN0V2l0aEdyYWRpZW50CisgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bENvbXBvc2l0ZWRSZWN0OgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRmlsbENvbXBvc2l0ZWRS
ZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgLy8gRmls
bFJvdW5kZWRSZWN0CisgICAgLy8gRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUKKyAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUGF0aDoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxQYXRoOjpkZWNv
ZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0
ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgLy8gRmlsbEVsbGlwc2UK
KyAgICAvLyBTdHJva2VSZWN0CisgICAgLy8gU3Ryb2tlUGF0aAorICAgIC8vIFN0cm9rZUVsbGlw
c2UKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6CisgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBDbGVhclJlY3Q6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAg
ICAvLyBCZWdpblRyYW5zcGFyZW5jeUxheWVyCisgICAgLy8gRW5kVHJhbnNwYXJlbmN5TGF5ZXIK
KyNpZiBVU0UoQ0cpCisgICAgLy8gQXBwbHlTdHJva2VQYXR0ZXJuCisgICAgLy8gQXBwbHlGaWxs
UGF0dGVybgorI2VuZGlmCisgICAgLy8gQXBwbHlEZXZpY2VTY2FsZUZhY3RvcgorICAgIGRlZmF1
bHQ6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5u
b3QgeWV0IGRlY29kZSBpdGVtIG9mIHR5cGUgJWxsZCIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pigq
aXRlbVR5cGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApAQCAtMTM3OSwzICsxOTgwLDYzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShBcHBseUZpbGxQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xlYXJTaGFkb3cpCiAKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U2F2ZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmUsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGUsCisgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTY2FsZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNv
bmNhdGVuYXRlQ1RNLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3Rh
dGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwLAorICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2gsCisgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbiwKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQsCisgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkNsaXAsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aCwKKyAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBocywKKyAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdUaWxlZEltYWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVT
RShESVJFQ1QyRCkKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZSwKKyNlbmRpZgorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1BhdHRlcm4sCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwK
KyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lLAorICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dCwKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZSwKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHMsCisgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpGaWxsUm91bmRlZFJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmls
bEVsbGlwc2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aCwKKyAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2UsCisgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyLAorICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXIsCisjaWYgVVNFKENHKQor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuLAor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybiwKKyNl
bmRpZgorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcgorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlMjBmM2VkMTNjYjZlNTVmNzgyZThjOWFk
YzEzMDg3MmRlNmVmMTMyLi5hMjUzNTMyMDlkMDlmYzBlZjg1ZTdiY2Y0ZGFkYmFiNTQ4NTdiNzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiAg
ICAgICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkgewogICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRl
ICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNo
YW5nZXNGcm9tTGFzdFN0YXRlKSk7CiAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZChT
ZXRTdGF0ZTo6Y3JlYXRlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0
ZSkpOwotICAgICAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSAwOworICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07CiAgICAgICAgICAgICBjdXJy
ZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1fc3RhdGU7CiAgICAg
ICAgIH0KICAgICAgICAgY3VycmVudFN0YXRlKCkud2FzVXNlZEZvckRyYXdpbmcgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNTE2ZDRkZjhjN2ZkOWVi
NWYyOTk3NTY1OGRkNzYzZDE4MDBjM2NkNi4uYTRlNjg4NjFjZjMwZWNiYWUzOTYyYmJiMzQ0ZTli
ZDg3ODdmNGFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC01
MSw4ICs1MSw4IEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNw
bGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBp
bml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgdmlydHVhbCB+UmVjb3Jk
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNw
bGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBp
bml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+UmVjb3JkZXIoKTsKIAogICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCmluZGV4IDRmOTY4ZTg0NmM2NTc2YWI1NTU5YWYxMjQwMTI0MTE2YmU2
MzFhNmUuLjYwZTY1YWYyNzhlNjQ5YjFmMDRhMzQ0MGZiNTRhNTRkNTRhMmNiMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVwbGF5ZXIpOwogcHVibGljOgotICAgIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IERpc3BsYXlMaXN0Jik7Ci0gICAgflJlcGxheWVyKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB+UmVwbGF5ZXIoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5
TGlzdD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJh
Y2tSZXBsYXlMaXN0ID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxEaXNwbGF5TGlzdD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0s
IGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwogICAgIAogcHJpdmF0ZToKICAgICBjb25z
dCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384694</attachid>
            <date>2019-12-02 23:47:55 -0800</date>
            <delta_ts>2019-12-03 08:23:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204740-20191202234754.patch</filename>
            <type>text/plain</type>
            <size>82308</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0MDkzOTRjYzhhZGY1
OWI5MGFhN2YxNjhhMmE4M2RmOGFlYjlkNi4uZGZmNmYxOWJkNmMzYjk0MTgyYmRkYjlhZDAxMzBj
Y2VlYzM0NTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDE5LTEyLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IGFkZGlu
ZyBlbmNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdCBhbmQgc29tZSBEaXNwbGF5TGlzdEl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3
NDAKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVG8gYmUg
dXNlZCBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIFN0YXJ0IGVuY29kaW5nIGFuZCBkZWNv
ZGluZyBEaXNwbGF5TGlzdCwgYW5kIGl0cyBjaGlsZCBpdGVtcy4gV2UKKyAgICAgICAgY3VycmVu
dGx5IHN1cHBvcnQgb25seSBhIHN1YnNldCBvZiB0aGUgaXRlbSBzdWJjbGFzc2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgIEFkb3B0IE9wdGlvblNldCBmb3IgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3aW5nSXRlbTo6RHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNhdmU6OlNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc3RvcmU6OlJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlRy
YW5zbGF0ZTo6VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSb3Rh
dGU6OlJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2NhbGU6OlNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdSZWN0OjpEcmF3UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg6OkRyYXdQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdDo6RmlsbFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yOjpGaWxsUmVjdFdpdGhDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0OjpGaWxs
Q29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRo
OjpGaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xlYXJSZWN0OjpD
bGVhclJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6aXNT
dGF0ZUl0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTYXZlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNhdmU6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzdG9yZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXN0b3JlOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlRyYW5zbGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpUcmFuc2xhdGU6OmRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Um90YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpTY2FsZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpTY2FsZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpD
b25jYXRlbmF0ZUNUTTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpDb25jYXRlbmF0ZUNUTTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpTZXRTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpT
ZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpT
ZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVj
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVj
dDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xv
cjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRl
ZFJlY3Q6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmls
bENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZpbGxQYXRoOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZpbGxQYXRoOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsZWFy
UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVh
clJlY3Q6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06Okl0ZW0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2F2ZTo6U2F2ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzdG9yZTo6UmVzdG9yZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6VHJhbnNsYXRlOjpUcmFu
c2xhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6
Um90YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6
U2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRl
OjpTZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d1JlY3Q6OkRyYXdSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3UGF0aDo6RHJhd1BhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZpbGxSZWN0OjpGaWxsUmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I6OkZpbGxSZWN0V2l0aENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OkZp
bGxDb21wb3NpdGVkUmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RmlsbFBhdGg6OkZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpDbGVhclJlY3Q6OkNsZWFyUmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCiAyMDE5
LTEyLTAyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtNU1ZDXSBBZGQgL2V4cGVyaW1lbnRhbDpuZXdMYW1iZGFQcm9jZXNzb3Igc3dpdGNoIGZv
ciBiZXR0ZXIgQysrIGNvbmZvcm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE0Nzg1YmZjZmYwN2ZhN2RkZGZkMzY3YzNl
MGU3MGRiZDVlOGYwNy4uMDFmNWEyY2E3ZDVjYjQ4Y2MzODg5MjY4YzU0ZWEzNGFhMWM5NzRiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzUxLDEwICszNTEsMTAgQEAKIAkJMEZEQTdDMjcxODgzMzMzMjAwQzk1NEI1IC8qIEpT
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjUxODgzMzMzMjAwQzk1NEI1IC8q
IEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovOyB9OwogCQkwRkRD
RDdGMzFENDdFNjU1MDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRENEN0YyMUQ0N0U2NTUwMDlGMDhC
QyAvKiBMb2dJbml0aWFsaXphdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRTU4MDY0MTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdU
cmVlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkU1ODA2MjE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5oICovOyB9OwotCQkw
RkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNCMUMzREQ1MUUwMDA3QTJDQSAv
KiBEaXNwbGF5TGlzdC5oICovOyB9OwotCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCAqLzsg
fTsKLQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi87IH07Ci0JCTBGRTVGQkQ5
MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZXBsYXllci5oICovOyB9OworCQkwRkU1RkJEMzFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTVGQkNCMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTVGQkQ1MUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RJdGVtcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJD
RjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3
QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxp
c3RSZXBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRTcxNDA2MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTcxNDA0MTQy
MTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCAqLzsgfTsKIAkJMEZFQTNFN0Ix
OTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U3OTE5MUIy
RkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVBM0U4MDE5MUIz
MTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFN0UxOTFCMzE2
OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI1LDYgKzgyNSw3
IEBACiAJCTJEOUJGNzQ2MURCRkRDNDcwMDdBN0Q5OSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5QkY3MzMxREJGREMwRjAw
N0E3RDk5IC8qIE1lZGlhS2V5cy5jcHAgKi87IH07CiAJCTJEOUJGNzQ3MURCRkRDNDkwMDdBN0Q5
OSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlCRjcyRjFEQkZEQzBGMDA3QTdEOTkgLyogTWVkaWFLZXlN
ZXNzYWdlRXZlbnQuY3BwICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBGRjcgLyogbGlu
ZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyAqLzsgfTsKKwkJ
MkRBQ0I5RTkyMzc1NUQwMDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDAxMjNGMUZBRDg3RDYw
MDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRBRjM0M0QxRUE3RTBGMTAwMzgyQ0QzIC8qIENv
bnN0YW50UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEQUYzNDNCMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25zdGFudFByb3BlcnR5TWFw
LmggKi87IH07CiAJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3NpdGlvblVuZGVy
bGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRE
NUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRERTFDRTMxRjU3NEFF
NTAwRDFBMzY1IC8qIEpTVlJGaWVsZE9mVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRTAxRjU3NEFEMTAwRDFBMzY1IC8qIEpTVlJGaWVs
ZE9mVmlldy5oICovOyB9OwpAQCAtMjk1MzUsNiArMjk1MzYsNyBAQAogCQkJCUY0N0EwOUQxMjBB
OTNBOTcwMDI0MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3RURBQUZDOTE5QTJDQ0RDMDAzNERGRDEgLyogRGlza0NhY2hlTW9uaXRvckNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxMTk5RkE1QjIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJ
bmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJE
NzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTkwOCw2ICsyOTkxMCw3IEBACiAJCQkJMzFBQjUwMDAxMjI4NzhBMjAwMUE3REIwIC8q
IEdyYXBoaWNzQ29udGV4dDNESU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDg0M0E0QjIwRkVC
RTNEMDBGRTg2MEUgLyogR3JhcGhpY3NDb250ZXh0M0RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJEQUNCOUU5MjM3NTVEMDAwMEI0QzE4NSAvKiBHcmFwaGljc0NvbnRl
eHRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBENjcwODBFOUU5REVCMDBFNDIwRjAgLyog
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwMDQ4LDcgKzMwMDUxLDYgQEAKIAkJCQlBODcxREIyQjBBMTUwQkQ2MDBC
MTJBNjggLyogSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NzFEQjJBMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDZWxsRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MURCMkYwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZUNvbEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0NTFDNjI4MjM5MjkzRUMwMDk5MzE5MCAvKiBMaW5l
TGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFE
QjI3MEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODcxREIyQzBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4NzFEQjMxMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVS
b3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMTYwLDcgKzMwMTYyLDYgQEAKIAkJCQlC
QzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ1QTU5MzExNTI1MjVEMDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5n
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8q
IE1hcmdpblR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTFBMkYzRjE3RDdEM0FFMDA3MjUx
N0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkyOTFF
NEIxMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBpbiBIZWFkZXJzICovLApAQCAtMzA1NTMsNyArMzA1NTQsNiBAQAogCQkJCTgzNzA1NjkwMUY1
MDkxNUMwMEQ5MzQyNSAvKiBKU0ZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzNCOUUzNjFGNTA4RDg1MDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRmlsZUVudHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJCRTQ4ODFGRTg2ODZBMDAyMDMxQ0MgLyogSlNGaWxs
TW9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExp
bmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjZEOUQy
N0IxNEVBQzA4NjAwOTBENzVFIC8qIEpTRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzI4MDgzM0YxQzZEQzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDMjRFRUE5MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxMTc3LDYgKzMxMTc3LDcgQEAKIAkJCQk2RjdDQTNDNjIwOEMyOTU3MDAyRjI5
QUIgLyogTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTExMzEwQ0YyMjBCQTRBMzIw
MDY1QThEMCAvKiBMYXlvdXRUcmVlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMw
NDgxNjQ4MzQ4RjAwMzcxRTVBIC8qIExheW91dFVuaXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0
NTFDNjMxMjM5NDAyNzkwMDk5MzE5MCAvKiBMYXlvdXRVbml0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RFOEI1RUQxQTY5Nzc3MzAwQjRCNjZBIC8qIExlZ2FjeUNETVByaXZhdGVDbGVhcktleS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTIxRTAwODdBRTAwRTIzNUEyIC8qIExlZ2FjeUNE
TVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUYxMUE2OTc3OEIwMEI0QjY2QSAv
KiBMZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLApAQCAtMzEyMDgsNiAr
MzEyMDksOSBAQAogCQkJCTZGMjZFQjQ4MjM0MDA0QTUwMDY5MDZFMiAvKiBMaW5lTGF5b3V0Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZFRkFCMkExODM4MERBMDAwNTE0NTM0IC8qIExp
bmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ4NEEzM0UyMzA1NTMyNTAwOUFE
RTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0MzQzRDI1
MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCBpbiBI
ZWFkZXJzICovLAorCQkJCUU0NTFDNjI4MjM5MjkzRUMwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJh
dmVyc2FsRGlzcGxheVJ1blBhdGguaCBpbiBIZWFkZXJzICovLAorCQkJCUU0MzQzRDIzMjM5Mjc3
ODQwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsU2ltcGxlUGF0aC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkZEQkMwNDcxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0JBOURDMEIxREY0NERGNDAwMDU2NzVDIC8qIExpbmtIZWFkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTI0MSw2ICszMTI0NSw3IEBACiAJCQkJNDZFRkFGMTIxRTVGQjlG
MTAwRTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QUU2QzkzQzFCRTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQThGNkJDNjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5U
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIE1h
cmtlZFRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REY4MDk5RTY0OTIwMDU2RTU4MSAv
KiBtYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAv
KiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTcwMSw3ICszMTcwNiw2
IEBACiAJCQkJNTdEQ0VENzQyMTQzMDVGMDAwMTZCODQ3IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzMwM0JFRjIwMDk4MEM2MDAzNTU5NjUgLyogUHVi
bGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzBB
MjAwOTlCQUQwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBp
biBIZWFkZXJzICovLAotCQkJCUU0MzQzRDIzMjM5Mjc3ODQwMEVCQkI2NiAvKiBMaW5lTGF5b3V0
VHJhdmVyc2FsU2ltcGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCRUIyMDA5N0Y0
MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwMDgxRkYwMDE2QjBBMkQzMDA4QUFBN0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMjQ5Niw3ICszMjUwMCw2IEBACiAJCQkJQjIyMjdBREEwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCBp
biBIZWFkZXJzICovLAotCQkJCUU0NTFDNjMxMjM5NDAyNzkwMDk5MzE5MCAvKiBMYXlvdXRVbml0
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENTgxREQ3RDk2RDAwMTI4NTUyIC8qIFNWR1Ry
YW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUU1MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdUU3BhbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzI4MjYs
NyArMzI4MjksNiBAQAogCQkJCTQ5QzdCOUUwMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzRjNEMzZBMUE2OUI3QjkwMDU5RkMy
QiAvKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Rjk5
NUEyMjFBNzA3OEIxMDBBNzM1RjQgLyogV2ViR0xTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlFNDUxQzYzNDIzOTQwNThGMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5QzdCOUUzMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFNoYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hh
ZGVyUHJlY2lzaW9uRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwMUQzQ0Y4NzE0QkQwQTMw
MDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5k
ZXggNzM4OGQ5ZmM3YzI1MzI1MWI1YzM5MWU4NDcyMjk4ZWRlN2U4YjQ2Yi4uZDM2N2M1MmE4MTA1
Y2NlZWNlOWY4MWY3ODY1OGI1ZGRiNzgxYmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03Miw4ICs3Miw4IEBA
IHByaXZhdGU6CiB9OwogCiAjZGVmaW5lIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKGZsYWcs
IHByb3BlcnR5KSBcCi0gICAgaWYgKChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmZsYWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRlLnByb3BlcnR5KSkgXAotICAg
ICAgICBjaGFuZ2VGbGFncyB8PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZzsKKyAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1f
c3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCisgICAgICAgIGNoYW5nZUZsYWdz
LmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZyk7CiAKIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJv
bVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkgY29uc3QKIHsKQEAgLTg0
LDExICs4NCwxMSBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdAogICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKICAgICBDSEVD
S19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOwog
Ci0gICAgaWYgKChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0No
YW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKQogICAgICAgICAmJiAobV9zdGF0ZS5zaGFkb3dPZmZzZXQgIT0gc3Rh
dGUuc2hhZG93T2Zmc2V0CiAgICAgICAgICAgICB8fCBtX3N0YXRlLnNoYWRvd0JsdXIgIT0gc3Rh
dGUuc2hhZG93Qmx1cgogICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dDb2xvciAhPSBzdGF0
ZS5zaGFkb3dDb2xvcikpCi0gICAgICAgIGNoYW5nZUZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dDaGFuZ2U7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKIAogICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KFN0cm9rZVRoaWNrbmVzc0NoYW5nZSwgc3Ryb2tlVGhpY2tuZXNzKTsKICAgICBDSEVDS19GT1Jf
Q0hBTkdFRF9QUk9QRVJUWShUZXh0RHJhd2luZ01vZGVDaGFuZ2UsIHRleHREcmF3aW5nTW9kZSk7
CkBAIC05OCw5ICs5OCwxMSBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdAogICAgIENIRUNLX0ZP
Ul9DSEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7CiAgICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKIAotICAgIGlmICgobV9j
aGFuZ2VGbGFncyAmIChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hh
bmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgICYm
IChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8
IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9kZSkpCi0gICAgICAgIGNoYW5nZUZs
YWdzIHw9IChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7CisgICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0
aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pCisgICAg
ICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9kZSkpIHsKKyAgICAgICAg
Y2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSk7CisgICAgfQogCiAgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
U2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxpYXMpOwogICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hhbmdlLCBzaG91bGRTbW9vdGhGb250
cyk7CkBAIC0xMTksOTIgKzEyMSw5MiBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFu
Z2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdAogdm9pZCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZs
YWdzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIG1vdmUgdG8gR3JhcGhpY3ND
b250ZXh0U3RhdGUuCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQogICAgICAgICBtX3N0YXRlLnN0cm9rZUdyYWRp
ZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQogICAgICAgICBtX3N0
YXRlLnN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VQYXR0ZXJuOwogCi0gICAgaWYgKGZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkKKyAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCiAg
ICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEdyYWRpZW50OwogCi0gICAg
aWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKQorICAg
IGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFu
Z2UpKQogICAgICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm47CiAK
LSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSB7Cisg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2Up
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJh
ZGl1cy4KICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7
CiAgICAgICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IHN0YXRlLnNoYWRvd0JsdXI7CiAgICAgICAg
IG1fc3RhdGUuc2hhZG93Q29sb3IgPSBzdGF0ZS5zaGFkb3dDb2xvcjsKICAgICB9CiAKLSAgICBp
ZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKQor
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tu
ZXNzQ2hhbmdlKSkKICAgICAgICAgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSBzdGF0ZS5zdHJv
a2VUaGlja25lc3M7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4
dERyYXdpbmdNb2RlQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKICAgICAgICAgbV9zdGF0ZS50ZXh0RHJh
d2luZ01vZGUgPSBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpCisgICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCiAgICAgICAgIG1f
c3RhdGUuc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKIAotICAgIGlmIChmbGFncyAm
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpCisgICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQogICAgICAgICBt
X3N0YXRlLmZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKIAotICAgIGlmIChmbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkKKyAgICBpZiAoZmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkKICAgICAgICAg
bV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0YXRlLnN0cm9rZVN0eWxlOwogCi0gICAgaWYgKGZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKQorICAgIGlmIChmbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQogICAgICAgICBt
X3N0YXRlLmZpbGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCiAgICAgICAgIG1fc3RhdGUuYWxwaGEg
PSBzdGF0ZS5hbHBoYTsKIAotICAgIGlmIChmbGFncyAmIChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSkpIHsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pKSB7CiAgICAgICAgIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSBz
dGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKICAgICAgICAgbV9zdGF0ZS5ibGVuZE1vZGUgPSBzdGF0
ZS5ibGVuZE1vZGU7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCiAgICAgICAgIG1fc3RhdGUu
c2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFsaWFzOwogCi0gICAgaWYgKGZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKQorICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHND
aGFuZ2UpKQogICAgICAgICBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gc3RhdGUuc2hvdWxk
U21vb3RoRm9udHM7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkK
ICAgICAgICAgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpCisgICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5n
ZSkpCiAgICAgICAgIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKIAotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKICAgICAgICAgbV9z
dGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IHN0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOwogCi0gICAg
aWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHlDaGFuZ2UpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKICAgICAgICAgbV9zdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKIAog
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UpKQogICAg
ICAgICBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7
CiAjZW5kaWYKIAotICAgIG1fY2hhbmdlRmxhZ3MgfD0gZmxhZ3M7CisgICAgbV9jaGFuZ2VGbGFn
cy5hZGQoZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBs
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKICAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBhdHRlcm4pOwogCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hh
bmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsR3JhZGllbnRDaGFuZ2UpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgq
bV9zdGF0ZS5maWxsR3JhZGllbnQpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKICAgICAg
ICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqbV9zdGF0ZS5maWxsUGF0dGVybik7CiAKLSAgICBp
ZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpIHsK
KyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSkgewogI2lmIFVTRShDRykKICAgICAgICAgaWYgKG1fc3RhdGUuc2hhZG93c1Vz
ZUxlZ2FjeVJhZGl1cykKICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Q29sb3Ip
OwpAQCAtMjEzLDcxICsyMTUsNzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICAgICAgY29udGV4
dC5zZXRTaGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9z
dGF0ZS5zaGFkb3dDb2xvcik7CiAgICAgfQogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKQorICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFu
Z2UpKQogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRlLnN0cm9rZVRo
aWNrbmVzcyk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCiAgICAgICAgIGNv
bnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKG1fc3RhdGUudGV4dERyYXdpbmdNb2RlKTsKIAotICAg
IGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hh
bmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VDb2xvckNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobV9z
dGF0ZS5zdHJva2VDb2xvcik7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCiAgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9yKTsKIAotICAgIGlmIChtX2NoYW5nZUZs
YWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNo
YW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9zdGF0ZS5zdHJva2VTdHls
ZSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
UnVsZUNoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxSdWxlKG1f
c3RhdGUuZmlsbFJ1bGUpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6QWxwaGFDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRBbHBo
YShtX3N0YXRlLmFscGhhKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgfCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWluc0FueSh7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpCiAgICAgICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIG1fc3RhdGUuYmxlbmRN
b2RlKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKSkKICAgICAgICAgY29udGV4
dC5zZXRTaG91bGRBbnRpYWxpYXMobV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMpOwogCi0gICAgaWYg
KG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHND
aGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRTaG91bGRT
bW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKIAotICAgIGlmIChtX2NoYW5n
ZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
c0NoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKICAgICAgICAgY29udGV4
dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNl
TWFza0NoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2sobV9zdGF0
ZS5kcmF3THVtaW5hbmNlTWFzayk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5Q2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAKICNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5n
ZSkpCiAgICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VEYXJr
QXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNo
YW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdl
LWZsYWdzIiwgbV9jaGFuZ2VGbGFncy50b1JhdygpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdz
ICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVu
dENoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLWdyYWRpZW50IiwgbV9z
dGF0ZS5zdHJva2VHcmFkaWVudC5nZXQoKSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKQorICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUuc3Ry
b2tlUGF0dGVybi5nZXQoKSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1ncmFkaWVudCIsIG1fc3RhdGUuZmlsbEdyYWRpZW50Lmdl
dCgpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxQYXR0ZXJuQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiZmlsbC1wYXR0ZXJuIiwgbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSk7CiAKLSAgICBpZiAo
bV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpIHsKKyAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93
Q2hhbmdlKSkgewogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1ibHVyIiwgbV9zdGF0
ZS5zaGFkb3dCbHVyKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctb2Zmc2V0Iiwg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQpOwogI2lmIFVTRShDRykKQEAgLTI4NSw1MCArMjg3LDUwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNv
bnN0CiAjZW5kaWYKICAgICB9CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCiAg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKICAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdN
b2RlKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUNvbG9yQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic3Ryb2tlLWNvbG9yIiwgbV9zdGF0ZS5zdHJva2VDb2xvcik7CiAKLSAgICBpZiAobV9jaGFu
Z2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNo
YW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmls
bENvbG9yKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVN0eWxlQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic3Ryb2tlLXN0eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7CiAKLSAgICBpZiAobV9j
aGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkKKyAgICBp
ZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVD
aGFuZ2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmls
bFJ1bGUpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
QWxwaGFDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIs
IG1fc3RhdGUuYWxwaGEpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Up
KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIsIG1fc3RhdGUu
Y29tcG9zaXRlT3BlcmF0b3IpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQogICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBtX3N0YXRlLmJsZW5kTW9kZSk7CiAKLSAgICBpZiAo
bV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFu
Z2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxk
LWFudGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKIAotICAgIGlmIChtX2NoYW5n
ZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKQor
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTbW9vdGhGb250c0NoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNt
b290aC1mb250cyIsIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOwogCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQogICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKQorICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtc0NoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy1p
Z25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5j
ZU1hc2tDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7CiAK
ICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFy
YW5jZUNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRhcmstYXBwZWFyYW5j
ZSIsIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGZhOWU4
NDhkMmIzZGQxNzc2YjIzMDM3OGE4YWZmNjk2ZGI0NDQ3MmIuLjc1MjIyYzFiYzM3OGY1MzI3ZjNk
NGZhMTgxNzQ4MGQ4NzlmYTIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
UGF0dGVybi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogI2lmIFVTRShDRykKIHR5
cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKQEAgLTE3MSw3
ICsxNzIsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAgICAgICBVc2VEYXJr
QXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIyLAogI2VuZGlmCiAgICAg
fTsKLSAgICB0eXBlZGVmIHVpbnQzMl90IFN0YXRlQ2hhbmdlRmxhZ3M7CisgICAgdHlwZWRlZiBP
cHRpb25TZXQ8Q2hhbmdlPiBTdGF0ZUNoYW5nZUZsYWdzOwogCiAgICAgUmVmUHRyPEdyYWRpZW50
PiBzdHJva2VHcmFkaWVudDsKICAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCA3NTFlOTY1NzQ0
ZDg1YWQxNmQ0ZGE5Zjg4YzYxOWZkZjk0NzI2ZmFjLi4wMDdlNTkwMmQ5NTk2YmI2NTdlYmNmOThh
OWUzYTYxNTU1Y2E5ODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgUGF0dGVybiBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFBhdHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSk7Ci0gICAgflBhdHRlcm4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVy
bigpOwogCiAgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdl
LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggZDQ0MzdlM2Q0MWJlMTIyY2M4
OTA2NTI0N2M5MjIyNmU3ODFkYzc3Yi4uYTIxNzdkN2NiYjdmNGI0NjM2OTdkNGU0MGNkNjA2NDc4
N2Y5NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTc5LDkgKzc5LDEzIEBAIHB1Ymxp
YzoKIAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAogICAgIFdURjo6Q1N0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIHZvaWQgZHVtcCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0PiBkZWNvZGUoRGVjb2Rl
ciYpOworCisKIHByaXZhdGU6CiAgICAgSXRlbSYgYXBwZW5kKFJlZjxJdGVtPiYmIGl0ZW0pCiAg
ICAgewpAQCAtMTAyLDYgKzEwNiwzOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8SXRlbT4+
IG1fbGlzdDsKIH07CiAKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGlzcGxheUxp
c3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG1fbGlzdC5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9saXN0KQorICAgICAgICBlbmNvZGVyIDw8IGl0ZW0uZ2V0KCk7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxEaXNwbGF5TGlzdD4gRGlzcGxheUxpc3Q6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpdGVtQ291bnQ7
CisgICAgZGVjb2RlciA+PiBpdGVtQ291bnQ7CisgICAgaWYgKCFpdGVtQ291bnQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdDsKKwor
ICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaXRlbUNvdW50OyBpKyspIHsKKyAgICAgICAg
YXV0byBpdGVtID0gSXRlbTo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAvLyBGSVhNRTogT25j
ZSB3ZSBjYW4gZGVjb2RlIGFsbCB0eXBlcywgZmFpbGluZyB0byBkZWNvZGUgYW4gaXRlbSBzaG91
bGQgdHVybiBpbnRvIGEgZGVjb2RlIGZhaWx1cmUuCisgICAgICAgIC8vIEZvciBub3csIHdlIGp1
c3QgaGF2ZSB0byBpZ25vcmUgaXQuCisgICAgICAgIGlmICghaXRlbSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBkaXNwbGF5TGlzdC5hcHBlbmQoV1RGTW92ZSgqaXRlbSkpOworICAg
IH0KKworICAgIHJldHVybiBkaXNwbGF5TGlzdDsKK30KKwogfSAvLyBEaXNwbGF5TGlzdAogCiBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
aW5kZXggZDM5YjY2MmE0YWE4YWI2NDZiMzMxNzAxMDJkYjZmYzhjZDgyYTE1MC4uOTFjYmI5ZmVm
MmYyM2Y2MDkyODYzYzAyNDBmZTczZWRkY2QzMjViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIFVTRShDRykKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTQ0LDYgKzQ4LDEz
IEBAIFdURjo6Q1N0cmluZyBJdGVtOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB9CiAjZW5kaWYKIAor
SXRlbTo6SXRlbShJdGVtVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUpCit7Cit9CisKK0l0
ZW06On5JdGVtKCkgPSBkZWZhdWx0OworCiBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3Qg
SXRlbSYgaXRlbSkKIHsKICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7CkBAIC0xNjIsNiArMTcz
LDIwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3aW5nSXRlbSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0RyYXdpbmdJdGVtOjpE
cmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQorICAgIDogSXRlbSh0eXBlKQoreworfQorCitEcmF3
aW5nSXRlbTo6fkRyYXdpbmdJdGVtKCkgPSBkZWZhdWx0OworCitTYXZlOjpTYXZlKCkKKyAgICA6
IEl0ZW0oSXRlbVR5cGU6OlNhdmUpCit7Cit9CisKK1NhdmU6On5TYXZlKCkgPSBkZWZhdWx0Owor
CiB2b2lkIFNhdmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAg
ICBjb250ZXh0LnNhdmUoKTsKQEAgLTE3MywxMSArMTk4LDI3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTYXZlJiBpdGVtKQogICAgIHJldHVy
biB0czsKIH0KIAorUmVzdG9yZTo6UmVzdG9yZSgpCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpSZXN0
b3JlKQoreworfQorCitSZXN0b3JlOjp+UmVzdG9yZSgpID0gZGVmYXVsdDsKKwogdm9pZCBSZXN0
b3JlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4
dC5yZXN0b3JlKCk7CiB9CiAKK1RyYW5zbGF0ZTo6VHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkp
CisgICAgOiBJdGVtKEl0ZW1UeXBlOjpUcmFuc2xhdGUpCisgICAgLCBtX3goeCkKKyAgICAsIG1f
eSh5KQoreworfQorCitUcmFuc2xhdGU6On5UcmFuc2xhdGUoKSA9IGRlZmF1bHQ7CisKIHZvaWQg
VHJhbnNsYXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
Y29udGV4dC50cmFuc2xhdGUobV94LCBtX3kpOwpAQCAtMTkxLDYgKzIzMiwxNCBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBp
dGVtKQogICAgIHJldHVybiB0czsKIH0KIAorUm90YXRlOjpSb3RhdGUoZmxvYXQgYW5nbGUpCisg
ICAgOiBJdGVtKEl0ZW1UeXBlOjpSb3RhdGUpCisgICAgLCBtX2FuZ2xlKGFuZ2xlKQoreworfQor
CitSb3RhdGU6On5Sb3RhdGUoKSA9IGRlZmF1bHQ7CisKIHZvaWQgUm90YXRlOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5yb3RhdGUobV9hbmds
ZSk7CkBAIC0yMDMsNiArMjUyLDE0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBSb3RhdGUmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitT
Y2FsZTo6U2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgIDogSXRlbShJdGVtVHlwZTo6
U2NhbGUpCisgICAgLCBtX3NpemUoc2l6ZSkKK3sKK30KKworU2NhbGU6On5TY2FsZSgpID0gZGVm
YXVsdDsKKwogdm9pZCBTY2FsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogewogICAgIGNvbnRleHQuc2NhbGUobV9zaXplKTsKQEAgLTIyMSw2ICsyNzgsOCBAQCBDb25j
YXRlbmF0ZUNUTTo6Q29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCiB7CiB9CiAKK0NvbmNhdGVuYXRlQ1RNOjp+Q29uY2F0ZW5hdGVDVE0oKSA9IGRlZmF1bHQ7
CisKIHZvaWQgQ29uY2F0ZW5hdGVDVE06OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBjb250ZXh0LmNvbmNhdENUTShtX3RyYW5zZm9ybSk7CkBAIC0yMzMsNiAr
MjkyLDIwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1NldFN0YXRl
OjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorICAgIDogSXRlbShJdGVtVHlwZTo6
U2V0U3RhdGUpCisgICAgLCBtX3N0YXRlKHN0YXRlLCBmbGFncykKK3sKK30KKworU2V0U3RhdGU6
OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkK
KyAgICA6IEl0ZW0oSXRlbVR5cGU6OlNldFN0YXRlKQorICAgICwgbV9zdGF0ZShzdGF0ZUNoYW5n
ZSkKK3sKK30KKworU2V0U3RhdGU6On5TZXRTdGF0ZSgpID0gZGVmYXVsdDsKKwogdm9pZCBTZXRT
dGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIG1fc3Rh
dGUuYXBwbHkoY29udGV4dCk7CkBAIC01NTEsNiArNjI0LDE1IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKICAg
ICByZXR1cm4gdHM7CiB9CiAKK0RyYXdSZWN0OjpEcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpE
cmF3UmVjdCkKKyAgICAsIG1fcmVjdChyZWN0KQorICAgICwgbV9ib3JkZXJUaGlja25lc3MoYm9y
ZGVyVGhpY2tuZXNzKQoreworfQorCitEcmF3UmVjdDo6fkRyYXdSZWN0KCkgPSBkZWZhdWx0Owor
CiB2b2lkIERyYXdSZWN0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgY29udGV4dC5kcmF3UmVjdChtX3JlY3QsIG1fYm9yZGVyVGhpY2tuZXNzKTsKQEAgLTY0
Myw2ICs3MjUsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorRHJhd1Bh
dGg6OkRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlw
ZTo6RHJhd1BhdGgpCisgICAgLCBtX3BhdGgocGF0aCkKK3sKK30KKworRHJhd1BhdGg6On5EcmF3
UGF0aCgpID0gZGVmYXVsdDsKKwogdm9pZCBEcmF3UGF0aDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSBjb25zdAogewogI2lmIFVTRShDRykKQEAgLTcwNSw2ICs3OTUsMTQgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1
c1JpbmdSZWN0cyYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0ZpbGxSZWN0OjpGaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6Rmls
bFJlY3QpCisgICAgLCBtX3JlY3QocmVjdCkKK3sKK30KKworRmlsbFJlY3Q6On5GaWxsUmVjdCgp
ID0gZGVmYXVsdDsKKwogdm9pZCBGaWxsUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0KTsKQEAgLTcxNyw2ICs4
MTUsMTUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEZpbGxSZWN0JiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorRmlsbFJlY3RXaXRoQ29s
b3I6OkZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKQor
ICAgICwgbV9yZWN0KHJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQoreworfQorCitGaWxsUmVj
dFdpdGhDb2xvcjo6fkZpbGxSZWN0V2l0aENvbG9yKCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxS
ZWN0V2l0aENvbG9yOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgY29udGV4dC5maWxsUmVjdChtX3JlY3QsIG1fY29sb3IpOwpAQCAtNzQzLDYgKzg1MCwxNyBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitGaWxsQ29tcG9z
aXRlZFJlY3Q6OkZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0KQorICAgICwg
bV9yZWN0KHJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQorICAgICwgbV9vcChvcCkKKyAgICAs
IG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKK3sKK30KKworRmlsbENvbXBvc2l0ZWRSZWN0Ojp+Rmls
bENvbXBvc2l0ZWRSZWN0KCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxDb21wb3NpdGVkUmVjdDo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmls
bFJlY3QobV9yZWN0LCBtX2NvbG9yLCBtX29wLCBtX2JsZW5kTW9kZSk7CkBAIC03ODYsNiArOTA0
LDE0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlCiAgICAgcmV0dXJuIHRzOwogfQogCitGaWxs
UGF0aDo6RmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpGaWxsUGF0aCkKKyAgICAsIG1fcGF0aChwYXRoKQoreworfQorCitGaWxsUGF0aDo6fkZp
bGxQYXRoKCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxQYXRoOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsUGF0aChtX3BhdGgpOwpAQCAt
ODczLDYgKzk5OSwxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0Ns
ZWFyUmVjdDo6Q2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICA6IERyYXdpbmdJ
dGVtKEl0ZW1UeXBlOjpDbGVhclJlY3QpCisgICAgLCBtX3JlY3QocmVjdCkKK3sKK30KKworQ2xl
YXJSZWN0Ojp+Q2xlYXJSZWN0KCkgPSBkZWZhdWx0OworCiB2b2lkIENsZWFyUmVjdDo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuY2xlYXJSZWN0
KG1fcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmYjczYTY3ODMz
ZjJkODM4MjhkOTE5NzRjYjFhOGViZjA5ZDFkOTQ1Li5kYzQyZmZlYWVlYWEwYTQ1NWZkMDg3YTg0
NTUwYTlmMzVmODhkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM1
LDEwICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRT
dHJlYW07CiB9CkBAIC00OSw3ICs0NSw3IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsK
IAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotZW51bSBjbGFzcyBJdGVtVHlwZSB7CitlbnVt
IGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBSZXN0b3JlLAogICAg
IFRyYW5zbGF0ZSwKQEAgLTEwNywxMiArMTAzLDggQEAgY2xhc3MgSXRlbSA6IHB1YmxpYyBSZWZD
b3VudGVkPEl0ZW0+IHsKIHB1YmxpYzoKICAgICBJdGVtKCkgPSBkZWxldGU7CiAKLSAgICBJdGVt
KEl0ZW1UeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgfkl0ZW0oKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSXRlbShJ
dGVtVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SXRlbSgpOwogCiAgICAgSXRl
bVR5cGUgdHlwZSgpIGNvbnN0CiAgICAgewpAQCAtMTM0LDE2ICsxMjYsMTYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzU3RhdGVJdGVtVHlwZShJdGVtVHlwZSBpdGVtVHlwZSkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFRy
YW5zbGF0ZToKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFJvdGF0ZToKLSAgICAgICAgY2FzZSBJ
dGVtVHlwZTo6IFNjYWxlOgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjogQ29uY2F0ZW5hdGVDVE06
Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OiBTZXRTdGF0ZToKLSAgICAgICAgY2FzZSBJdGVtVHlw
ZTo6IFNldExpbmVDYXA6Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OiBTZXRMaW5lRGFzaDoKLSAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6IFNldExpbmVKb2luOgotICAgICAgICBjYXNlIEl0ZW1UeXBl
OjogU2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IENsZWFyU2hhZG93Ogor
ICAgICAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6CisgICAgICAgIGNhc2UgSXRlbVR5cGU6
OlJvdGF0ZToKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIGNhc2UgSXRl
bVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToK
KyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKKyAgICAgICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TGluZURhc2g6CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgorICAg
ICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgorICAgICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU2LDE2ICsxNDgsMTggQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgc3RhdGljIHNpemVfdCBzaXplSW5CeXRlcyhjb25zdCBJdGVtJik7CiAK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxJdGVtPj4g
ZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBJdGVtVHlwZSBtX3R5cGU7CiB9Owog
CiBjbGFzcyBEcmF3aW5nSXRlbSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQotICAgICAgICA6IEl0ZW0odHlwZSkKLSAgICB7
Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IERyYXdpbmdJdGVtKEl0ZW1UeXBl
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdpbmdJdGVtKCk7CiAKICAgICB2
b2lkIHNldEV4dGVudChjb25zdCBGbG9hdFJlY3QmIHIpIHsgbV9leHRlbnQgPSByOyB9CiAgICAg
Y29uc3QgRmxvYXRSZWN0JiBleHRlbnQoKSBjb25zdCB7IHJldHVybiBtX2V4dGVudC52YWx1ZSgp
OyB9CkBAIC0xODksMjEgKzE4Myw0MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNhdmUpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNhdmUo
KTsKKwogICAgIC8vIEluZGV4IGluIHRoZSBkaXNwbGF5IGxpc3Qgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgUmVzdG9yZSBpdGVtLiAwIGlmIHVubWF0Y2hlZC4KICAgICBzaXplX3QgcmVzdG9yZUluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0b3JlSW5kZXg7IH0KICAgICB2b2lkIHNldFJlc3RvcmVJ
bmRleChzaXplX3QgaW5kZXgpIHsgbV9yZXN0b3JlSW5kZXggPSBpbmRleDsgfQogCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8U2F2ZT4+IGRlY29kZShE
ZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgU2F2ZSgpCi0gICAgICAgIDogSXRlbShJdGVtVHlw
ZTo6U2F2ZSkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIFNhdmUoKTsKIAogICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAg
c2l6ZV90IG1fcmVzdG9yZUluZGV4IHsgMCB9OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgU2F2ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9yZXN0b3JlSW5kZXgpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFNhdmU+PiBTYXZlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVzdG9yZUluZGV4Owor
ICAgIGRlY29kZXIgPj4gcmVzdG9yZUluZGV4OworICAgIGlmICghcmVzdG9yZUluZGV4KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gRklYTUU6IFZhbGlkYXRlIHJlc3Rv
cmVJbmRleD8gQnV0IHdlIGRvbid0IGhhdmUgdGhlIGxpc3QgY29udGV4dCBoZXJlLgorICAgIGF1
dG8gc2F2ZSA9IFNhdmU6OmNyZWF0ZSgpOworICAgIHNhdmUtPnNldFJlc3RvcmVJbmRleChzdGF0
aWNfY2FzdDxzaXplX3Q+KCpyZXN0b3JlSW5kZXgpKTsKKyAgICByZXR1cm4gc2F2ZTsKK30KKwog
Y2xhc3MgUmVzdG9yZSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJl
c3RvcmU+IGNyZWF0ZSgpCkBAIC0yMTEsMTUgKzIyNywyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlc3RvcmUpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflJlc3RvcmUoKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8UmVmPFJlc3RvcmU+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgot
ICAgIFJlc3RvcmUoKQotICAgICAgICA6IEl0ZW0oSXRlbVR5cGU6OlJlc3RvcmUpCi0gICAgewot
ICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZXN0b3JlKCk7CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgUmVzdG9yZTo6ZW5jb2RlKEVuY29kZXImKSBjb25zdAoreworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFJlc3RvcmU+PiBSZXN0b3JlOjpkZWNv
ZGUoRGVjb2RlciYpCit7CisgICAgcmV0dXJuIFJlc3RvcmU6OmNyZWF0ZSgpOworfQorCiBjbGFz
cyBUcmFuc2xhdGUgOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUcmFu
c2xhdGU+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KQpAQCAtMjI3LDE2ICsyNTYsMTYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2xhdGUoeCwgeSkpOwogICAg
IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflRyYW5zbGF0ZSgpOworCiAgICAgZmxv
YXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQogICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVy
biBtX3k7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
UmVmPFRyYW5zbGF0ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgVHJhbnNs
YXRlKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6VHJhbnNsYXRl
KQotICAgICAgICAsIG1feCh4KQotICAgICAgICAsIG1feSh5KQotICAgIHsKLSAgICB9CisgICAg
V0VCQ09SRV9FWFBPUlQgVHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMjQ0LDYgKzI3Mywy
OSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1feTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+Cit2b2lkIFRyYW5zbGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBtX3g7CisgICAgZW5jb2RlciA8PCBtX3k7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8VHJhbnNsYXRlPj4gVHJhbnNsYXRlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxmbG9hdD4geDsKKyAgICBkZWNvZGVy
ID4+IHg7CisgICAgaWYgKCF4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8ZmxvYXQ+IHk7CisgICAgZGVjb2RlciA+PiB5OworICAgIGlmICgheSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBUcmFuc2xhdGU6OmNyZWF0ZSgq
eCwgKnkpOworfQorCiBjbGFzcyBSb3RhdGUgOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSb3RhdGU+IGNyZWF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykKQEAgLTI1MSwy
MCArMzAzLDM4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUm90YXRl
KGFuZ2xlSW5SYWRpYW5zKSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
Um90YXRlKCk7CisKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5nbGU7IH0K
IAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFJvdGF0
ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgUm90YXRlKGZsb2F0IGFuZ2xl
KQotICAgICAgICA6IEl0ZW0oSXRlbVR5cGU6OlJvdGF0ZSkKLSAgICAgICAgLCBtX2FuZ2xlKGFu
Z2xlKQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgUm90YXRlKGZsb2F0IGFuZ2xl
KTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBmbG9hdCBtX2FuZ2xlOyAvLyBJbiByYWRpYW5zLgogfTsKIAordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgUm90YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fYW5nbGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitP
cHRpb25hbDxSZWY8Um90YXRlPj4gUm90YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBPcHRpb25hbDxmbG9hdD4gYW5nbGU7CisgICAgZGVjb2RlciA+PiBhbmdsZTsKKyAgICBp
ZiAoIWFuZ2xlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFJv
dGF0ZTo6Y3JlYXRlKCphbmdsZSk7Cit9CisKIGNsYXNzIFNjYWxlIDogcHVibGljIEl0ZW0gewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8U2NhbGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUpCkBAIC0yNzIsMjAgKzM0MiwzOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNjYWxlKHNpemUpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5TY2FsZSgpOworCiAgICAgY29uc3QgRmxvYXRTaXplJiBhbW91bnQoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UmVmPFNjYWxlPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBTY2FsZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6U2NhbGUpCi0g
ICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBT
Y2FsZShjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgbV9zaXplOwogfTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2NhbGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9zaXplOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorT3B0aW9uYWw8UmVmPFNjYWxlPj4gU2NhbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2NhbGU7CisgICAgZGVjb2RlciA+PiBzY2Fs
ZTsKKyAgICBpZiAoIXNjYWxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFNjYWxlOjpjcmVhdGUoKnNjYWxlKTsKK30KKwogY2xhc3MgQ29uY2F0ZW5hdGVDVE0g
OiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDb25jYXRlbmF0ZUNUTT4g
Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQpAQCAtMjkzLDIyICszODEsNTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb25jYXRlbmF0ZUNUTSht
YXRyaXgpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25jYXRlbmF0
ZUNUTSgpOworCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxSZWY8Q29uY2F0ZW5hdGVDVE0+PiBkZWNvZGUoRGVjb2RlciYpOworCiBw
cml2YXRlOgotICAgIENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+Cit2b2lkIENvbmNhdGVuYXRlQ1RNOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG1fdHJhbnNmb3JtOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorT3B0aW9uYWw8UmVmPENvbmNhdGVuYXRlQ1RNPj4gQ29uY2F0ZW5hdGVDVE06OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gdHJh
bnNmb3JtOworICAgIGRlY29kZXIgPj4gdHJhbnNmb3JtOworICAgIGlmICghdHJhbnNmb3JtKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIENvbmNhdGVuYXRlQ1RN
OjpjcmVhdGUoKnRyYW5zZm9ybSk7Cit9CisKIGNsYXNzIFNldFN0YXRlIDogcHVibGljIEl0ZW0g
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2V0U3RhdGU+IGNyZWF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzIGZsYWdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2V0U3RhdGUo
c3RhdGUsIGZsYWdzKSk7CiAgICAgfQorCisgICAgc3RhdGljIFJlZjxTZXRTdGF0ZT4gY3JlYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNldFN0YXRlKHN0YXRlQ2hhbmdlKSk7CisgICAg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2V0U3RhdGUoKTsKICAgICAKICAgICBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlOyB9CiAKQEAgLTMxOSwxOCArNDM2LDc3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBidWlsZGVyU3RhdGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKICAgICBzdGF0
aWMgdm9pZCBkdW1wU3RhdGVDaGFuZ2VzKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8U2V0U3Rh
dGU+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIFNldFN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAgIDogSXRlbShJdGVtVHlwZTo6U2V0U3RhdGUpCi0gICAg
ICAgICwgbV9zdGF0ZShzdGF0ZSwgZmxhZ3MpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYpOwogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlIG1fc3RhdGU7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTZXRT
dGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBt
X3N0YXRlLm1fY2hhbmdlRmxhZ3M7CisKKyAgICAvLyBGSVhNRTogRW5jb2RlIHRoZSBvdGhlciBz
dGF0ZSBjaGFuZ2VzLgorCisgICAgaWYgKG1fc3RhdGUubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQorICAgICAgICBlbmNvZGVy
IDw8IG1fc3RhdGUubV9zdGF0ZS5zdHJva2VDb2xvcjsKKworICAgIGlmIChtX3N0YXRlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkp
CisgICAgICAgIGVuY29kZXIgPDwgbV9zdGF0ZS5tX3N0YXRlLmZpbGxDb2xvcjsKKworICAgIGlm
IChtX3N0YXRlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFs
cGhhQ2hhbmdlKSkKKyAgICAgICAgZW5jb2RlciA8PCBtX3N0YXRlLm1fc3RhdGUuYWxwaGE7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8U2V0U3RhdGU+PiBTZXRT
dGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8R3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOworICAgIGRlY29kZXIg
Pj4gY2hhbmdlRmxhZ3M7CisgICAgaWYgKCFjaGFuZ2VGbGFncykKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdl
OworICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7CisKKyAgICBp
ZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPENvbG9yPiBzdHJva2VD
b2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsKKyAgICAgICAgaWYgKCFzdHJv
a2VDb2xvcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsKKyAgICB9CisKKyAg
ICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxDb2xvcj4gZmlsbENv
bG9yOworICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKKyAgICAgICAgaWYgKCFmaWxsQ29s
b3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hh
bmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xvcjsKKyAgICB9CisKKyAgICBpZiAoc3Rh
dGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxw
aGFDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGZsb2F0PiBhbHBoYTsKKyAgICAgICAgZGVj
b2RlciA+PiBhbHBoYTsKKyAgICAgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5hbHBoYSA9ICphbHBo
YTsKKyAgICB9CisKKyAgICByZXR1cm4gU2V0U3RhdGU6OmNyZWF0ZShzdGF0ZUNoYW5nZSk7Cit9
CisKIGNsYXNzIFNldExpbmVDYXAgOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxTZXRMaW5lQ2FwPiBjcmVhdGUoTGluZUNhcCBsaW5lQ2FwKQpAQCAtNzQxLDE2ICs5MTcs
MTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UmVjdChyZWN0
LCBib3JkZXJUaGlja25lc3MpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5EcmF3UmVjdCgpOworCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KICAgICBmbG9hdCBib3JkZXJUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX2JvcmRl
clRoaWNrbmVzczsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxSZWY8RHJhd1JlY3Q+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIERy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQotICAg
ICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UmVjdCkKLSAgICAgICAgLCBtX3JlY3Qo
cmVjdCkKLSAgICAgICAgLCBtX2JvcmRlclRoaWNrbmVzcyhib3JkZXJUaGlja25lc3MpCi0gICAg
ewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCBib3JkZXJUaGlja25lc3MpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQpA
QCAtNzU5LDYgKzkzNSwzNCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fYm9yZGVyVGhpY2tuZXNz
OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd1JlY3Q6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZWN0OworICAgIGVu
Y29kZXIgPDwgbV9ib3JkZXJUaGlja25lc3M7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitPcHRpb25hbDxSZWY8RHJhd1JlY3Q+PiBEcmF3UmVjdDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OworICAgIGRlY29kZXIgPj4gcmVj
dDsKKyAgICBpZiAoIXJlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxmbG9hdD4gYm9yZGVyVGhpY2tuZXNzOworICAgIGRlY29kZXIgPj4gYm9yZGVyVGhp
Y2tuZXNzOworICAgIGlmICghYm9yZGVyVGhpY2tuZXNzKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgYXV0byBpdGVtID0gRHJhd1JlY3Q6OmNyZWF0ZSgqcmVjdCwgKmJvcmRl
clRoaWNrbmVzcyk7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0
ZW0uZ2V0KCkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0
ZW07Cit9CisKIGNsYXNzIERyYXdMaW5lIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPERyYXdMaW5lPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQx
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC04NzgsMTQgKzEwODIsMTUgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0aChwYXRoKSk7CiAgICAgfQog
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd1BhdGgoKTsKKwogICAgIGNvbnN0IFBh
dGgmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdQYXRoPj4gZGVjb2RlKERlY29kZXIm
KTsKKwogcHJpdmF0ZToKLSAgICBEcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQotICAgICAgICA6
IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0aCkKLSAgICAgICAgLCBtX3BhdGgocGF0aCkK
LSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdQYXRoKGNvbnN0IFBhdGgmKTsK
IAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAg
LTg5NCw2ICsxMDk5LDI4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUGF0aCBtX3BhdGg7CiB9Owog
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3UGF0aDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3BhdGg7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BhdGg+PiBEcmF3UGF0aDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKKyAgICBkZWNv
ZGVyID4+IHBhdGg7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgYXV0byBpdGVtID0gRHJhd1BhdGg6OmNyZWF0ZSgqcGF0aCk7CisKKyAgICBpZiAo
IWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0ZW0uZ2V0KCkpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0ZW07Cit9CisKIGNsYXNzIERyYXdGb2N1
c1JpbmdQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PERyYXdGb2N1c1JpbmdQYXRoPiBjcmVhdGUoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgs
IGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtOTY1LDE0ICsxMTkyLDE1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsbFJlY3QocmVjdCkpOwog
ICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkZpbGxSZWN0KCk7CisKICAgICBG
bG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RmlsbFJlY3Q+PiBkZWNvZGUoRGVj
b2RlciYpOworCiBwcml2YXRlOgotICAgIEZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
LSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbFJlY3QpCi0gICAgICAgICwgbV9y
ZWN0KHJlY3QpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBGaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KQEAgLTk4MCw2
ICsxMjA4LDI4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZpbGxSZWN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVjdDsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxGaWxsUmVjdD4+IEZpbGxSZWN0OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAgZGVjb2Rl
ciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGF1dG8gaXRlbSA9IEZpbGxSZWN0OjpjcmVhdGUoKnJlY3QpOworCisgICAgaWYgKCFk
ZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQorCiAvLyBGSVhNRTogTWFrZSB0
aGVzZSBpbmhlcml0IGZyb20gRmlsbFJlY3QgcHJvcGVyLgogY2xhc3MgRmlsbFJlY3RXaXRoQ29s
b3IgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgpAQCAtOTg4LDE2ICsxMjM4LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsbFJlY3RXaXRoQ29sb3Io
cmVjdCwgY29sb3IpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWxs
UmVjdFdpdGhDb2xvcigpOworCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3JlY3Q7IH0KICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
OyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxG
aWxsUmVjdFdpdGhDb2xvcj4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgRmls
bFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Ip
Ci0gICAgICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKQotICAg
ICAgICAsIG1fcmVjdChyZWN0KQotICAgICAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgewotICAg
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBDb2xvciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtMTAw
Niw2ICsxMjU2LDM0IEBAIHByaXZhdGU6CiAgICAgQ29sb3IgbV9jb2xvcjsKIH07CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZpbGxSZWN0V2l0aENvbG9yOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVjdDsKKyAgICBlbmNvZGVy
IDw8IG1fY29sb3I7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8
RmlsbFJlY3RXaXRoQ29sb3I+PiBGaWxsUmVjdFdpdGhDb2xvcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OworICAgIGRlY29kZXIgPj4g
cmVjdDsKKyAgICBpZiAoIXJlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAo
IWNvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVtID0g
RmlsbFJlY3RXaXRoQ29sb3I6OmNyZWF0ZSgqcmVjdCwgKmNvbG9yKTsKKworICAgIGlmICghZGVj
b2RlRm9yRHJhd2luZ0l0ZW0oZGVjb2RlciwgaXRlbS5nZXQoKSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gaXRlbTsKK30KKwogY2xhc3MgRmlsbFJlY3RXaXRo
R3JhZGllbnQgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
RmlsbFJlY3RXaXRoR3JhZGllbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRp
ZW50JiBncmFkaWVudCkKQEAgLTEwMzcsMjAgKzEzMTUsMTggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxsQ29tcG9zaXRlZFJlY3QocmVjdCwgY29sb3IsIG9wLCBi
bGVuZE1vZGUpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWxsQ29t
cG9zaXRlZFJlY3QoKTsKKwogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZWN0OyB9CiAgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsg
fQogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9vcDsgfQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Js
ZW5kTW9kZTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxSZWY8RmlsbENvbXBvc2l0ZWRSZWN0Pj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToK
LSAgICBGaWxsQ29tcG9zaXRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQotICAg
ICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3QpCi0gICAgICAg
ICwgbV9yZWN0KHJlY3QpCi0gICAgICAgICwgbV9jb2xvcihjb2xvcikKLSAgICAgICAgLCBtX29w
KG9wKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICB7Ci0gICAgfQorICAg
IFdFQkNPUkVfRVhQT1JUIEZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVjdDsgfQpAQCAtMTA2MSw2ICsxMzM3LDQ2IEBAIHByaXZhdGU6CiAgICAgQmxl
bmRNb2RlIG1fYmxlbmRNb2RlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RmlsbENvbXBvc2l0ZWRSZWN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fcmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7CisgICAgZW5jb2Rl
ciA8PCBtX29wOworICAgIGVuY29kZXIgPDwgbV9ibGVuZE1vZGU7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RmlsbENvbXBvc2l0ZWRSZWN0Pj4gRmlsbENvbXBv
c2l0ZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IHJlY3Q7CisgICAgZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAg
ICBkZWNvZGVyID4+IGNvbG9yOworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gb3A7CisgICAgZGVj
b2RlciA+PiBvcDsKKyAgICBpZiAoIW9wKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CisgICAgZGVjb2RlciA+PiBibGVu
ZE1vZGU7CisgICAgaWYgKCFibGVuZE1vZGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBhdXRvIGl0ZW0gPSBGaWxsQ29tcG9zaXRlZFJlY3Q6OmNyZWF0ZSgqcmVjdCwgKmNv
bG9yLCAqb3AsICpibGVuZE1vZGUpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShk
ZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBpdGVtOworfQorCiBjbGFzcyBGaWxsUm91bmRlZFJlY3QgOiBwdWJsaWMgRHJhd2lu
Z0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RmlsbFJvdW5kZWRSZWN0PiBjcmVhdGUo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQpAQCAtMTEyNCwxNCArMTQ0MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZpbGxQYXRoKHBhdGgpKTsKICAgICB9CiAKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5GaWxsUGF0aCgpOworCiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxSZWY8RmlsbFBhdGg+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRl
OgotICAgIEZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0o
SXRlbVR5cGU6OkZpbGxQYXRoKQotICAgICAgICAsIG1fcGF0aChwYXRoKQotICAgIHsKLSAgICB9
CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsbFBhdGgoY29uc3QgUGF0aCYpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KQEAgLTExMzksNiArMTQ1Niwy
OCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFBhdGggbV9wYXRoOwogfTsKIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgRmlsbFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9wYXRoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgorT3B0aW9uYWw8UmVmPEZpbGxQYXRoPj4gRmlsbFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CisgICAgZGVjb2RlciA+PiBwYXRoOwor
ICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8g
aXRlbSA9IEZpbGxQYXRoOjpjcmVhdGUoKnBhdGgpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3
aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHJldHVybiBpdGVtOworfQorCiBjbGFzcyBGaWxsRWxsaXBzZSA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGaWxsRWxsaXBzZT4gY3JlYXRl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEyMzksMTQgKzE1NzgsMTUgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGVhclJlY3QocmVjdCkpOwogICAgIH0KIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNsZWFyUmVjdCgpOworCiAgICAgRmxvYXRSZWN0
IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPENsZWFyUmVjdD4+IGRlY29kZShEZWNvZGVyJik7
CisKIHByaXZhdGU6Ci0gICAgQ2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLSAgICAg
ICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6Q2xlYXJSZWN0KQotICAgICAgICAsIG1fcmVjdChy
ZWN0KQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgQ2xlYXJSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtMTI1NCw2ICsx
NTk0LDI4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CiAKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIENsZWFyUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitPcHRpb25hbDxSZWY8Q2xlYXJSZWN0Pj4gQ2xlYXJSZWN0OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAgZGVjb2Rl
ciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGF1dG8gaXRlbSA9IENsZWFyUmVjdDo6Y3JlYXRlKCpyZWN0KTsKKworICAgIGlmICgh
ZGVjb2RlRm9yRHJhd2luZ0l0ZW0oZGVjb2RlciwgaXRlbS5nZXQoKSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gaXRlbTsKK30KKwogI2lmIFVTRShDRykKIGNs
YXNzIEFwcGx5U3Ryb2tlUGF0dGVybiA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoKQEAgLTEzMTEs
NiArMTY3MywzMzMgQEAgcHJpdmF0ZToKIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIGNvbnN0IEl0ZW0mKTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBtX3R5cGU7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgSXRlbVR5cGU6
OlNhdmU6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8U2F2ZT4oKnRoaXMpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgorICAgICAgICBlbmNvZGVyIDw8
IGRvd25jYXN0PFJlc3RvcmU+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6VHJhbnNsYXRlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFRyYW5zbGF0ZT4o
KnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6CisgICAg
ICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Um90YXRlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFNj
YWxlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVu
YXRlQ1RNOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENvbmNhdGVuYXRlQ1RNPigqdGhp
cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgorICAgICAg
ICBlbmNvZGVyIDw8IGRvd25jYXN0PFNldFN0YXRlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlz
cGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBTZXRMaW5lQ2FwIik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgorICAgICAgICBX
VEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUg
U2V0TGluZURhc2giKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUpvaW46CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBj
YW5ub3QgeWV0IGVuY29kZSBTZXRMaW5lSm9pbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlM
aXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgU2V0TWl0ZXJMaW1pdCIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIENs
ZWFyU2hhZG93Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0
IGVuY29kZSBDbGlwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBP
dXQ6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5u
b3QgeWV0IGVuY29kZSBDbGlwT3V0Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXRUb1BhdGg6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0
ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBDbGlwT3V0VG9QYXRoIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgorICAgICAgICBXVEZMb2dBbHdheXMo
IkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgQ2xpcFBhdGgiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2Rl
IERyYXdHbHlwaHMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fu
bm90IHlldCBlbmNvZGUgRHJhd0ltYWdlIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdUaWxlZEltYWdlOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0
OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd1RpbGVkSW1hZ2UiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVu
Y29kZSBEcmF3VGlsZWRTY2FsZWRJbWFnZSIpOworICAgICAgICBicmVhazsKKyNpZiBVU0UoQ0cp
IHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5j
b2RlIGNhbm5vdCB5ZXQgZW5jb2RlIERyYXdOYXRpdmVJbWFnZSIpOworICAgICAgICBicmVhazsK
KyNlbmRpZgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgorICAgICAgICBXVEZMb2dB
bHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd1Bh
dHRlcm4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Cisg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1JlY3Q+KCp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBEcmF3TGluZSIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgorICAg
ICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBl
bmNvZGUgRHJhd0xpbmVzRm9yVGV4dCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRp
c3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd0RvdHNGb3JEb2N1
bWVudE1hcmtlciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxs
aXBzZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNh
bm5vdCB5ZXQgZW5jb2RlIERyYXdFbGxpcHNlIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXRoOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXRo
PigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1Jp
bmdQYXRoOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUg
Y2Fubm90IHlldCBlbmNvZGUgRHJhd0ZvY3VzUmluZ1BhdGgiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgorICAgICAgICBXVEZMb2dBbHdh
eXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd0ZvY3Vz
UmluZ1JlY3RzIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxSZWN0PigqdGhpcyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgorICAgICAgICBl
bmNvZGVyIDw8IGRvd25jYXN0PEZpbGxSZWN0V2l0aENvbG9yPigqdGhpcyk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgorICAgICAgICBX
VEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUg
RmlsbFJlY3RXaXRoR3JhZGllbnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxD
b21wb3NpdGVkUmVjdD4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUm91bmRlZFJlY3Q6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0
ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBGaWxsUm91bmRlZFJlY3QiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVu
Y29kZSBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUGF0aDoKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsUGF0
aD4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBz
ZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNhbm5v
dCB5ZXQgZW5jb2RlIEZpbGxFbGxpcHNlIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVJlY3Q6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0
ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBTdHJva2VSZWN0Iik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBTdHJva2VQYXRoIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVu
Y29kZSBTdHJva2VFbGxpcHNlIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OkNsZWFyUmVjdDoKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxDbGVhclJlY3Q+KCp0aGlz
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNh
bm5vdCB5ZXQgZW5jb2RlIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBFbmRU
cmFuc3BhcmVuY3lMYXllciIpOworICAgICAgICBicmVhazsKKyNpZiBVU0UoQ0cpCisgICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRp
c3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgQXBwbHlTdHJva2VQYXR0
ZXJuIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRl
cm46CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5u
b3QgeWV0IGVuY29kZSBBcHBseUZpbGxQYXR0ZXJuIik7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIEFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJdGVtVHlwZT4gaXRlbVR5cGU7CisgICAg
ZGVjb2RlciA+PiBpdGVtVHlwZTsKKyAgICBpZiAoIWl0ZW1UeXBlKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgc3dpdGNoICgqaXRlbVR5cGUpIHsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpTYXZlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gU2F2ZTo6ZGVjb2RlKGRlY29kZXIp
KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Cisg
ICAgICAgIGlmIChhdXRvIGl0ZW0gPSBSZXN0b3JlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgorICAgICAgICBp
ZiAoYXV0byBpdGVtID0gVHJhbnNsYXRlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gUm90YXRlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBTY2FsZTo6
ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2Fz
dDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5
cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gQ29uY2F0ZW5hdGVD
VE06OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFNldFN0YXRlOjpkZWNv
ZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0
ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZUNhcDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVj
b2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFNldExpbmVDYXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxh
eUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBTZXRMaW5lRGFzaCIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFNl
dExpbmVKb2luIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVy
TGltaXQ6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBj
YW5ub3QgeWV0IGRlY29kZSBTZXRNaXRlckxpbWl0Iik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlM
aXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgQ2xlYXJTaGFkb3ciKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIENsaXAiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIENsaXBP
dXQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5
ZXQgZGVjb2RlIENsaXBPdXRUb1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFBhdGg6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06
OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBDbGlwUGF0aCIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3Bs
YXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRHJhd0dseXBocyIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBEcmF3
SW1hZ2UiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1h
Z2U6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5u
b3QgeWV0IGRlY29kZSBEcmF3VGlsZWRJbWFnZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJE
aXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIERyYXdUaWxlZFNjYWxl
ZEltYWdlIik7CisgICAgICAgIGJyZWFrOworI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBV
U0UoRElSRUNUMkQpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgICAg
ICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNv
ZGUgRHJhd05hdGl2ZUltYWdlIik7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6
Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBEcmF3UGF0dGVybiIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKKyAgICAgICAgaWYgKGF1dG8gaXRl
bSA9IERyYXdSZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxh
eUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBEcmF3TGluZSIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgorICAgICAgICBX
VEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUg
RHJhd0xpbmVzRm9yVGV4dCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlM
aXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5
ZXQgZGVjb2RlIERyYXdFbGxpcHNlIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXRoOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1BhdGg6OmRlY29kZShk
ZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUGF0aDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6
ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIERyYXdGb2N1c1JpbmdQYXRoIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIERy
YXdGb2N1c1JpbmdSZWN0cyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdDoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxSZWN0OjpkZWNvZGUoZGVjb2Rl
cikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1v
dmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoQ29sb3I6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxsUmVjdFdpdGhDb2xvcjo6ZGVj
b2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aEdyYWRpZW50OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0
OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRmlsbFJlY3RXaXRoR3JhZGllbnQiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0Ogor
ICAgICAgICBpZiAoYXV0byBpdGVtID0gRmlsbENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUoZGVjb2Rl
cikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1v
dmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUg
Y2Fubm90IHlldCBkZWNvZGUgRmlsbFJvdW5kZWRSZWN0Iik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgorICAgICAgICBXVEZMb2dB
bHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFBhdGg6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxsUGF0aDo6ZGVjb2RlKGRlY29k
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZN
b3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxp
cHNlOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fu
bm90IHlldCBkZWNvZGUgRmlsbEVsbGlwc2UiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlUmVjdDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6
SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFN0cm9rZVJlY3QiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFN0cm9rZVBhdGgi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQg
ZGVjb2RlIFN0cm9rZUVsbGlwc2UiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xlYXJSZWN0OgorICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xlYXJSZWN0OjpkZWNvZGUo
ZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6QmVn
aW5UcmFuc3BhcmVuY3lMYXllcjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6
SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3Qg
eWV0IGRlY29kZSBFbmRUcmFuc3BhcmVuY3lMYXllciIpOworICAgICAgICBicmVhazsKKyNpZiBV
U0UoQ0cpCisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgorICAgICAgICBX
VEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUg
QXBwbHlTdHJva2VQYXR0ZXJuIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5RmlsbFBhdHRlcm46CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0
ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBBcHBseUZpbGxQYXR0ZXJuIik7CisgICAgICAg
IGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5v
dCB5ZXQgZGVjb2RlIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgRGlz
cGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtMTM3OSwzICsyMDY4LDYzIEBA
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShBcHBseUZpbGxQYXR0ZXJu
KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xlYXJT
aGFkb3cpCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLAorICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlJlc3RvcmUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpUcmFuc2xhdGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGUs
CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTY2FsZSwKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNLAorICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0TGluZURhc2gsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRM
aW5lSm9pbiwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGlt
aXQsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdywKKyAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXAsCisgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ds
eXBocywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKKyAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLAorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCisjaWYg
VVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyNlbmRpZgorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCisgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdMaW5lLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0xpbmVzRm9yVGV4dCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdE
b3RzRm9yRG9jdW1lbnRNYXJrZXIsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3RWxsaXBzZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQ
YXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1Bh
dGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVj
dHMsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdCwKKyAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yLAorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3QsCisgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSwKKyAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2UsCisgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U3Ryb2tlUGF0aCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlN0cm9rZUVsbGlwc2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVh
clJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFy
ZW5jeUxheWVyLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNw
YXJlbmN5TGF5ZXIsCisjaWYgVVNFKENHKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6QXBwbHlGaWxsUGF0dGVybiwKKyNlbmRpZgorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcgorICAgID47Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRl
eCBlMjBmM2VkMTNjYjZlNTVmNzgyZThjOWFkYzEzMDg3MmRlNmVmMTMyLi5hMjUzNTMyMDlkMDlm
YzBlZjg1ZTdiY2Y0ZGFkYmFiNTQ4NTdiNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBl
bmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIGlmIChjaGFuZ2VzRnJvbUxhc3RTdGF0
ZSkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8
ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFzdFN0YXRlKSk7CiAgICAgICAg
ICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZChTZXRTdGF0ZTo6Y3JlYXRlKHN0YXRlQ2hhbmdlcy5t
X3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkpOwotICAgICAgICAgICAgc3RhdGVDaGFuZ2Vz
Lm1fY2hhbmdlRmxhZ3MgPSAwOworICAgICAgICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxh
Z3MgPSB7IH07CiAgICAgICAgICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2luZ1N0YXRlID0g
c3RhdGVDaGFuZ2VzLm1fc3RhdGU7CiAgICAgICAgIH0KICAgICAgICAgY3VycmVudFN0YXRlKCku
d2FzVXNlZEZvckRyYXdpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKaW5kZXggNTE2ZDRkZjhjN2ZkOWViNWYyOTk3NTY1OGRkNzYzZDE4MDBjM2NkNi4uYTRl
Njg4NjFjZjMwZWNiYWUzOTYyYmJiMzQ0ZTliZDg3ODdmNGFlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC01MSw4ICs1MSw4IEBAIGNsYXNzIFJlY29yZGVyIDog
cHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKLSAgICBSZWNv
cmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7Ci0gICAgdmlydHVhbCB+UmVjb3JkZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNv
cmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAogICAgIHNp
emVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDRmOTY4ZTg0
NmM2NTc2YWI1NTU5YWYxMjQwMTI0MTE2YmU2MzFhNmUuLjYwZTY1YWYyNzhlNjQ5YjFmMDRhMzQ0
MGZiNTRhNTRkNTRhMmNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBSZXBs
YXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5ZXIpOwogcHVibGljOgotICAg
IFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0Jik7Ci0gICAgflJl
cGxheWVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRGlzcGxheUxpc3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+UmVwbGF5ZXIoKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5KGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2Up
OwogICAgIAogcHJpdmF0ZToKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384714</attachid>
            <date>2019-12-03 08:23:42 -0800</date>
            <delta_ts>2019-12-03 08:50:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204740-20191203082341.patch</filename>
            <type>text/plain</type>
            <size>78108</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVkNjY0YmUzYjFhNjlk
ODljMjc2OGUwNDQ1ZTMwY2M1Y2Y2MTU4Yi4uYTM3ZmJhNTI0NTliY2EyNjE5NmQyM2JjMDMyYWM5
ODJmMjA1MTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDE5LTEyLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IGFkZGlu
ZyBlbmNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdCBhbmQgc29tZSBEaXNwbGF5TGlzdEl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3
NDAKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVG8gYmUg
dXNlZCBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIFN0YXJ0IGVuY29kaW5nIGFuZCBkZWNv
ZGluZyBEaXNwbGF5TGlzdCwgYW5kIGl0cyBjaGlsZCBpdGVtcy4gV2UKKyAgICAgICAgY3VycmVu
dGx5IHN1cHBvcnQgb25seSBhIHN1YnNldCBvZiB0aGUgaXRlbSBzdWJjbGFzc2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBs
eSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgIEFkb3B0IE9wdGlvblNldCBmb3IgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3aW5nSXRlbTo6RHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNhdmU6OlNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc3RvcmU6OlJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlRy
YW5zbGF0ZTo6VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSb3Rh
dGU6OlJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2NhbGU6OlNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdSZWN0OjpEcmF3UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg6OkRyYXdQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdDo6RmlsbFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yOjpGaWxsUmVjdFdpdGhDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0OjpGaWxs
Q29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxQYXRo
OjpGaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xlYXJSZWN0OjpD
bGVhclJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6aXNT
dGF0ZUl0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTYXZlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNhdmU6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzdG9yZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXN0b3JlOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlRyYW5zbGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpUcmFuc2xhdGU6OmRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Um90YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpTY2FsZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpTY2FsZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpD
b25jYXRlbmF0ZUNUTTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpDb25jYXRlbmF0ZUNUTTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpTZXRTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpT
ZXRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpT
ZXRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVj
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UmVj
dDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aDo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xv
cjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRl
ZFJlY3Q6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmls
bENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZpbGxQYXRoOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZpbGxQYXRoOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsZWFy
UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGVh
clJlY3Q6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06Okl0ZW0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2F2ZTo6U2F2ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzdG9yZTo6UmVzdG9yZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6VHJhbnNsYXRlOjpUcmFu
c2xhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJvdGF0ZTo6
Um90YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTY2FsZTo6
U2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRl
OjpTZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d1JlY3Q6OkRyYXdSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3UGF0aDo6RHJhd1BhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZpbGxSZWN0OjpGaWxsUmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I6OkZpbGxSZWN0V2l0aENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q6OkZp
bGxDb21wb3NpdGVkUmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RmlsbFBhdGg6OkZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpDbGVhclJlY3Q6OkNsZWFyUmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCiAyMDE5
LTEyLTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJbnRlZ3JhdGlvbl0gUmVuYW1lIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQgYW5kIG1vdmUg
aXQgdG8gTGF5b3V0SW50ZWdyYXRpb24gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmUzNjcwYWJlNDUxNjQ2Yzk5
YWU1ODBjOWUyZTE0MjI0ZWQwZjllNS4uZjUwODYzNjNjMzZjMTFkMzRkZTQ3OWM0ODNlZjAyNjk4
ZWZhNGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzUxLDEwICszNTEsMTAgQEAKIAkJMEZEQTdDMjcxODgzMzMzMjAwQzk1
NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjUxODgzMzMzMjAw
Qzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovOyB9
OwogCQkwRkRDRDdGMzFENDdFNjU1MDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRENEN0YyMUQ0N0U2
NTUwMDlGMDhCQyAvKiBMb2dJbml0aWFsaXphdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTU4MDY0MTkzMjdBNjIwMERFMzJFQiAvKiBT
Y3JvbGxpbmdUcmVlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5oICov
OyB9OwotCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNCMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovOyB9OwotCQkwRkU1RkJENTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRl
bXMuaCAqLzsgfTsKLQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi87IH07Ci0J
CTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJEMTFDM0RENTFF
MDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICovOyB9OworCQkwRkU1RkJEMzFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNCMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
RTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDRDFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTVGQkQ5MUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGRTcxNDA2MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVt
ZU1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RTcxNDA0MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCAqLzsgfTsKIAkJ
MEZFQTNFN0IxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVB
M0U3OTE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVB
M0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNF
N0UxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI1
LDYgKzgyNSw3IEBACiAJCTJEOUJGNzQ2MURCRkRDNDcwMDdBN0Q5OSAvKiBNZWRpYUtleXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5QkY3MzMx
REJGREMwRjAwN0E3RDk5IC8qIE1lZGlhS2V5cy5jcHAgKi87IH07CiAJCTJEOUJGNzQ3MURCRkRD
NDkwMDdBN0Q5OSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlCRjcyRjFEQkZEQzBGMDA3QTdEOTkgLyog
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBG
RjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyAq
LzsgfTsKKwkJMkRBQ0I5RTkyMzc1NUQwMDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDAxMjNG
MUZBRDg3RDYwMDUzMUQ3NiAvKiBHcmFwaGljc0NvbnRleHRJbXBsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRBRjM0M0QxRUE3RTBGMTAwMzgy
Q0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYzNDNCMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25zdGFudFBy
b3BlcnR5TWFwLmggKi87IH07CiAJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3Np
dGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRERTFD
RTMxRjU3NEFFNTAwRDFBMzY1IC8qIEpTVlJGaWVsZE9mVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRTAxRjU3NEFEMTAwRDFBMzY1IC8q
IEpTVlJGaWVsZE9mVmlldy5oICovOyB9OwpAQCAtMjk5MTQsNiArMjk5MTUsNyBAQAogCQkJCTMx
QUI1MDAwMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGljc0NvbnRleHQzRElPUy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDA4NDNBNEIyMEZFQkUzRDAwRkU4NjBFIC8qIEdyYXBoaWNzQ29udGV4dDNE
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8q
IEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREFDQjlFOTIzNzU1RDAw
MDBCNEMxODUgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgw
RDY3MDgwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNH
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhp
Y3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTE3MCw2ICszMTE3Miw3IEBA
CiAJCQkJMTE5OUZBNDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkYyNkJCNkMyMzM0M0U2RjAwMkYyQkVBIC8qIExheW91dENvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTExMzEwQ0Y1MjBCQTRBNEMwMDY1QThEMCAvKiBMYXlvdXRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QUJBQkREMjM2MDg4RkUw
MEZBNDM0NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTExMzEwQ0Y0MjBCQTRBM0QwMDY1QThEMCAvKiBMYXlvdXRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTMxRDcyRjYxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMwNTExNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFBv
aW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzc0LDcgKzMxNzc3LDYgQEAKIAkJCQk3Q0Q0OTRD
RDFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQTQ4NjAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzEwRDc2ODE3RDhFRTcxMDA1RTI2MjYgLyogUmVuZGVyQmxvY2tGbG93LmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNEFCQUJERDIzNjA4OEZFMDBGQTQzNDUgLyogTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg2MjA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VCMTc5QzE0MzM3OUY1
MDA1MkVBRTkgLyogUmVuZGVyQm94RnJhZ21lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzk2REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKaW5kZXggNzM4OGQ5ZmM3YzI1MzI1MWI1YzM5MWU4NDcyMjk4ZWRlN2U4
YjQ2Yi4uZDM2N2M1MmE4MTA1Y2NlZWNlOWY4MWY3ODY1OGI1ZGRiNzgxYmQwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6CiB9OwogCiAjZGVmaW5lIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKGZsYWcsIHByb3BlcnR5KSBcCi0gICAgaWYgKChtX2NoYW5nZUZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmZsYWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRl
LnByb3BlcnR5KSkgXAotICAgICAgICBjaGFuZ2VGbGFncyB8PSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmxhZzsKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJvcGVydHkpKSBcCisg
ICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZyk7CiAKIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlOjpjaGFuZ2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKQEAgLTg0LDExICs4NCwxMSBAQCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdAog
ICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdy
YWRpZW50KTsKICAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5n
ZSwgZmlsbFBhdHRlcm4pOwogCi0gICAgaWYgKChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKQogICAgICAgICAmJiAobV9zdGF0ZS5z
aGFkb3dPZmZzZXQgIT0gc3RhdGUuc2hhZG93T2Zmc2V0CiAgICAgICAgICAgICB8fCBtX3N0YXRl
LnNoYWRvd0JsdXIgIT0gc3RhdGUuc2hhZG93Qmx1cgogICAgICAgICAgICAgfHwgbV9zdGF0ZS5z
aGFkb3dDb2xvciAhPSBzdGF0ZS5zaGFkb3dDb2xvcikpCi0gICAgICAgIGNoYW5nZUZsYWdzIHw9
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2U7CisgICAgICAgIGNoYW5nZUZsYWdz
LmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKIAogICAgIENIRUNLX0ZP
Ul9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVRoaWNrbmVzc0NoYW5nZSwgc3Ryb2tlVGhpY2tuZXNz
KTsKICAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShUZXh0RHJhd2luZ01vZGVDaGFuZ2Us
IHRleHREcmF3aW5nTW9kZSk7CkBAIC05OCw5ICs5OCwxMSBAQCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zy
b21TdAogICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxs
UnVsZSk7CiAgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhh
KTsKIAotICAgIGlmICgobV9jaGFuZ2VGbGFncyAmIChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNo
YW5nZSkpCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9kZSkp
Ci0gICAgICAgIGNoYW5nZUZsYWdzIHw9IChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRl
T3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRN
b2RlQ2hhbmdlIH0pCisgICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0
YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5k
TW9kZSkpIHsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
b21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7CisgICAgfQogCiAgICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxpYXMp
OwogICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hhbmdl
LCBzaG91bGRTbW9vdGhGb250cyk7CkBAIC0xMTksOTIgKzEyMSw5MiBAQCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hh
bmdlc0Zyb21TdAogdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxk
IG1vdmUgdG8gR3JhcGhpY3NDb250ZXh0U3RhdGUuCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQogICAgICAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CiAKLSAgICBpZiAo
ZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkKKyAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKQogICAgICAgICBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VQYXR0ZXJu
OwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENo
YW5nZSkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxH
cmFkaWVudENoYW5nZSkpCiAgICAgICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gc3RhdGUuZmls
bEdyYWRpZW50OwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQ
YXR0ZXJuQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQogICAgICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gc3Rh
dGUuZmlsbFBhdHRlcm47CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93Q2hhbmdlKSB7CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggc3RhdGUu
c2hhZG93c1VzZUxlZ2FjeVJhZGl1cy4KICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBz
dGF0ZS5zaGFkb3dPZmZzZXQ7CiAgICAgICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IHN0YXRlLnNo
YWRvd0JsdXI7CiAgICAgICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBzdGF0ZS5zaGFkb3dDb2xv
cjsKICAgICB9CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
VGhpY2tuZXNzQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKICAgICAgICAgbV9zdGF0ZS5zdHJva2VUaGlj
a25lc3MgPSBzdGF0ZS5zdHJva2VUaGlja25lc3M7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKICAgICAg
ICAgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7CiAKLSAg
ICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpCisg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNo
YW5nZSkpCiAgICAgICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsK
IAotICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2Up
CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JD
aGFuZ2UpKQogICAgICAgICBtX3N0YXRlLmZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKIAot
ICAgIGlmIChmbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkK
KyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxl
Q2hhbmdlKSkKICAgICAgICAgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0YXRlLnN0cm9rZVN0eWxl
OwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdl
KQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVD
aGFuZ2UpKQogICAgICAgICBtX3N0YXRlLmZpbGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7CiAKLSAg
ICBpZiAoZmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpCisgICAgaWYg
KGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCiAgICAg
ICAgIG1fc3RhdGUuYWxwaGEgPSBzdGF0ZS5hbHBoYTsKIAotICAgIGlmIChmbGFncyAmIChHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlIHwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpIHsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnko
eyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlIH0pKSB7CiAgICAgICAgIG1fc3RhdGUuY29t
cG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsKICAgICAgICAgbV9zdGF0
ZS5ibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkKKyAgICBpZiAoZmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkp
CiAgICAgICAgIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFsaWFz
OwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZv
bnRzQ2hhbmdlKQorICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQogICAgICAgICBtX3N0YXRlLnNob3VsZFNtb290aEZv
bnRzID0gc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7CiAKLSAgICBpZiAoZmxhZ3MgJiBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzQ2hhbmdlKSkKICAgICAgICAgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMgPSBzdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CiAKLSAgICBpZiAoZmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2Up
CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtc0NoYW5nZSkpCiAgICAgICAgIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIAotICAgIGlmIChmbGFncyAm
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hh
bmdlKSkKICAgICAgICAgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IHN0YXRlLmRyYXdMdW1p
bmFuY2VNYXNrOwogCi0gICAgaWYgKGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKICAgICAg
ICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eTsKIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgaWYg
KGZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKQor
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVh
cmFuY2VDaGFuZ2UpKQogICAgICAgICBtX3N0YXRlLnVzZURhcmtBcHBlYXJhbmNlID0gc3RhdGUu
dXNlRGFya0FwcGVhcmFuY2U7CiAjZW5kaWYKIAotICAgIG1fY2hhbmdlRmxhZ3MgfD0gZmxhZ3M7
CisgICAgbV9jaGFuZ2VGbGFncy5hZGQoZmxhZ3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGll
bnRDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VH
cmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVudCk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9r
ZVBhdHRlcm4pOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKQogICAgICAgICBjb250ZXh0
LnNldEZpbGxHcmFkaWVudCgqbV9zdGF0ZS5maWxsR3JhZGllbnQpOwogCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpCisgICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0
ZXJuQ2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqbV9zdGF0ZS5maWxs
UGF0dGVybik7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpIHsKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewogI2lmIFVTRShDRykKICAgICAgICAgaWYg
KG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cykKICAgICAgICAgICAgIGNvbnRleHQuc2V0
TGVnYWN5U2hhZG93KG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0JsdXIsIG1f
c3RhdGUuc2hhZG93Q29sb3IpOwpAQCAtMjEzLDcxICsyMTUsNzEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3Rh
dGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7CiAgICAgfQogCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
KQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VUaGlja25lc3NDaGFuZ2UpKQogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVz
cyhtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNo
YW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKG1fc3RhdGUudGV4dERy
YXdpbmdNb2RlKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQu
c2V0U3Ryb2tlQ29sb3IobV9zdGF0ZS5zdHJva2VDb2xvcik7CiAKLSAgICBpZiAobV9jaGFuZ2VG
bGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpCisgICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5n
ZSkpCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9yKTsKIAot
ICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxl
Q2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
bV9zdGF0ZS5zdHJva2VTdHlsZSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQogICAgICAgICBjb250
ZXh0LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKICAgICAg
ICAgY29udGV4dC5zZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKIAotICAgIGlmIChtX2NoYW5nZUZs
YWdzICYgKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgfCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpCiAgICAg
ICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0
b3IsIG1fc3RhdGUuYmxlbmRNb2RlKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdl
KSkKICAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMobV9zdGF0ZS5zaG91bGRBbnRp
YWxpYXMpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKICAgICAgICAg
Y29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKTsK
IAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdl
KSkKICAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0
ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mg
JiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpCisg
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIAotICAgIGlm
IChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNr
Q2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1
bWluYW5jZU1hc2sobV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7CiAKLSAgICBpZiAobV9jaGFu
Z2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
Q2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKICAgICAgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7CiAKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKQor
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VE
YXJrQXBwZWFyYW5jZUNoYW5nZSkpCiAgICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFu
Y2UobV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKLSAgICB0
cy5kdW1wUHJvcGVydHkoImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgbV9jaGFuZ2VGbGFncy50b1JhdygpKTsKIAotICAg
IGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50
Q2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ry
b2tlLWdyYWRpZW50IiwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC5nZXQoKSk7CiAKLSAgICBpZiAo
bV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VQYXR0ZXJuQ2hhbmdlKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtcGF0
dGVybiIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7CiAKLSAgICBpZiAobV9jaGFuZ2VG
bGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVu
dENoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1ncmFkaWVudCIsIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LmdldCgpKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1wYXR0ZXJuIiwgbV9zdGF0ZS5maWxsUGF0dGVybi5n
ZXQoKSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dDaGFuZ2UpIHsKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNo
YWRvdy1ibHVyIiwgbV9zdGF0ZS5zaGFkb3dCbHVyKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzaGFkb3ctb2Zmc2V0IiwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQpOwogI2lmIFVTRShDRykKQEAg
LTI4NSw1MCArMjg3LDUwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAo
VGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAjZW5kaWYKICAgICB9CiAKLSAgICBpZiAobV9jaGFuZ2VG
bGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpCisgICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRo
aWNrbmVzc0NoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVz
cyIsIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkKKyAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2Rl
Q2hhbmdlKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIsIG1f
c3RhdGUudGV4dERyYXdpbmdNb2RlKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLWNvbG9yIiwgbV9zdGF0ZS5zdHJva2VDb2xvcik7
CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1j
b2xvciIsIG1fc3RhdGUuZmlsbENvbG9yKTsKIAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCiAg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHls
ZSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
UnVsZUNoYW5nZSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwt
cnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKICAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKQorICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3Np
dGVPcGVyYXRpb25DaGFuZ2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1v
cGVyYXRvciIsIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOwogCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKQorICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFu
Z2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBtX3N0YXRlLmJsZW5k
TW9kZSk7CiAKLSAgICBpZiAobV9jaGFuZ2VGbGFncyAmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aG91bGRBbnRpYWxpYXNDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgic2hvdWxkLWFudGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsK
IAotICAgIGlmIChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNt
b290aEZvbnRzQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHMp
OwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFu
Z2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1m
b250cyIsIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKIAotICAgIGlmICht
X2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zQ2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpOwogCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MgJiBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKICAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9zdGF0ZS5kcmF3
THVtaW5hbmNlTWFzayk7CiAKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlm
IChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNl
Q2hhbmdlKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
dXNlLWRhcmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGZhOWU4NDhkMmIzZGQxNzc2YjIzMDM3OGE4YWZmNjk2ZGI0NDQ3MmIuLjc1
MjIyYzFiYzM3OGY1MzI3ZjNkNGZhMTgxNzQ4MGQ4NzlmYTIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
IAogI2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDsKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUg
ewogICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8
IDIyLAogI2VuZGlmCiAgICAgfTsKLSAgICB0eXBlZGVmIHVpbnQzMl90IFN0YXRlQ2hhbmdlRmxh
Z3M7CisgICAgdHlwZWRlZiBPcHRpb25TZXQ8Q2hhbmdlPiBTdGF0ZUNoYW5nZUZsYWdzOwogCiAg
ICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudDsKICAgICBSZWZQdHI8UGF0dGVybj4g
c3Ryb2tlUGF0dGVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aAppbmRleCA3NTFlOTY1NzQ0ZDg1YWQxNmQ0ZGE5Zjg4YzYxOWZkZjk0NzI2ZmFjLi4wMDdlNTkw
MmQ5NTk2YmI2NTdlYmNmOThhOWUzYTYxNTU1Y2E5ODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEltYWdlOwog
Y2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7Ci0gICAgflBhdHRlcm4oKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB+UGF0dGVybigpOwogCiAgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXgg
ZDQ0MzdlM2Q0MWJlMTIyY2M4OTA2NTI0N2M5MjIyNmU3ODFkYzc3Yi4uYTIxNzdkN2NiYjdmNGI0
NjM2OTdkNGU0MGNkNjA2NDc4N2Y5NzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTc5
LDkgKzc5LDEzIEBAIHB1YmxpYzoKIAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNB
QkxFRAogICAgIFdURjo6Q1N0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIHZvaWQgZHVt
cCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcCgpIGNvbnN0OwogI2VuZGlm
CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERpc3BsYXlM
aXN0PiBkZWNvZGUoRGVjb2RlciYpOworCisKIHByaXZhdGU6CiAgICAgSXRlbSYgYXBwZW5kKFJl
ZjxJdGVtPiYmIGl0ZW0pCiAgICAgewpAQCAtMTAyLDYgKzEwNiwzOCBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWY8SXRlbT4+IG1fbGlzdDsKIH07CiAKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgRGlzcGxheUxpc3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fbGlzdC5zaXplKCkpOworCisg
ICAgZm9yIChhdXRvJiBpdGVtIDogbV9saXN0KQorICAgICAgICBlbmNvZGVyIDw8IGl0ZW0uZ2V0
KCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxEaXNwbGF5TGlzdD4g
RGlzcGxheUxpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBpdGVtQ291bnQ7CisgICAgZGVjb2RlciA+PiBpdGVtQ291bnQ7CisgICAgaWYgKCFp
dGVtQ291bnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBEaXNwbGF5TGlz
dCBkaXNwbGF5TGlzdDsKKworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaXRlbUNvdW50
OyBpKyspIHsKKyAgICAgICAgYXV0byBpdGVtID0gSXRlbTo6ZGVjb2RlKGRlY29kZXIpOworICAg
ICAgICAvLyBGSVhNRTogT25jZSB3ZSBjYW4gZGVjb2RlIGFsbCB0eXBlcywgZmFpbGluZyB0byBk
ZWNvZGUgYW4gaXRlbSBzaG91bGQgdHVybiBpbnRvIGEgZGVjb2RlIGZhaWx1cmUuCisgICAgICAg
IC8vIEZvciBub3csIHdlIGp1c3QgaGF2ZSB0byBpZ25vcmUgaXQuCisgICAgICAgIGlmICghaXRl
bSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkaXNwbGF5TGlzdC5hcHBlbmQoV1RG
TW92ZSgqaXRlbSkpOworICAgIH0KKworICAgIHJldHVybiBkaXNwbGF5TGlzdDsKK30KKwogfSAv
LyBEaXNwbGF5TGlzdAogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZDM5YjY2MmE0YWE4YWI2NDZiMzMxNzAxMDJkYjZmYzhj
ZDgyYTE1MC4uOTFjYmI5ZmVmMmYyM2Y2MDkyODYzYzAyNDBmZTczZWRkY2QzMjViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjksNiArMjksMTAgQEAKICNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAor
I2lmIFVTRShDRykKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKQEAgLTQ0LDYgKzQ4LDEzIEBAIFdURjo6Q1N0cmluZyBJdGVtOjpkZXNjcmlwdGlvbigpIGNv
bnN0CiB9CiAjZW5kaWYKIAorSXRlbTo6SXRlbShJdGVtVHlwZSB0eXBlKQorICAgIDogbV90eXBl
KHR5cGUpCit7Cit9CisKK0l0ZW06On5JdGVtKCkgPSBkZWZhdWx0OworCiBzaXplX3QgSXRlbTo6
c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKIHsKICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgp
KSB7CkBAIC0xNjIsNiArMTczLDIwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3aW5nSXRlbSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9
CiAKK0RyYXdpbmdJdGVtOjpEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQorICAgIDogSXRlbSh0
eXBlKQoreworfQorCitEcmF3aW5nSXRlbTo6fkRyYXdpbmdJdGVtKCkgPSBkZWZhdWx0OworCitT
YXZlOjpTYXZlKCkKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OlNhdmUpCit7Cit9CisKK1NhdmU6On5T
YXZlKCkgPSBkZWZhdWx0OworCiB2b2lkIFNhdmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LnNhdmUoKTsKQEAgLTE3MywxMSArMTk4LDI3IEBA
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTYXZl
JiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorUmVzdG9yZTo6UmVzdG9yZSgpCisgICAgOiBJ
dGVtKEl0ZW1UeXBlOjpSZXN0b3JlKQoreworfQorCitSZXN0b3JlOjp+UmVzdG9yZSgpID0gZGVm
YXVsdDsKKwogdm9pZCBSZXN0b3JlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKK1RyYW5zbGF0ZTo6VHJhbnNsYXRl
KGZsb2F0IHgsIGZsb2F0IHkpCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpUcmFuc2xhdGUpCisgICAg
LCBtX3goeCkKKyAgICAsIG1feSh5KQoreworfQorCitUcmFuc2xhdGU6On5UcmFuc2xhdGUoKSA9
IGRlZmF1bHQ7CisKIHZvaWQgVHJhbnNsYXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUobV94LCBtX3kpOwpAQCAtMTkxLDYg
KzIzMiwxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgVHJhbnNsYXRlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAorUm90YXRlOjpSb3Rh
dGUoZmxvYXQgYW5nbGUpCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpSb3RhdGUpCisgICAgLCBtX2Fu
Z2xlKGFuZ2xlKQoreworfQorCitSb3RhdGU6On5Sb3RhdGUoKSA9IGRlZmF1bHQ7CisKIHZvaWQg
Um90YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29u
dGV4dC5yb3RhdGUobV9hbmdsZSk7CkBAIC0yMDMsNiArMjUyLDE0IEBAIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSb3RhdGUmIGl0ZW0pCiAgICAg
cmV0dXJuIHRzOwogfQogCitTY2FsZTo6U2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAg
IDogSXRlbShJdGVtVHlwZTo6U2NhbGUpCisgICAgLCBtX3NpemUoc2l6ZSkKK3sKK30KKworU2Nh
bGU6On5TY2FsZSgpID0gZGVmYXVsdDsKKwogdm9pZCBTY2FsZTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuc2NhbGUobV9zaXplKTsKQEAgLTIy
MSw2ICsyNzgsOCBAQCBDb25jYXRlbmF0ZUNUTTo6Q29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiB9CiAKK0NvbmNhdGVuYXRlQ1RNOjp+Q29uY2F0ZW5h
dGVDVE0oKSA9IGRlZmF1bHQ7CisKIHZvaWQgQ29uY2F0ZW5hdGVDVE06OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmNvbmNhdENUTShtX3RyYW5z
Zm9ybSk7CkBAIC0yMzMsNiArMjkyLDIwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKICAgICByZXR1cm4g
dHM7CiB9CiAKK1NldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQorICAg
IDogSXRlbShJdGVtVHlwZTo6U2V0U3RhdGUpCisgICAgLCBtX3N0YXRlKHN0YXRlLCBmbGFncykK
K3sKK30KKworU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlJiBzdGF0ZUNoYW5nZSkKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OlNldFN0YXRlKQorICAgICwg
bV9zdGF0ZShzdGF0ZUNoYW5nZSkKK3sKK30KKworU2V0U3RhdGU6On5TZXRTdGF0ZSgpID0gZGVm
YXVsdDsKKwogdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogICAgIG1fc3RhdGUuYXBwbHkoY29udGV4dCk7CkBAIC01NTEsNiArNjI0LDE1IEBA
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
UGF0dGVybiYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0RyYXdSZWN0OjpEcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKKyAgICA6IERyYXdp
bmdJdGVtKEl0ZW1UeXBlOjpEcmF3UmVjdCkKKyAgICAsIG1fcmVjdChyZWN0KQorICAgICwgbV9i
b3JkZXJUaGlja25lc3MoYm9yZGVyVGhpY2tuZXNzKQoreworfQorCitEcmF3UmVjdDo6fkRyYXdS
ZWN0KCkgPSBkZWZhdWx0OworCiB2b2lkIERyYXdSZWN0OjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5kcmF3UmVjdChtX3JlY3QsIG1fYm9yZGVy
VGhpY2tuZXNzKTsKQEAgLTY0Myw2ICs3MjUsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdFbGxpcHNlJiBpdGVtKQogICAgIHJldHVy
biB0czsKIH0KIAorRHJhd1BhdGg6OkRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCisgICAgOiBE
cmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdGgpCisgICAgLCBtX3BhdGgocGF0aCkKK3sKK30K
KworRHJhd1BhdGg6On5EcmF3UGF0aCgpID0gZGVmYXVsdDsKKwogdm9pZCBEcmF3UGF0aDo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogI2lmIFVTRShDRykKQEAgLTcw
NSw2ICs3OTUsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAK
K0ZpbGxSZWN0OjpGaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCisgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6RmlsbFJlY3QpCisgICAgLCBtX3JlY3QocmVjdCkKK3sKK30KKworRmls
bFJlY3Q6On5GaWxsUmVjdCgpID0gZGVmYXVsdDsKKwogdm9pZCBGaWxsUmVjdDo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9y
ZWN0KTsKQEAgLTcxNyw2ICs4MTUsMTUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0JiBpdGVtKQogICAgIHJldHVybiB0czsKIH0K
IAorRmlsbFJlY3RXaXRoQ29sb3I6OkZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yKQorICAgICwgbV9yZWN0KHJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9y
KQoreworfQorCitGaWxsUmVjdFdpdGhDb2xvcjo6fkZpbGxSZWN0V2l0aENvbG9yKCkgPSBkZWZh
dWx0OworCiB2b2lkIEZpbGxSZWN0V2l0aENvbG9yOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxsUmVjdChtX3JlY3QsIG1fY29sb3IpOwpA
QCAtNzQzLDYgKzg1MCwxNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pCiAgICAgcmV0dXJuIHRz
OwogfQogCitGaWxsQ29tcG9zaXRlZFJlY3Q6OkZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0KQorICAgICwgbV9yZWN0KHJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQorICAg
ICwgbV9vcChvcCkKKyAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKK3sKK30KKworRmlsbENv
bXBvc2l0ZWRSZWN0Ojp+RmlsbENvbXBvc2l0ZWRSZWN0KCkgPSBkZWZhdWx0OworCiB2b2lkIEZp
bGxDb21wb3NpdGVkUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ewogICAgIGNvbnRleHQuZmlsbFJlY3QobV9yZWN0LCBtX2NvbG9yLCBtX29wLCBtX2JsZW5kTW9k
ZSk7CkBAIC03ODYsNiArOTA0LDE0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlCiAgICAgcmV0
dXJuIHRzOwogfQogCitGaWxsUGF0aDo6RmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKKyAgICA6
IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpGaWxsUGF0aCkKKyAgICAsIG1fcGF0aChwYXRoKQorewor
fQorCitGaWxsUGF0aDo6fkZpbGxQYXRoKCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxQYXRoOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5maWxs
UGF0aChtX3BhdGgpOwpAQCAtODczLDYgKzk5OSwxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKICAgICBy
ZXR1cm4gdHM7CiB9CiAKK0NsZWFyUmVjdDo6Q2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpDbGVhclJlY3QpCisgICAgLCBtX3JlY3Qo
cmVjdCkKK3sKK30KKworQ2xlYXJSZWN0Ojp+Q2xlYXJSZWN0KCkgPSBkZWZhdWx0OworCiB2b2lk
IENsZWFyUmVjdDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAg
IGNvbnRleHQuY2xlYXJSZWN0KG1fcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCBmYjczYTY3ODMzZjJkODM4MjhkOTE5NzRjYjFhOGViZjA5ZDFkOTQ1Li5kYzQyZmZl
YWVlYWEwYTQ1NWZkMDg3YTg0NTUwYTlmMzVmODhkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTM1LDEwICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CiB9CkBAIC00OSw3ICs0NSw3IEBAIHN0cnVjdCBJbWFn
ZVBhaW50aW5nT3B0aW9uczsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotZW51bSBjbGFz
cyBJdGVtVHlwZSB7CitlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwK
ICAgICBSZXN0b3JlLAogICAgIFRyYW5zbGF0ZSwKQEAgLTEwNywxMiArMTAzLDggQEAgY2xhc3Mg
SXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPEl0ZW0+IHsKIHB1YmxpYzoKICAgICBJdGVtKCkgPSBk
ZWxldGU7CiAKLSAgICBJdGVtKEl0ZW1UeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUp
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkl0ZW0oKSA9IGRlZmF1bHQ7CisgICAgV0VC
Q09SRV9FWFBPUlQgSXRlbShJdGVtVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
SXRlbSgpOwogCiAgICAgSXRlbVR5cGUgdHlwZSgpIGNvbnN0CiAgICAgewpAQCAtMTM0LDE2ICsx
MjYsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3RhdGVJdGVtVHlwZShJdGVtVHlw
ZSBpdGVtVHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoaXRlbVR5cGUpIHsKLSAgICAgICAg
Y2FzZSBJdGVtVHlwZTo6IFRyYW5zbGF0ZToKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFJvdGF0
ZToKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFNjYWxlOgotICAgICAgICBjYXNlIEl0ZW1UeXBl
OjogQ29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OiBTZXRTdGF0ZToKLSAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6IFNldExpbmVDYXA6Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6
OiBTZXRMaW5lRGFzaDoKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6IFNldExpbmVKb2luOgotICAg
ICAgICBjYXNlIEl0ZW1UeXBlOjogU2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgY2FzZSBJdGVtVHlw
ZTo6IENsZWFyU2hhZG93OgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6CisgICAg
ICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6
CisgICAgICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKKyAg
ICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CisgICAgICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVKb2luOgorICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgorICAg
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU2LDE2
ICsxNDgsMTggQEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHNpemVfdCBzaXplSW5CeXRl
cyhjb25zdCBJdGVtJik7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFJlZjxJdGVtPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBJdGVt
VHlwZSBtX3R5cGU7CiB9OwogCiBjbGFzcyBEcmF3aW5nSXRlbSA6IHB1YmxpYyBJdGVtIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQotICAgICAgICA6
IEl0ZW0odHlwZSkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IERy
YXdpbmdJdGVtKEl0ZW1UeXBlKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdp
bmdJdGVtKCk7CiAKICAgICB2b2lkIHNldEV4dGVudChjb25zdCBGbG9hdFJlY3QmIHIpIHsgbV9l
eHRlbnQgPSByOyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBleHRlbnQoKSBjb25zdCB7IHJldHVy
biBtX2V4dGVudC52YWx1ZSgpOyB9CkBAIC0xODksMjEgKzE4Myw0MyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhdmUpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflNhdmUoKTsKKwogICAgIC8vIEluZGV4IGluIHRoZSBkaXNwbGF5IGxpc3Qg
b2YgdGhlIGNvcnJlc3BvbmRpbmcgUmVzdG9yZSBpdGVtLiAwIGlmIHVubWF0Y2hlZC4KICAgICBz
aXplX3QgcmVzdG9yZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0b3JlSW5kZXg7IH0KICAg
ICB2b2lkIHNldFJlc3RvcmVJbmRleChzaXplX3QgaW5kZXgpIHsgbV9yZXN0b3JlSW5kZXggPSBp
bmRleDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxS
ZWY8U2F2ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgU2F2ZSgpCi0gICAg
ICAgIDogSXRlbShJdGVtVHlwZTo6U2F2ZSkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIFNhdmUoKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgCiAgICAgc2l6ZV90IG1fcmVzdG9yZUluZGV4IHsgMCB9OwogfTsKIAordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2F2ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9yZXN0b3Jl
SW5kZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFNhdmU+
PiBTYXZlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRf
dD4gcmVzdG9yZUluZGV4OworICAgIGRlY29kZXIgPj4gcmVzdG9yZUluZGV4OworICAgIGlmICgh
cmVzdG9yZUluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gRklY
TUU6IFZhbGlkYXRlIHJlc3RvcmVJbmRleD8gQnV0IHdlIGRvbid0IGhhdmUgdGhlIGxpc3QgY29u
dGV4dCBoZXJlLgorICAgIGF1dG8gc2F2ZSA9IFNhdmU6OmNyZWF0ZSgpOworICAgIHNhdmUtPnNl
dFJlc3RvcmVJbmRleChzdGF0aWNfY2FzdDxzaXplX3Q+KCpyZXN0b3JlSW5kZXgpKTsKKyAgICBy
ZXR1cm4gc2F2ZTsKK30KKwogY2xhc3MgUmVzdG9yZSA6IHB1YmxpYyBJdGVtIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFJlc3RvcmU+IGNyZWF0ZSgpCkBAIC0yMTEsMTUgKzIyNywyOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlc3RvcmUpOwogICAgIH0KIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc3RvcmUoKTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFJlc3RvcmU+PiBkZWNvZGUoRGVjb2Rl
ciYpOworCiBwcml2YXRlOgotICAgIFJlc3RvcmUoKQotICAgICAgICA6IEl0ZW0oSXRlbVR5cGU6
OlJlc3RvcmUpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZXN0b3JlKCk7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUmVzdG9yZTo6ZW5jb2RlKEVuY29kZXImKSBj
b25zdAoreworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFJlc3Rv
cmU+PiBSZXN0b3JlOjpkZWNvZGUoRGVjb2RlciYpCit7CisgICAgcmV0dXJuIFJlc3RvcmU6OmNy
ZWF0ZSgpOworfQorCiBjbGFzcyBUcmFuc2xhdGUgOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxUcmFuc2xhdGU+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KQpAQCAtMjI3
LDE2ICsyNTYsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFu
c2xhdGUoeCwgeSkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflRyYW5z
bGF0ZSgpOworCiAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQogICAgIGZsb2F0
IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UmVmPFRyYW5zbGF0ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHBy
aXZhdGU6Ci0gICAgVHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgICAgIDogSXRlbShJ
dGVtVHlwZTo6VHJhbnNsYXRlKQotICAgICAgICAsIG1feCh4KQotICAgICAgICAsIG1feSh5KQot
ICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0
IHkpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
IApAQCAtMjQ0LDYgKzI3MywyOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1feTsKIH07CiAKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFRyYW5zbGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3g7CisgICAgZW5jb2RlciA8PCBtX3k7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8VHJhbnNsYXRlPj4g
VHJhbnNsYXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxmbG9h
dD4geDsKKyAgICBkZWNvZGVyID4+IHg7CisgICAgaWYgKCF4KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZmxvYXQ+IHk7CisgICAgZGVjb2RlciA+PiB5Owor
ICAgIGlmICgheSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBU
cmFuc2xhdGU6OmNyZWF0ZSgqeCwgKnkpOworfQorCiBjbGFzcyBSb3RhdGUgOiBwdWJsaWMgSXRl
bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSb3RhdGU+IGNyZWF0ZShmbG9hdCBhbmdsZUlu
UmFkaWFucykKQEAgLTI1MSwyMCArMzAzLDM4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUm90YXRlKGFuZ2xlSW5SYWRpYW5zKSk7CiAgICAgfQogCisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+Um90YXRlKCk7CisKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5nbGU7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPFJvdGF0ZT4+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAg
Um90YXRlKGZsb2F0IGFuZ2xlKQotICAgICAgICA6IEl0ZW0oSXRlbVR5cGU6OlJvdGF0ZSkKLSAg
ICAgICAgLCBtX2FuZ2xlKGFuZ2xlKQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQg
Um90YXRlKGZsb2F0IGFuZ2xlKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBmbG9hdCBtX2FuZ2xlOyAvLyBJbiByYWRpYW5zLgogfTsK
IAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUm90YXRlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fYW5nbGU7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8Um90YXRlPj4gUm90YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxmbG9hdD4gYW5nbGU7CisgICAgZGVjb2Rl
ciA+PiBhbmdsZTsKKyAgICBpZiAoIWFuZ2xlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFJvdGF0ZTo6Y3JlYXRlKCphbmdsZSk7Cit9CisKIGNsYXNzIFNjYWxl
IDogcHVibGljIEl0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2NhbGU+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCkBAIC0yNzIsMjAgKzM0MiwzOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjYWxlKHNpemUpKTsKICAgICB9CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5TY2FsZSgpOworCiAgICAgY29uc3QgRmxvYXRTaXplJiBhbW91
bnQoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFNjYWxlPj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJp
dmF0ZToKLSAgICBTY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCi0gICAgICAgIDogSXRlbShJ
dGVtVHlwZTo6U2NhbGUpCi0gICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgewotICAgIH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBTY2FsZShjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgbV9z
aXplOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2NhbGU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zaXplOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFNjYWxlPj4gU2NhbGU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2NhbGU7Cisg
ICAgZGVjb2RlciA+PiBzY2FsZTsKKyAgICBpZiAoIXNjYWxlKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFNjYWxlOjpjcmVhdGUoKnNjYWxlKTsKK30KKwogY2xh
c3MgQ29uY2F0ZW5hdGVDVE0gOiBwdWJsaWMgSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxDb25jYXRlbmF0ZUNUTT4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQpA
QCAtMjkzLDIyICszODEsNTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb25jYXRlbmF0ZUNUTShtYXRyaXgpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5Db25jYXRlbmF0ZUNUTSgpOworCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Q29uY2F0ZW5hdGVDVE0+PiBkZWNv
ZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpOworICAgIFdFQkNPUkVfRVhQT1JUIENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKIH07CiAKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbmNhdGVuYXRlQ1RNOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdHJhbnNmb3JtOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPENvbmNhdGVuYXRlQ1RNPj4gQ29u
Y2F0ZW5hdGVDVE06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEFm
ZmluZVRyYW5zZm9ybT4gdHJhbnNmb3JtOworICAgIGRlY29kZXIgPj4gdHJhbnNmb3JtOworICAg
IGlmICghdHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIENvbmNhdGVuYXRlQ1RNOjpjcmVhdGUoKnRyYW5zZm9ybSk7Cit9CisKIGNsYXNzIFNldFN0
YXRlIDogcHVibGljIEl0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2V0U3RhdGU+IGNy
ZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2V0U3RhdGUoc3RhdGUsIGZsYWdzKSk7CiAgICAgfQorCisgICAgc3RhdGljIFJl
ZjxTZXRTdGF0ZT4gY3JlYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0
ZUNoYW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNldFN0YXRlKHN0
YXRlQ2hhbmdlKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2V0U3Rh
dGUoKTsKICAgICAKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKQEAgLTMxOSwxOCArNDM2LDc3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBidWlsZGVyU3RhdGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyk7CiAKICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGVDaGFuZ2VzKFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3MpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxSZWY8U2V0U3RhdGU+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAg
IFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAgIDogSXRlbShJdGVtVHlw
ZTo6U2V0U3RhdGUpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSwgZmxhZ3MpCi0gICAgewotICAg
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYpOwogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGU7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX3N0YXRlLm1fY2hhbmdlRmxhZ3M7CisKKyAgICAvLyBGSVhNRTog
RW5jb2RlIHRoZSBvdGhlciBzdGF0ZSBjaGFuZ2VzLgorCisgICAgaWYgKG1fc3RhdGUubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KQorICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5zdHJva2VDb2xvcjsKKworICAg
IGlmIChtX3N0YXRlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxDb2xvckNoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgbV9zdGF0ZS5tX3N0YXRlLmZp
bGxDb2xvcjsKKworICAgIGlmIChtX3N0YXRlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgZW5jb2RlciA8PCBtX3N0YXRl
Lm1fc3RhdGUuYWxwaGE7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxS
ZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
T3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZs
YWdzOworICAgIGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7CisgICAgaWYgKCFjaGFuZ2VGbGFncykK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlIHN0YXRlQ2hhbmdlOworICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hh
bmdlRmxhZ3M7CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlv
bmFsPENvbG9yPiBzdHJva2VDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsK
KyAgICAgICAgaWYgKCFzdHJva2VDb2xvcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VD
b2xvcjsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkgeworICAgICAgICBPcHRp
b25hbDxDb2xvcj4gZmlsbENvbG9yOworICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKKyAg
ICAgICAgaWYgKCFmaWxsQ29sb3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xvcjsKKyAg
ICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGZsb2F0PiBh
bHBoYTsKKyAgICAgICAgZGVjb2RlciA+PiBhbHBoYTsKKyAgICAgICAgaWYgKCFhbHBoYSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5hbHBoYSA9ICphbHBoYTsKKyAgICB9CisKKyAgICByZXR1cm4gU2V0U3RhdGU6OmNyZWF0
ZShzdGF0ZUNoYW5nZSk7Cit9CisKIGNsYXNzIFNldExpbmVDYXAgOiBwdWJsaWMgSXRlbSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTZXRMaW5lQ2FwPiBjcmVhdGUoTGluZUNhcCBsaW5lQ2Fw
KQpAQCAtNzQxLDE2ICs5MTcsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEcmF3UmVjdChyZWN0LCBib3JkZXJUaGlja25lc3MpKTsKICAgICB9CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3UmVjdCgpOworCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBmbG9hdCBib3JkZXJUaGlja25lc3MoKSBjb25z
dCB7IHJldHVybiBtX2JvcmRlclRoaWNrbmVzczsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd1JlY3Q+PiBkZWNvZGUoRGVjb2RlciYpOwor
CiBwcml2YXRlOgotICAgIERyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9y
ZGVyVGhpY2tuZXNzKQotICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UmVjdCkK
LSAgICAgICAgLCBtX3JlY3QocmVjdCkKLSAgICAgICAgLCBtX2JvcmRlclRoaWNrbmVzcyhib3Jk
ZXJUaGlja25lc3MpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpOwogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVjdDsgfQpAQCAtNzU5LDYgKzkzNSwzNCBAQCBwcml2YXRlOgogICAgIGZsb2F0
IG1fYm9yZGVyVGhpY2tuZXNzOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
RHJhd1JlY3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgbV9yZWN0OworICAgIGVuY29kZXIgPDwgbV9ib3JkZXJUaGlja25lc3M7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1JlY3Q+PiBEcmF3UmVjdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0Owor
ICAgIGRlY29kZXIgPj4gcmVjdDsKKyAgICBpZiAoIXJlY3QpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxmbG9hdD4gYm9yZGVyVGhpY2tuZXNzOworICAgIGRl
Y29kZXIgPj4gYm9yZGVyVGhpY2tuZXNzOworICAgIGlmICghYm9yZGVyVGhpY2tuZXNzKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVtID0gRHJhd1JlY3Q6OmNy
ZWF0ZSgqcmVjdCwgKmJvcmRlclRoaWNrbmVzcyk7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdp
bmdJdGVtKGRlY29kZXIsIGl0ZW0uZ2V0KCkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGl0ZW07Cit9CisKIGNsYXNzIERyYXdMaW5lIDogcHVibGljIERyYXdp
bmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdMaW5lPiBjcmVhdGUoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC04NzgsMTQg
KzEwODIsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0
aChwYXRoKSk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd1BhdGgo
KTsKKwogICAgIGNvbnN0IFBhdGgmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KIAor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdQYXRo
Pj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBEcmF3UGF0aChjb25zdCBQYXRo
JiBwYXRoKQotICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0aCkKLSAgICAg
ICAgLCBtX3BhdGgocGF0aCkKLSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdQ
YXRoKGNvbnN0IFBhdGgmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CiAKQEAgLTg5NCw2ICsxMDk5LDI4IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
UGF0aCBtX3BhdGg7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3UGF0
aDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3Bh
dGg7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BhdGg+
PiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGF0
aD4gcGF0aDsKKyAgICBkZWNvZGVyID4+IHBhdGg7CisgICAgaWYgKCFwYXRoKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVtID0gRHJhd1BhdGg6OmNyZWF0ZSgq
cGF0aCk7CisKKyAgICBpZiAoIWRlY29kZUZvckRyYXdpbmdJdGVtKGRlY29kZXIsIGl0ZW0uZ2V0
KCkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGl0ZW07Cit9
CisKIGNsYXNzIERyYXdGb2N1c1JpbmdQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPERyYXdGb2N1c1JpbmdQYXRoPiBjcmVhdGUoY29uc3QgUGF0aCYg
cGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAt
OTY1LDE0ICsxMTkyLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsbFJlY3QocmVjdCkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkZp
bGxSZWN0KCk7CisKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Rmls
bFJlY3Q+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIEZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKLSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RmlsbFJl
Y3QpCi0gICAgICAgICwgbV9yZWN0KHJlY3QpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBGaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3JlY3Q7IH0KQEAgLTk4MCw2ICsxMjA4LDI4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
cmVjdDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZpbGxSZWN0OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVjdDsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxGaWxsUmVjdD4+IEZpbGxS
ZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IHJlY3Q7CisgICAgZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaXRlbSA9IEZpbGxSZWN0OjpjcmVhdGUoKnJl
Y3QpOworCisgICAgaWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgp
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQor
CiAvLyBGSVhNRTogTWFrZSB0aGVzZSBpbmhlcml0IGZyb20gRmlsbFJlY3QgcHJvcGVyLgogY2xh
c3MgRmlsbFJlY3RXaXRoQ29sb3IgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgpAQCAt
OTg4LDE2ICsxMjM4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsbFJlY3RXaXRoQ29sb3IocmVjdCwgY29sb3IpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5GaWxsUmVjdFdpdGhDb2xvcigpOworCiAgICAgRmxvYXRSZWN0IHJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2NvbG9yOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFJlZjxGaWxsUmVjdFdpdGhDb2xvcj4+IGRlY29kZShEZWNvZGVyJik7CisK
IHByaXZhdGU6Ci0gICAgRmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IpCi0gICAgICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aENvbG9yKQotICAgICAgICAsIG1fcmVjdChyZWN0KQotICAgICAgICAsIG1fY29sb3Io
Y29sb3IpCi0gICAgewotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBGaWxsUmVjdFdpdGhDb2xv
cihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjdDsgfQpAQCAtMTAwNiw2ICsxMjU2LDM0IEBAIHByaXZhdGU6CiAgICAgQ29sb3IgbV9j
b2xvcjsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZpbGxSZWN0V2l0aENv
bG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
cmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3I7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitPcHRpb25hbDxSZWY8RmlsbFJlY3RXaXRoQ29sb3I+PiBGaWxsUmVjdFdpdGhDb2xvcjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0
OworICAgIGRlY29kZXIgPj4gcmVjdDsKKyAgICBpZiAoIXJlY3QpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2RlciA+
PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgYXV0byBpdGVtID0gRmlsbFJlY3RXaXRoQ29sb3I6OmNyZWF0ZSgqcmVjdCwgKmNvbG9y
KTsKKworICAgIGlmICghZGVjb2RlRm9yRHJhd2luZ0l0ZW0oZGVjb2RlciwgaXRlbS5nZXQoKSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gaXRlbTsKK30KKwog
Y2xhc3MgRmlsbFJlY3RXaXRoR3JhZGllbnQgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8RmlsbFJlY3RXaXRoR3JhZGllbnQ+IGNyZWF0ZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKQEAgLTEwMzcsMjAgKzEzMTUsMTggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxsQ29tcG9zaXRlZFJlY3Qo
cmVjdCwgY29sb3IsIG9wLCBibGVuZE1vZGUpKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5GaWxsQ29tcG9zaXRlZFJlY3QoKTsKKwogICAgIEZsb2F0UmVjdCByZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2xvcjsgfQogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9vcDsgfQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2JsZW5kTW9kZTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RmlsbENvbXBvc2l0ZWRSZWN0Pj4gZGVjb2RlKERlY29k
ZXImKTsKKwogcHJpdmF0ZToKLSAgICBGaWxsQ29tcG9zaXRlZFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQotICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpGaWxsQ29tcG9z
aXRlZFJlY3QpCi0gICAgICAgICwgbV9yZWN0KHJlY3QpCi0gICAgICAgICwgbV9jb2xvcihjb2xv
cikKLSAgICAgICAgLCBtX29wKG9wKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkK
LSAgICB7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIEZpbGxDb21wb3NpdGVkUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
OwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtMTA2MSw2ICsxMzM3LDQ2IEBA
IHByaXZhdGU6CiAgICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwogfTsKIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgRmlsbENvbXBvc2l0ZWRSZWN0OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcmVjdDsKKyAgICBlbmNvZGVyIDw8IG1f
Y29sb3I7CisgICAgZW5jb2RlciA8PCBtX29wOworICAgIGVuY29kZXIgPDwgbV9ibGVuZE1vZGU7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RmlsbENvbXBvc2l0
ZWRSZWN0Pj4gRmlsbENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAgZGVjb2RlciA+PiByZWN0OworICAg
IGlmICghcmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9yOworICAgIGlmICghY29sb3IpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVy
YXRvcj4gb3A7CisgICAgZGVjb2RlciA+PiBvcDsKKyAgICBpZiAoIW9wKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7Cisg
ICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CisgICAgaWYgKCFibGVuZE1vZGUpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGl0ZW0gPSBGaWxsQ29tcG9zaXRlZFJlY3Q6
OmNyZWF0ZSgqcmVjdCwgKmNvbG9yLCAqb3AsICpibGVuZE1vZGUpOworCisgICAgaWYgKCFkZWNv
ZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQorCiBjbGFzcyBGaWxsUm91bmRlZFJl
Y3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RmlsbFJv
dW5kZWRSZWN0PiBjcmVhdGUoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMTEyNCwxNCArMTQ0MCwxNSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGxQYXRoKHBhdGgpKTsKICAg
ICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWxsUGF0aCgpOworCiAgICAgY29u
c3QgUGF0aCYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RmlsbFBhdGg+PiBkZWNvZGUoRGVj
b2RlciYpOworCiBwcml2YXRlOgotICAgIEZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCi0gICAg
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkZpbGxQYXRoKQotICAgICAgICAsIG1fcGF0aChw
YXRoKQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsbFBhdGgoY29uc3QgUGF0
aCYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0K
QEAgLTExMzksNiArMTQ1NiwyOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFBhdGggbV9wYXRoOwog
fTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRmlsbFBhdGg6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wYXRoOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEZpbGxQYXRoPj4gRmlsbFBhdGg6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CisgICAg
ZGVjb2RlciA+PiBwYXRoOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIGF1dG8gaXRlbSA9IEZpbGxQYXRoOjpjcmVhdGUoKnBhdGgpOworCisgICAg
aWYgKCFkZWNvZGVGb3JEcmF3aW5nSXRlbShkZWNvZGVyLCBpdGVtLmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBpdGVtOworfQorCiBjbGFzcyBGaWxs
RWxsaXBzZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxG
aWxsRWxsaXBzZT4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEyMzksMTQgKzE1
NzgsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGVhclJlY3Qo
cmVjdCkpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNsZWFyUmVjdCgp
OworCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAorICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPENsZWFyUmVjdD4+
IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgQ2xlYXJSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKLSAgICAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6Q2xlYXJSZWN0KQot
ICAgICAgICAsIG1fcmVjdChyZWN0KQotICAgIHsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQg
Q2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVj
dDsgfQpAQCAtMTI1NCw2ICsxNTk0LDI4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVj
dDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENsZWFyUmVjdDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8Q2xlYXJSZWN0Pj4gQ2xlYXJS
ZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IHJlY3Q7CisgICAgZGVjb2RlciA+PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaXRlbSA9IENsZWFyUmVjdDo6Y3JlYXRlKCpy
ZWN0KTsKKworICAgIGlmICghZGVjb2RlRm9yRHJhd2luZ0l0ZW0oZGVjb2RlciwgaXRlbS5nZXQo
KSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gaXRlbTsKK30K
KwogI2lmIFVTRShDRykKIGNsYXNzIEFwcGx5U3Ryb2tlUGF0dGVybiA6IHB1YmxpYyBJdGVtIHsK
IHB1YmxpYzoKQEAgLTEzMTEsNiArMTY3MywzMzMgQEAgcHJpdmF0ZToKIAogV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEl0ZW0mKTsKIAordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3R5cGU7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgewor
ICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8U2F2
ZT4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgor
ICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFJlc3RvcmU+KCp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgorICAgICAgICBlbmNvZGVyIDw8IGRv
d25jYXN0PFRyYW5zbGF0ZT4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpSb3RhdGU6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Um90YXRlPigqdGhpcyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgorICAgICAgICBlbmNv
ZGVyIDw8IGRvd25jYXN0PFNjYWxlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENv
bmNhdGVuYXRlQ1RNPigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0YXRlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFNldFN0YXRlPigqdGhpcyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29k
ZSBTZXRMaW5lQ2FwIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUg
Y2Fubm90IHlldCBlbmNvZGUgU2V0TGluZURhc2giKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxp
c3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBTZXRMaW5lSm9pbiIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgorICAgICAgICBXVEZM
b2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgU2V0
TWl0ZXJMaW1pdCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNo
YWRvdzoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNh
bm5vdCB5ZXQgZW5jb2RlIENsZWFyU2hhZG93Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXA6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06
OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBDbGlwIik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXQ6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6
Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBDbGlwT3V0Iik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBDbGlwT3V0VG9Q
YXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgorICAg
ICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBl
bmNvZGUgQ2xpcFBhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2Rl
IGNhbm5vdCB5ZXQgZW5jb2RlIERyYXdHbHlwaHMiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ltYWdlOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0
OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd0ltYWdlIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOgorICAgICAgICBXVEZMb2dB
bHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd1Rp
bGVkSW1hZ2UiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVk
U2NhbGVkSW1hZ2U6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVu
Y29kZSBjYW5ub3QgeWV0IGVuY29kZSBEcmF3VGlsZWRTY2FsZWRJbWFnZSIpOworICAgICAgICBi
cmVhazsKKyNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQorICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNw
bGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIERyYXdOYXRpdmVJbWFnZSIp
OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJu
OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90
IHlldCBlbmNvZGUgRHJhd1BhdHRlcm4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1JlY3Q6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1JlY3Q+KCp0
aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVu
Y29kZSBEcmF3TGluZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TGluZXNGb3JUZXh0OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpl
bmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd0xpbmVzRm9yVGV4dCIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgorICAgICAg
ICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNv
ZGUgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlz
dDo6SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIERyYXdFbGxpcHNlIik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgorICAgICAgICBlbmNvZGVyIDw8
IGRvd25jYXN0PERyYXdQYXRoPigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlM
aXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNvZGUgRHJhd0ZvY3VzUmluZ1BhdGgiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgor
ICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHll
dCBlbmNvZGUgRHJhd0ZvY3VzUmluZ1JlY3RzIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxSZWN0
PigqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0
aENvbG9yOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxSZWN0V2l0aENvbG9yPigq
dGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUg
Y2Fubm90IHlldCBlbmNvZGUgRmlsbFJlY3RXaXRoR3JhZGllbnQiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgorICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBGaWxsUm91bmRl
ZFJlY3QiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVu
Y29kZSBjYW5ub3QgeWV0IGVuY29kZSBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKKyAgICAgICAgZW5jb2RlciA8
PCBkb3duY2FzdDxGaWxsUGF0aD4oKnRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsRWxsaXBzZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6
SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIEZpbGxFbGxpcHNlIik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBTdHJva2VSZWN0
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVu
Y29kZSBTdHJva2VQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUVsbGlwc2U6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVu
Y29kZSBjYW5ub3QgeWV0IGVuY29kZSBTdHJva2VFbGxpcHNlIik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2Fz
dDxDbGVhclJlY3Q+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlz
dDo6SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjYW5u
b3QgeWV0IGVuY29kZSBFbmRUcmFuc3BhcmVuY3lMYXllciIpOworICAgICAgICBicmVhazsKKyNp
ZiBVU0UoQ0cpCisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgorICAgICAg
ICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY2Fubm90IHlldCBlbmNv
ZGUgQXBwbHlTdHJva2VQYXR0ZXJuIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5RmlsbFBhdHRlcm46CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6
Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBBcHBseUZpbGxQYXR0ZXJuIik7CisgICAg
ICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNh
bm5vdCB5ZXQgZW5jb2RlIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEl0ZW0+
PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJdGVtVHlw
ZT4gaXRlbVR5cGU7CisgICAgZGVjb2RlciA+PiBpdGVtVHlwZTsKKyAgICBpZiAoIWl0ZW1UeXBl
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgc3dpdGNoICgqaXRlbVR5cGUp
IHsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gU2F2
ZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRl
bVR5cGU6OlJlc3RvcmU6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBSZXN0b3JlOjpkZWNvZGUo
ZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6VHJh
bnNsYXRlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gVHJhbnNsYXRlOjpkZWNvZGUoZGVjb2Rl
cikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1v
dmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgor
ICAgICAgICBpZiAoYXV0byBpdGVtID0gUm90YXRlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIGlmIChh
dXRvIGl0ZW0gPSBTY2FsZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gQ29uY2F0ZW5hdGVDVE06OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICAgICAgaWYgKGF1dG8gaXRl
bSA9IFNldFN0YXRlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNw
bGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFNldExpbmVDYXAiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBT
ZXRMaW5lRGFzaCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
Sm9pbjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNh
bm5vdCB5ZXQgZGVjb2RlIFNldExpbmVKb2luIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxp
c3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBTZXRNaXRlckxpbWl0Iik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAgICBXVEZM
b2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgQ2xl
YXJTaGFkb3ciKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQg
ZGVjb2RlIENsaXAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91
dDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5v
dCB5ZXQgZGVjb2RlIENsaXBPdXQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRl
bTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIENsaXBPdXRUb1BhdGgiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBDbGlwUGF0aCIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgorICAgICAgICBX
VEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUg
RHJhd0dseXBocyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1h
Z2U6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5u
b3QgeWV0IGRlY29kZSBEcmF3SW1hZ2UiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1RpbGVkSW1hZ2U6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6
Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBEcmF3VGlsZWRJbWFnZSIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVj
b2RlIERyYXdUaWxlZFNjYWxlZEltYWdlIik7CisgICAgICAgIGJyZWFrOworI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUgY2Fubm90IHlldCBkZWNvZGUgRHJhd05hdGl2ZUltYWdlIik7CisgICAgICAgIGJyZWFrOwor
I2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBEcmF3UGF0
dGVybiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKKyAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdSZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBE
cmF3TGluZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNG
b3JUZXh0OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUg
Y2Fubm90IHlldCBkZWNvZGUgRHJhd0xpbmVzRm9yVGV4dCIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgorICAgICAgICBXVEZM
b2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlciIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3RWxsaXBzZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRl
bTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIERyYXdFbGxpcHNlIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgorICAgICAgICBpZiAoYXV0byBpdGVtID0g
RHJhd1BhdGg6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJE
aXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIERyYXdGb2N1c1JpbmdQ
YXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdS
ZWN0czoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNh
bm5vdCB5ZXQgZGVjb2RlIERyYXdGb2N1c1JpbmdSZWN0cyIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxS
ZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxs
UmVjdFdpdGhDb2xvcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgorICAgICAgICBXVEZMb2dB
bHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRmlsbFJl
Y3RXaXRoR3JhZGllbnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bENvbXBvc2l0ZWRSZWN0OgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRmlsbENvbXBvc2l0ZWRS
ZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlM
aXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRmlsbFJvdW5kZWRSZWN0Iik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
OgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUgY2Fubm90
IHlldCBkZWNvZGUgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxs
UGF0aDo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0
OjpJdGVtOjpkZWNvZGUgY2Fubm90IHlldCBkZWNvZGUgRmlsbEVsbGlwc2UiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFN0cm9rZVJl
Y3QiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQg
ZGVjb2RlIFN0cm9rZVBhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlRWxsaXBzZToKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6
ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIFN0cm9rZUVsbGlwc2UiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgorICAgICAgICBpZiAoYXV0byBpdGVtID0g
Q2xlYXJSZWN0OjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIEJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RW5k
VHJhbnNwYXJlbmN5TGF5ZXI6CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6Okl0
ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBFbmRUcmFuc3BhcmVuY3lMYXllciIpOworICAg
ICAgICBicmVhazsKKyNpZiBVU0UoQ0cpCisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQ
YXR0ZXJuOgorICAgICAgICBXVEZMb2dBbHdheXMoIkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUg
Y2Fubm90IHlldCBkZWNvZGUgQXBwbHlTdHJva2VQYXR0ZXJuIik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBBcHBseUZpbGxQ
YXR0ZXJuIik7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QXBw
bHlEZXZpY2VTY2FsZUZhY3RvcjoKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6
SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAt
MTM3OSwzICsyMDY4LDYzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShBcHBseUZpbGxQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BM
QVlMSVNUX0lURU0oQ2xlYXJTaGFkb3cpCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZSwKKyAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmUsCisgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpSb3RhdGUsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
Y2FsZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RN
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGUsCisgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwLAorICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2gsCisgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbiwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldE1pdGVyTGltaXQsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGVhclNoYWRvdywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXAs
CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0LAorICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aCwKKyAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0dseXBocywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdJbWFnZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdU
aWxlZEltYWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVk
U2NhbGVkSW1hZ2UsCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkK
KyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyNl
bmRpZgorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCisg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lLAorICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIsCisgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0ZvY3VzUmluZ1BhdGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUmVjdHMsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsUmVjdCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0
V2l0aENvbG9yLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RX
aXRoR3JhZGllbnQsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29t
cG9zaXRlZFJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91
bmRlZFJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQ
YXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2UsCisg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0LAorICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aCwKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3QsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXIsCisjaWYgVVNFKENHKQorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybiwKKyNlbmRpZgorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcgorICAg
ID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAppbmRleCBlMjBmM2VkMTNjYjZlNTVmNzgyZThjOWFkYzEzMDg3MmRlNmVm
MTMyLi5hMjUzNTMyMDlkMDlmYzBlZjg1ZTdiY2Y0ZGFkYmFiNTQ4NTdiNzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQg
UmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIGlmIChj
aGFuZ2VzRnJvbUxhc3RTdGF0ZSkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3Bs
YXlMaXN0cywgc3RyZWFtIDw8ICJwcmUtZHJhd2luZywgc2F2aW5nIHN0YXRlICIgPDwgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZXNGcm9tTGFz
dFN0YXRlKSk7CiAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZChTZXRTdGF0ZTo6Y3Jl
YXRlKHN0YXRlQ2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSkpOwotICAgICAg
ICAgICAgc3RhdGVDaGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSAwOworICAgICAgICAgICAgc3RhdGVD
aGFuZ2VzLm1fY2hhbmdlRmxhZ3MgPSB7IH07CiAgICAgICAgICAgICBjdXJyZW50U3RhdGUoKS5s
YXN0RHJhd2luZ1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1fc3RhdGU7CiAgICAgICAgIH0KICAgICAg
ICAgY3VycmVudFN0YXRlKCkud2FzVXNlZEZvckRyYXdpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNTE2ZDRkZjhjN2ZkOWViNWYyOTk3NTY1OGRk
NzYzZDE4MDBjM2NkNi4uYTRlNjg4NjFjZjMwZWNiYWUzOTYyYmJiMzQ0ZTliZDg3ODdmNGFlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC01MSw4ICs1MSw4IEBA
IGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEltcGwgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsK
IHB1YmxpYzoKLSAgICBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgdmlydHVhbCB+UmVjb3JkZXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVj
b3JkZXIoKTsKIAogICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bs
YXlMaXN0Lml0ZW1Db3VudCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5oCmluZGV4IDRmOTY4ZTg0NmM2NTc2YWI1NTU5YWYxMjQwMTI0MTE2YmU2MzFhNmUuLjYwZTY1
YWYyNzhlNjQ5YjFmMDRhMzQ0MGZiNTRhNTRkNTRhMmNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5
ZXIpOwogcHVibGljOgotICAgIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3Bs
YXlMaXN0Jik7Ci0gICAgflJlcGxheWVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+UmVwbGF5ZXIoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0
ID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlz
dD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tS
ZXBsYXlMaXN0ID0gZmFsc2UpOwogICAgIAogcHJpdmF0ZToKICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgbV9kaXNwbGF5TGlzdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>