<?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>222439</bug_id>
          
          <creation_ts>2021-02-25 14:35:19 -0800</creation_ts>
          <short_desc>Reduce explicit usage of [objC retain] in WebKit</short_desc>
          <delta_ts>2021-02-26 17:56:16 -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>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1733524</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 14:35:19 -0800</bug_when>
    <thetext>Reduce explicit usage of [objC retain] in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733576</commentid>
    <comment_count>1</comment_count>
      <attachid>421580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 15:57:17 -0800</bug_when>
    <thetext>Created attachment 421580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733583</commentid>
    <comment_count>2</comment_count>
      <attachid>421580</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-25 16:18:23 -0800</bug_when>
    <thetext>Comment on attachment 421580
Patch

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

I did not manage to spot the pattern for when you chose to use auto/retainPtr

&gt; Source/WebCore/platform/ios/WebCoreMotionManager.mm:182
&gt; +        if (!m_updateTimer)
&gt; +            m_updateTimer = [NSTimer scheduledTimerWithTimeInterval:kMotionUpdateInterval target:self selector:@selector(update) userInfo:nil repeats:YES];

Looks like you fixed a leak here. Maybe land this separately?

&gt; Source/WebCore/platform/ios/wak/WebCoreThread.mm:219
&gt; +static void SendDelegateMessage(RetainPtr&lt;NSInvocation&gt; invocation)

Why not RetainPtr&amp;&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733586</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 16:24:10 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 421580 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421580&amp;action=review
&gt; 
&gt; I did not manage to spot the pattern for when you chose to use auto/retainPtr
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebCoreMotionManager.mm:182
&gt; &gt; +        if (!m_updateTimer)
&gt; &gt; +            m_updateTimer = [NSTimer scheduledTimerWithTimeInterval:kMotionUpdateInterval target:self selector:@selector(update) userInfo:nil repeats:YES];
&gt; 
&gt; Looks like you fixed a leak here. Maybe land this separately?

A lot of my RetainPtr patches fixed leaks or over-releases. I usually have not split those into separate patches but I can if you feel this is better.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/wak/WebCoreThread.mm:219
&gt; &gt; +static void SendDelegateMessage(RetainPtr&lt;NSInvocation&gt; invocation)
&gt; 
&gt; Why not RetainPtr&amp;&amp;?

I&apos;ll update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733587</commentid>
    <comment_count>4</comment_count>
      <attachid>421580</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-25 16:28:50 -0800</bug_when>
    <thetext>Comment on attachment 421580
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/ios/WebCoreMotionManager.mm:182
&gt;&gt;&gt; +            m_updateTimer = [NSTimer scheduledTimerWithTimeInterval:kMotionUpdateInterval target:self selector:@selector(update) userInfo:nil repeats:YES];
&gt;&gt; 
&gt;&gt; Looks like you fixed a leak here. Maybe land this separately?
&gt; 
&gt; A lot of my RetainPtr patches fixed leaks or over-releases. I usually have not split those into separate patches but I can if you feel this is better.

I don’t feel strongly.

Generally I like the idea of separating bug fixes from refactoring, even if we discover the bug fixes while refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733588</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 16:29:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 421580 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421580&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/ios/WebCoreMotionManager.mm:182
&gt; &gt;&gt;&gt; +            m_updateTimer = [NSTimer scheduledTimerWithTimeInterval:kMotionUpdateInterval target:self selector:@selector(update) userInfo:nil repeats:YES];
&gt; &gt;&gt; 
&gt; &gt;&gt; Looks like you fixed a leak here. Maybe land this separately?
&gt; &gt; 
&gt; &gt; A lot of my RetainPtr patches fixed leaks or over-releases. I usually have not split those into separate patches but I can if you feel this is better.
&gt; 
&gt; I don’t feel strongly.
&gt; 
&gt; Generally I like the idea of separating bug fixes from refactoring, even if
&gt; we discover the bug fixes while refactoring.

The whole point of this refactoring is to find &amp; fix those bugs though :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733637</commentid>
    <comment_count>6</comment_count>
      <attachid>421596</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 19:08:05 -0800</bug_when>
    <thetext>Created attachment 421596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733640</commentid>
    <comment_count>7</comment_count>
      <attachid>421598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 19:20:56 -0800</bug_when>
    <thetext>Created attachment 421598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733641</commentid>
    <comment_count>8</comment_count>
      <attachid>421599</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-25 19:22:19 -0800</bug_when>
    <thetext>Created attachment 421599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733961</commentid>
    <comment_count>9</comment_count>
      <attachid>421599</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-26 13:35:25 -0800</bug_when>
    <thetext>Comment on attachment 421599
Patch

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

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:286
&gt; +    static RetainPtr&lt;NSSet&gt; fontFamilySet = [NSSet setWithObjects:

Why not use NeverDestroyed here? I know we don’t have this project set up to fail to build if we have exit-time destructors, but such destructors still aren’t desirable. Same for all the other globals. Otherwise, this patch adds a lot of exit time code to DumpRenderTree and other tools; the code is cleaner without NeverDestroyed, but the binary is a tiny bit bigger and exit might even be a little bit slower.

The old code we are replacing did not release these objects on exit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734031</commentid>
    <comment_count>10</comment_count>
      <attachid>421714</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-26 15:31:58 -0800</bug_when>
    <thetext>Created attachment 421714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734032</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-26 15:32:56 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 421599 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421599&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:286
&gt; &gt; +    static RetainPtr&lt;NSSet&gt; fontFamilySet = [NSSet setWithObjects:
&gt; 
&gt; Why not use NeverDestroyed here? I know we don’t have this project set up to
&gt; fail to build if we have exit-time destructors, but such destructors still
&gt; aren’t desirable. Same for all the other globals. Otherwise, this patch adds
&gt; a lot of exit time code to DumpRenderTree and other tools; the code is
&gt; cleaner without NeverDestroyed, but the binary is a tiny bit bigger and exit
&gt; might even be a little bit slower.
&gt; 
&gt; The old code we are replacing did not release these objects on exit.

I figured it may not be worth the trouble for testing code but I updated the patch as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734049</commentid>
    <comment_count>12</comment_count>
      <attachid>421721</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-26 15:54:15 -0800</bug_when>
    <thetext>Created attachment 421721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734104</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-26 17:55:01 -0800</bug_when>
    <thetext>Committed r273610: &lt;https://commits.webkit.org/r273610&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421721.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734105</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-26 17:56:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/74816519&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421580</attachid>
            <date>2021-02-25 15:57:17 -0800</date>
            <delta_ts>2021-02-25 19:08:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222439-20210225155717.patch</filename>
            <type>text/plain</type>
            <size>76157</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTA0OGRiN2M3ZGE2ODdkN2MxZjk2NDI2OTIxNDJiNDhmZDBiNjViLi5kMzYyYjUzNDhkYzE2MDgz
ZTYwY2FlYzY0MjM0NTZkZWI0M2RmMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKCtbSlNDb250
ZXh0IGN1cnJlbnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGJlZ2luQ2FsbGJh
Y2tXaXRoRGF0YTpjYWxsZWVWYWx1ZTp0aGlzVmFsdWU6YXJndW1lbnRDb3VudDphcmd1bWVudHM6
XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBlbmRDYWxsYmFja1dpdGhEYXRhOl0pOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
Lm1tOgorICAgICAgICAoLVtUaW55RE9NTm9kZSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgor
CiAyMDIxLTAyLTI1ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBMaXN0IG9mIGdyaWQgbm9kZXMgaXMgaW5jb21wbGV0ZSBpbiBM
YXlvdXQgc2lkZWJhciBwYW5lbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNWYxMTIxYTg1ZjJhY2JkOWRhMzAz
MWQ3ODc3Y2Q5ZmRkMzIzYjEuLjlhNTI2NzdkNzc5NDZhMTE2ODAyYjQ1YjMyNTM2ZDQxN2E5YTZh
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4g
V2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORF0pOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc3VsdElzVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChXZWJEZWZhdWx0Rm9udCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlRGVjb2RlckFzc2V0T3B0aW9ucyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjp0ZW1wb3JhcnlE
aXJlY3RvcnlBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlv
bk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGNoZWNrQ2xpZW50
U3RhdHVzXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoU2VuZE1lc3NhZ2UpOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRDYWxsRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKToKKyAgICAgICAgKFJ1
bldlYlRocmVhZCk6CisgICAgICAgIChXZWJUaHJlYWROU1J1bkxvb3ApOgorCiAyMDIxLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWFrZSBpbnRlcm5hbCBDb250ZW50RmlsdGVyaW5nIHRlc3RzIG5vdCB0aW1lIG91dCBhZnRlciBy
MjcyMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGRhNjM2YmRjMzUyNTc3NmE0OGI1MzIxY2RjYjRlZmFhMGE0NGI0
YzkuLjJmYzAwZGFjNmMyMmFmM2Y3MDY3MDQyZTA2ZjJiOGUxMmIwOGM5YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdCBieSB1c2luZyBS
ZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmlzRmVhdHVyZUZsYWdFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
LVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EXSk6CisKIDIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViQ29udGVudCBzYW5kYm94IHRvIGFsbG93IGl0IHRv
IGNhbGwgdGFza19jcmVhdGVfaWRlbnRpdHlfdG9rZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGM0NmYyNDY3ODQ5OWJmZWMxOWZiNTMwNWZlYTY2YTQ3NWY3YzFjZmEuLjFhYzU1
ZWQ1MTBiYTY5OWJhM2FiOWM1N2UyZjkyNGYwNmU4MDQ4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBy
ZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0
IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lXSk6CisgICAg
ICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dlYlN0cmluZ1Ry
dW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5hZ2VyIF9z
dG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKF9XZWJDcmVhdGVGcmFnbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOgorICAgICAgICAoK1tXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKyAgICAgICAgKCtb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tOgorICAgICAgICAoV2Vi
S2l0Ojppc0ZlYXR1cmVGbGFnRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jaGVja0RpZFBlcmZvcm1GaXJzdE5h
dmlnYXRpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQcmVmZXJlbmNlczpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBwcmVmZXJlbmNlc10pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEdyb3Vw
TmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMjEtMDItMjUg
IFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MzQ2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
aW5kZXggZTNhZjBiMTQxZGU4MTdkMjg3NThiMzAzODAxMWMyZDFlY2NhMzYyYi4uMGJhNzk5MWVm
N2IyN2RhZTI1NTFkNjA0ZWZjM2RjN2IzMzJjM2JkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KQEAgLTI0MiwxMyArMjQyLDEzIEBAICsgKE5TQXJyYXkgKiljdXJyZW50
QXJndW1lbnRzCiAgICAgaWYgKCFlbnRyeS0+Y3VycmVudEFyZ3VtZW50cykgewogICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICAgICAg
c2l6ZV90IGNvdW50ID0gZW50cnktPmFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIE5TTXV0YWJsZUFy
cmF5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNvdW50XTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6
W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+YXJndW1lbnRzW2ldIGluQ29udGV4
dDpjb250ZXh0XSBhdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIGVudHJ5LT5jdXJyZW50
QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICBlbnRyeS0+Y3VycmVudEFyZ3VtZW50cyA9
IFdURk1vdmUoYXJndW1lbnRzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZW50cnktPmN1cnJlbnRB
cmd1bWVudHM7CisgICAgcmV0dXJuIGVudHJ5LT5jdXJyZW50QXJndW1lbnRzLmdldCgpOwogfQog
CiAtIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTM3MSw3ICszNzEsNyBA
QCAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tE
YXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUgogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFj
ayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwotICAgICpjYWxsYmFja0RhdGEg
PSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWlu
XSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwg
fTsKKyAgICAqY2FsbGJhY2tEYXRhID0gQ2FsbGJhY2tEYXRhIHsgcHJldlN0YWNrLCBzZWxmLCBz
ZWxmLmV4Y2VwdGlvbiwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJn
dW1lbnRzLCBuaWwgfTsKICAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOwogICAg
IHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQpAQCAtMzc5LDkgKzM3OSw3IEBAIC0gKHZvaWQpYmVn
aW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEgY2FsbGVlVmFs
dWU6KEpTVmFsdWVSCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxiYWNrRGF0YSAq
KWNhbGxiYWNrRGF0YQogewogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
Ci0gICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsK
LSAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07Ci0gICAgW2Nh
bGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKKyAgICBzZWxmLmV4Y2VwdGlv
biA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhjZXB0aW9uLmdldCgpOwogICAgIHRocmVhZC5t
X2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKaW5kZXggOTU4
YzQ3OWY0MWNlODQxM2ZjNjk0YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uNDRjNWY1OGUzYWMxMTA0MDRl
MDM3YjU2OTM4NjFjYzIyZDE4MDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0SW50ZXJuYWwuaApAQCAtMzIsMTIgKzMyLDEyIEBACiBzdHJ1Y3QgQ2FsbGJhY2tE
YXRhIHsKICAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpjb250ZXh0Owot
ICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8SlNWYWx1ZT4g
cHJlc2VydmVkRXhjZXB0aW9uOwogICAgIEpTVmFsdWVSZWYgY2FsbGVlVmFsdWU7CiAgICAgSlNW
YWx1ZVJlZiB0aGlzVmFsdWU7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQ7CiAgICAgY29uc3Qg
SlNWYWx1ZVJlZiAqYXJndW1lbnRzOwotICAgIE5TQXJyYXkgKmN1cnJlbnRBcmd1bWVudHM7Cisg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGN1cnJlbnRBcmd1bWVudHM7CiB9OwogCiBAY2xhc3MgSlNX
cmFwcGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmlu
ZGV4IGI3OWFiMmJjM2FmMWJjNTNlOGM4MThhMjMzZGIwNzM2ODRiZWIxZDEuLmZmNDdkNjE0MjI4
YWNhMDk3YTViNDViNTc5YWZlYzUyOTNiMjcyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9NZW1v
cnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL0Rh
dGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJDIiB2b2lkIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwogZXh0
ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRl
eHRSZWYpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRpbnlE
T01Ob2RlIHsKICAgICBOU011dGFibGVBcnJheSAqbV9jaGlsZHJlbjsKLSAgICBKU1ZpcnR1YWxN
YWNoaW5lICptX3NoYXJlZFZpcnR1YWxNYWNoaW5lOworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxN
YWNoaW5lPiBtX3NoYXJlZFZpcnR1YWxNYWNoaW5lOwogfQogCiAtIChpZClpbml0V2l0aFZpcnR1
YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTIyOCw5ICsy
MjksNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICop
dmlydHVhbE1hY2hpbmUKIAogICAgIG1fY2hpbGRyZW4gPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OjBdOwogICAgIG1fc2hhcmVkVmlydHVhbE1hY2hpbmUgPSB2aXJ0
dWFsTWFjaGluZTsKLSNpZiAhX19oYXNfZmVhdHVyZShvYmpjX2FyYykKLSAgICBbbV9zaGFyZWRW
aXJ0dWFsTWFjaGluZSByZXRhaW5dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODFhODljZTRhMjJiNmRm
ZTM1ZjMyMTQxMjAyNWJlMTZkZmRlMGY1MS4uM2U3NGU4ZjRhMGEwNGNiZDJlMTY3Y2VmZjViNjJh
Njc5NzJhM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTExNTQsMjkgKzExNTQsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQgU2Nyb2xsVG9W
aXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZlcnNpb25zIGRv
IG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMgdGhlbSB0byBz
ZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0
aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlT
Y3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gQFtOU0FjY2Vzc2li
aWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9u
XTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAvLyBUaGUgb3Jk
ZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUgJ2RlZmF1bHQn
IGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQg
YWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVu
dEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5
U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0
YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBhY3Rp
b25FbGVtZW50QWN0aW9ucyA9IEBbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNz
aWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rp
b25dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2FuY2VsLgotICAg
IHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVsZW1lbnRBY3Rp
b25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0aW9uXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IG1lbnVF
bGVtZW50QWN0aW9ucyA9IFthY3Rpb25FbGVtZW50QWN0aW9ucy5nZXQoKSBhcnJheUJ5QWRkaW5n
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl07CiAKICAgICAvLyBTbGlkZXIgZWxl
bWVudHMgYWxsb3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNBcnJheSAqc2xp
ZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Rz
RnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNBcnJheT4+IHNsaWRlckFjdGlvbnMgPSBbZGVmYXVsdEVsZW1lbnRBY3Rpb25z
LmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5j
cmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXTsKIAogICAgIE5T
QXJyYXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzUHJlc3NBY3Rp
b24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRBY3Rpb25zOworICAgICAgICBh
Y3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNNZW51UmVsYXRlZCgpKQotICAgICAgICBhY3Rpb25zID0gbWVudUVs
ZW1lbnRBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gbWVudUVsZW1lbnRBY3Rpb25zLmdldCgp
LmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAg
IGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gc2xpZGVyQWN0aW9u
cy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQo
KSkKICAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUFjdGlvbk5hbWVzXTsKICAgICBlbHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVu
dEFjdGlvbnM7CisgICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlvbnMuZ2V0KCku
Z2V0KCk7CiAKICAgICByZXR1cm4gYWN0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA4NjMzZTE2ZTU0MjQ3OGVlN2I0NTA2OGI0
NWRmNGFiZWFhM2Q0MzdkLi41NDc5NzQ0MTk2YWY5OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBA
IC0yMTUsOCArMjE1LDEzIEBAIHN0YXRpYyBCT09MIHJlc3VsdElzVVJMKEREUmVzdWx0UmVmIHJl
c3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHN0
YXRpYyBOU1NldCAqdXJsVHlwZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOiAoTlNTdHJpbmcg
KilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJIdHRwVVJMS2V5KCksIChOU1N0cmluZyAq
KWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlcldlYlVSTEtleSgpLCAoTlNTdHJpbmcgKiln
ZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJNYWlsVVJMS2V5KCksIChOU1N0cmluZyAqKWdl
dF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckdlbmVyaWNVUkxLZXkoKSwgKE5TU3RyaW5nICop
Z2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyRW1haWxLZXkoKSwgbmlsXSByZXRhaW5dOwot
ICAgIHJldHVybiBbdXJsVHlwZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRUeXBlKHJlc3VsdCldOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiB1cmxUeXBlcyA9IFtOU1NldCBzZXRXaXRo
T2JqZWN0czoKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmlu
ZGVySHR0cFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0Nv
cmVfRERCaW5kZXJXZWJVUkxLZXkoKSwKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRl
Y3RvcnNDb3JlX0REQmluZGVyTWFpbFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRf
RGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJHZW5lcmljVVJMS2V5KCksCisgICAgICAgIChOU1N0
cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckVtYWlsS2V5KCksIG5pbF07Cisg
ICAgcmV0dXJuIFt1cmxUeXBlcy5nZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07CiB9CiAKIHN0
YXRpYyBOU1N0cmluZyAqY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KEREUmVzdWx0UmVmIGN1
cnJlbnRSZXN1bHQsIE5TU3RyaW5nICpyZXN1bHRJZGVudGlmaWVyLCBOU0RhdGUgKnJlZmVyZW5j
ZURhdGUsIE5TVGltZVpvbmUgKnJlZmVyZW5jZVRpbWVab25lLCBPcHRpb25TZXQ8RGF0YURldGVj
dG9yVHlwZT4gZGV0ZWN0aW9uVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDNiZDJkNmViYTNiMzVmZTZkYzM5NTMyMjZmYmQ4ZDU2
MGJlY2ZlOS4uMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNDE1LDE2
ICs0MTUsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIC8v
IFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUgTlNGb250QXR0cmlidXRlTmFtZSBk
b2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiB7Ci0gICAgc3Rh
dGljIE5TRm9udCAqZGVmYXVsdEZvbnQgPSBuaWw7Ci0gICAgaWYgKGRlZmF1bHRGb250KQotICAg
ICAgICByZXR1cm4gZGVmYXVsdEZvbnQ7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZv
bnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07Ci0gICAgaWYgKCFmb250KQotICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLQotICAgIGRlZmF1bHRGb250
ID0gW2ZvbnQgcmV0YWluXTsKLSAgICByZXR1cm4gZGVmYXVsdEZvbnQ7CisgICAgc3RhdGljIGF1
dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBOU0ZvbnQg
KmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07CisgICAg
ICAgIGlmICghZm9udCkKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNp
emU6MTJdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZvbnQpOworICAgIH0oKSk7CisgICAg
cmV0dXJuIGRlZmF1bHRGb250LmdldCgpLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU3ZjIxYzU4ODg5YjY3
NjM4Y2RjMjhhNDExNTQyZmFjZmU1MjAyNjMuLmYzNjljZjBjMjlmNjY5ZGNmMmZhZGY4YTVkY2E5
YzI4MTJiZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjI1LDEzICsyMjUsMTEgQEAgc3RhdGljIE5TVVJMICpjdXN0b21TY2hlbWVV
UkwoKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICppbWFnZURlY29kZXJBc3NldE9wdGlvbnMoKQog
ewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbXSB7Ci0gICAgICAgIHJldHVy
biBbQHsKLSAgICAgICAgICAgIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXk6IEAo
QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkQWxsKSwKLSAgICAgICAgICAgIEFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXk6IEBZRVMsCi0gICAgICAgIH0gcmV0YWluXTsK
LSAgICB9KCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBvcHRpb25zID0gQHsKKyAgICAgICAgQVZVUkxBc3Nl
dFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25G
b3JiaWRBbGwpLAorICAgICAgICBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5OiBA
WUVTLAorICAgIH07CisgICAgcmV0dXJuIG9wdGlvbnMuZ2V0KCkuZ2V0KCk7CiB9CiAKIGNsYXNz
IEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUgOiBwdWJsaWMgTWVkaWFTYW1wbGVBVkZPYmpDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpp
bmRleCBkOTMxZDZjYWVhZDAwZjdhYzdiMDg4YjM4OWEwNGE4YjUzMTMwZjJmLi5kNDQ5YzQ4MjQ5
NTg1MTY0MGRhOTNkNWNiOWVhYjY2Mzc2MTg4MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBO
U0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAoY29sb3IuaXNJbmxp
bmUoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgY29sb3IuYXNJbmxp
bmUoKSB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAq
Y2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAg
YWxwaGE6MF0gcmV0YWluXTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOworICAgICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gY2xlYXJDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYTowXTsK
KyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52YWx1ZTogewot
ICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JX
aXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0gICAgICAgICAg
ICByZXR1cm4gYmxhY2tDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVk
OjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV07CisgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3
aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYToxXSByZXRhaW5dOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7CisgICAgICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ29sb3I+PiB3aGl0ZUNvbG9y
ID0gW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdOwor
ICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmlu
ZGV4IDJlMjQ3YTZlNTNkZDA1YWIxOTBlZDk2ZGRhMmExYWU2ZGFkYzk4YWYuLmE1ZDJmNzM2YzJl
ZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQpAQCAtNDEsOCArNDEsOCBAQCBjb25zdCBjaGFyKiBRTFByZXZpZXdQ
cm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKIAogTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpzZXQgPSBbUEFMOjpzb2Z0TGlu
a19RdWlja0xvb2tfUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzKCkgcmV0YWluXTsKLSAg
ICByZXR1cm4gc2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+
PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1F
VHlwZXMoKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgTG9jayBx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jazsKQEAgLTEwMiwyMSArMTAyLDIxIEBAIGJv
b2wgaXNRdWlja0xvb2tQcmV2aWV3VVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcygpCiB7Ci0gICAgc3RhdGljIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IFtAeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5Pj4gYXR0cmlidXRlcyA9IEB7CiAgICAgICAgIE5TRmlsZU93bmVyQWNj
b3VudE5hbWUgOiBOU1VzZXJOYW1lKCksCiAgICAgICAgIE5TRmlsZVBvc2l4UGVybWlzc2lvbnMg
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6KFdFQl9VUkVBRCB8IFdFQl9VV1JJVEUpXSwK
LSAgICAgICAgfSByZXRhaW5dOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMgPSBbQHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICBOU0ZpbGVPd25lckFjY291
bnROYW1lIDogTlNVc2VyTmFtZSgpLAogICAgICAgICBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zIDog
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOihXRUJfVVJFQUQgfCBXRUJfVVdSSVRFIHwgV0VC
X1VFWEVDKV0sCiAgICAgICAgIE5TRmlsZVByb3RlY3Rpb25LZXkgOiBOU0ZpbGVQcm90ZWN0aW9u
Q29tcGxldGVVbmxlc3NPcGVuLAotICAgICAgICB9IHJldGFpbl07Ci0gICAgcmV0dXJuIGF0dHJp
YnV0ZXM7CisgICAgfTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAog
TlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJpbmcgKmZpbGVO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCmluZGV4IDI3YjQyNDhjNjc5N2IyYzdmNjIzNWViZTFlYjRiZTZjYzMzZjUxODMu
LmVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTE3
OCwxMyArMTc4LDggQEAgLSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAgICBpZiAobV9o
ZWFkaW5nQXZhaWxhYmxlKQogICAgICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBk
YXRpbmdIZWFkaW5nXTsKIAotICAgICAgICBpZiAoIW1fdXBkYXRlVGltZXIpIHsKLSAgICAgICAg
ICAgIG1fdXBkYXRlVGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVy
dmFsOmtNb3Rpb25VcGRhdGVJbnRlcnZhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6c2VsZgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6
QHNlbGVjdG9yKHVwZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6WUVTXSByZXRh
aW5dOwotICAgICAgICB9CisgICAgICAgIGlmICghbV91cGRhdGVUaW1lcikKKyAgICAgICAgICAg
IG1fdXBkYXRlVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6
a01vdGlvblVwZGF0ZUludGVydmFsIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRh
dGUpIHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU107CiAgICAgfSBlbHNlIHsKICAgICAgICAgW21f
dXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5k
ZXggMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MC4uNjdkZGIyODNiYmMz
ZWY5NTljZjNlZThkYWM4Y2UzN2RkZDhlYTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRp
YyBSZWN1cnNpdmVMb2NrIHdlYkNvcmVSZWxlYXNlTG9jazsKIAogc3RhdGljIHZvaWQqIGF1dG9y
ZWxlYXNlUG9vbE1hcms7CiBzdGF0aWMgQ0ZSdW5Mb29wUmVmIHdlYlRocmVhZFJ1bkxvb3A7Ci1z
dGF0aWMgTlNSdW5Mb29wKiB3ZWJUaHJlYWROU1J1bkxvb3A7CitzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TUnVuTG9vcD4+IHdlYlRocmVhZE5TUnVuTG9vcDsKIHN0YXRpYyBwdGhy
ZWFkX3Qgd2ViVGhyZWFkOwogc3RhdGljIEJPT0wgaXNXZWJUaHJlYWRMb2NrZWQ7CiBzdGF0aWMg
Qk9PTCB3ZWJUaHJlYWRTdGFydGVkOwpAQCAtMTI3LDExICsxMjcsOSBAQCB0eXBlZGVmIGVudW0g
ewogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwogc3Rh
dGljIENGTXV0YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKIAotc3RhdGlj
IHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopOwotCiBzdGF0aWMgTG9jayBk
ZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwot
c3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOworc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0ludm9jYXRpb24+PiBkZWxlZ2F0ZUludm9jYXRpb247CiBzdGF0
aWMgQ0ZSdW5Mb29wU291cmNlUmVmIGRlbGVnYXRlU291cmNlID0gbnVsbHB0cjsKIHN0YXRpYyBC
T09MIGRlbGVnYXRlSGFuZGxlZDsKICNpZiBMT0dfTUFJTl9USFJFQURfTE9DS0lORwpAQCAtMTY1
LDEwICsxNjMsMTQgQEAgV0VCQ09SRV9FWFBPUlQgdm9sYXRpbGUgdW5zaWduZWQgd2ViVGhyZWFk
RGVsZWdhdGVNZXNzYWdlU2NvcGVDb3VudCA9IDA7CiAKIHN0YXRpYyBib29sIHBlckNhbGxvdXRB
dXRvcmVsZWFzZXBvb2xFbmFibGVkOwogCi1zdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2Uo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQorc3RhdGljIGlubGluZSB2b2lkIFNlbmRNZXNzYWdl
KFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKIHsKICAgICBbaW52b2NhdGlv
biBpbnZva2VdOwotICAgIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2UoaW52b2NhdGlvbik7CisK
KyAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4oKSA9PSBD
RlJ1bkxvb3BHZXRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbaW52b2NhdGlvbiA9IFdURk1vdmUoaW52b2NhdGlvbildIHsgfSk7CiB9
CiAKIHN0YXRpYyB2b2lkIEhhbmRsZURlbGVnYXRlU291cmNlKHZvaWQqKQpAQCAtMTg1LDE1ICsx
ODcsMTUgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCopCiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVsZWdhdGVMb2NrKTsKIAogI2lmIExPR19NRVNTQUdF
UwotICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNz
OltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKSB7CisgICAgICAgIGlmIChbW2RlbGVnYXRl
SW52b2NhdGlvbi5nZXQoKSB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGNsYXNzXV0pIHsKICAgICAgICAgICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtk
ZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOworICAg
ICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbi5nZXQoKSBnZXRBcmd1bWVudDomYXJndW1lbnQw
IGF0SW5kZXg6MF07CiAgICAgICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAl
QCIsIGFyZ3VtZW50MCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgTlNMb2coQCJkZWxl
Z2F0ZSByZWNlaXZlOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRp
b24gc2VsZWN0b3JdKSk7CisgICAgICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVA
IiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbi5nZXQoKSBzZWxlY3Rv
cl0pKTsKICNlbmRpZgogCi0gICAgICAgIFNlbmRNZXNzYWdlKGRlbGVnYXRlSW52b2NhdGlvbik7
CisgICAgICAgIFNlbmRNZXNzYWdlKFdURk1vdmUoZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgpKSk7
CiAKICAgICAgICAgZGVsZWdhdGVIYW5kbGVkID0gWUVTOwogICAgICAgICBkZWxlZ2F0ZUNvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKQEAgLTIxNCwyNiArMjE2LDI2IEBAIHB1YmxpYzoKICAgICB9CiB9
OwogCi1zdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKE5TSW52b2NhdGlvbiogaW52b2Nh
dGlvbikKK3N0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52b2Nh
dGlvbj4gaW52b2NhdGlvbikKIHsKICAgICBpZiAoIVdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0g
ICAgICAgIFNlbmRNZXNzYWdlKGludm9jYXRpb24pOworICAgICAgICBTZW5kTWVzc2FnZShXVEZN
b3ZlKGludm9jYXRpb24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChk
ZWxlZ2F0ZVNvdXJjZSk7CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAotICAgIGRlbGVnYXRl
SW52b2NhdGlvbiA9IGludm9jYXRpb247CisgICAgZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgpID0g
V1RGTW92ZShpbnZvY2F0aW9uKTsKICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKIAogI2lmIExP
R19NRVNTQUdFUwotICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9m
Q2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKKyAgICBpZiAoW1tkZWxlZ2F0
ZUludm9jYXRpb24uZ2V0KCkgdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNl
bnRlciBjbGFzc11dKSB7CiAgICAgICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgW2RlbGVnYXRl
SW52b2NhdGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAgICAgIFtk
ZWxlZ2F0ZUludm9jYXRpb24uZ2V0KCkgZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBd
OwogICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiBzZW5kOiAlQCIsIGFyZ3VtZW50MCk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgc2VuZDogJUAiLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9yXSkpOworICAgICAgICBOU0xv
ZyhAImRlbGVnYXRlIHNlbmQ6ICVAIiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52
b2NhdGlvbi5nZXQoKSBzZWxlY3Rvcl0pKTsKICNlbmRpZgogCiAgICAgewpAQCAtMjQ4LDEwICsy
NTAsMTAgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGlu
dm9jYXRpb24pCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7CiAgICAgICAgICAg
ICBpZiAoIWRlbGVnYXRlQ29uZGl0aW9uLndhaXRGb3IoZGVsZWdhdGVMb2NrLCBEZWxlZ2F0ZVdh
aXRJbnRlcnZhbCkpIHsKICAgICAgICAgICAgICAgICBpZCBkZWxlZ2F0ZUluZm9ybWF0aW9uOwot
ICAgICAgICAgICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9m
Q2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgICAg
IFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJ
bmRleDowXTsKKyAgICAgICAgICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24uZ2V0KCkg
dGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKQorICAg
ICAgICAgICAgICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgpIGdldEFyZ3VtZW50OiZk
ZWxlZ2F0ZUluZm9ybWF0aW9uIGF0SW5kZXg6MF07CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2VsZWN0
b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pOworICAgICAgICAgICAgICAgICAgICBk
ZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2Nh
dGlvbi5nZXQoKSBzZWxlY3Rvcl0pOwogICAgIAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVm
IG1vZGUgPSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKICAg
ICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byByZXR1cm4g
YWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwgX19QUkVU
VFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50ZXJ2YWwu
c2Vjb25kcygpLCBtb2RlKTsKQEAgLTI4MiwxOSArMjg0LDYgQEAgdm9pZCBXZWJUaHJlYWRSdW5P
bk1haW5UaHJlYWQodm9pZCheZGVsZWdhdGVCbG9jaykoKSkKICAgICBfV2ViVGhyZWFkTG9jaygp
OwogfQogCi1zdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKLXsK
LSAgICBhdXRvIGFkb3B0ZWRPYmogPSBhZG9wdE5TKG9iaik7Ci0gICAgaWYgKCFXZWJUaHJlYWRJ
c0VuYWJsZWQoKSB8fCBDRlJ1bkxvb3BHZXRNYWluKCkgPT0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0jaWYgTE9HX1JFTEVBU0VTCi0gICAgTlNMb2coQCJSZWxlYXNl
IHNlbmQgW3dlYiB0aHJlYWRdIDogJUAiLCBvYmopOwotI2VuZGlmCi0gICAgLy8gV2Ugb3duIG9i
aiBhdCB0aGlzIHBvaW50LCBzbyB3ZSBkb24ndCBuZWVkIHRoZSBibG9jayB0byBpbXBsaWNpdGx5
Ci0gICAgLy8gcmV0YWluIGl0LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbYWRvcHRl
ZE9iaiA9IFdURk1vdmUoYWRvcHRlZE9iaildIHsgfSk7Ci19Ci0KIHZvaWQgV2ViVGhyZWFkQWRv
cHRBbmRSZWxlYXNlKGlkIG9iaikKIHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgp
KTsKQEAgLTQyNiw3ICs0MTUsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNl
U291cmNlKHZvaWQqKQogdm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uKiBp
bnZvY2F0aW9uKQogewogICAgIC8vIE5TSW52b2NhdGlvbiByZWxlYXNlZCBpbiBTZW5kTWVzc2Fn
ZSgpCi0gICAgU2VuZERlbGVnYXRlTWVzc2FnZShbaW52b2NhdGlvbiByZXRhaW5dKTsKKyAgICBT
ZW5kRGVsZWdhdGVNZXNzYWdlKGludm9jYXRpb24pOwogfQogCiB2b2lkIFdlYlRocmVhZFBvc3RO
b3RpZmljYXRpb24oTlNTdHJpbmcqIG5hbWUsIGlkIG9iamVjdCwgaWQgdXNlckluZm8pCkBAIC01
MDUsNyArNDk0LDcgQEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKEF1dG9y
ZWxlYXNlUG9vbE9wZXJhdGlvbiBwb29sT3BlcmF0aW9uKQogICAgIEFTU0VSVChzQXN5bmNEZWxl
Z2F0ZXMoKSk7CiAgICAgaWYgKFtzQXN5bmNEZWxlZ2F0ZXMoKSBjb3VudF0pIHsKICAgICAgICAg
Zm9yIChOU0ludm9jYXRpb24qIGludm9jYXRpb24gaW4gc0FzeW5jRGVsZWdhdGVzKCkuZ2V0KCkp
Ci0gICAgICAgICAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKFtpbnZvY2F0aW9uIHJldGFpbl0pOwor
ICAgICAgICAgICAgU2VuZERlbGVnYXRlTWVzc2FnZShpbnZvY2F0aW9uKTsKICAgICAgICAgW3NB
c3luY0RlbGVnYXRlcygpIHJlbW92ZUFsbE9iamVjdHNdOwogICAgIH0KIApAQCAtNjMyLDcgKzYy
MSw3IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAKICAgICB3ZWJUaHJlYWRD
b250ZXh0ID0gQ3VycmVudFRocmVhZENvbnRleHQoKTsKICAgICB3ZWJUaHJlYWRSdW5Mb29wID0g
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotICAgIHdlYlRocmVhZE5TUnVuTG9vcCA9IFtbTlNSdW5M
b29wIGN1cnJlbnRSdW5Mb29wXSByZXRhaW5dOworICAgIHdlYlRocmVhZE5TUnVuTG9vcC5nZXQo
KSA9IFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwogCiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYgd2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51
bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMgfCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8
IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywgMCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIp
OwogICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BM
b2NrT2JzZXJ2ZXJSZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CkBAIC04OTgsOCArODg3LDgg
QEAgQ0ZSdW5Mb29wUmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCkKIE5TUnVuTG9vcCogV2ViVGhy
ZWFkTlNSdW5Mb29wKHZvaWQpCiB7CiAgICAgaWYgKHdlYlRocmVhZFN0YXJ0ZWQpIHsKLSAgICAg
ICAgQVNTRVJUKHdlYlRocmVhZE5TUnVuTG9vcCk7Ci0gICAgICAgIHJldHVybiB3ZWJUaHJlYWRO
U1J1bkxvb3A7CisgICAgICAgIEFTU0VSVCh3ZWJUaHJlYWROU1J1bkxvb3AuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gd2ViVGhyZWFkTlNSdW5Mb29wLmdldCgpLmdldCgpOwogICAgIH0KIAogICAg
IHJldHVybiBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCmluZGV4IDVmNzk5ZDVjMDViNmIxODQ4ZWM1MDMyZDg0MzA1MGJhNWIxZDZjNjIuLjhjY2Uy
OTU1NGMwYjU2MjNjYzk3ZGI5ZDQ4MjdjOWExMmNlYTBlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRD
b2NvYS5tbQpAQCAtNTEsMTUgKzUxLDE1IEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKIAogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJv
YmxlbS8zNDc0NTE3MT4uIEZpeGVkIGluIGlPUyAxMyBhbmQgbWFjT1MgMTAuMTUsIGJ1dCB3ZSBz
dGlsbCBuZWVkIHRvIHN1cHBvcnQgbWFjT1MgMTAuMTQgZm9yIG5vdy4KICNpZiBVU0UoTEVHQUNZ
X0NGTkVUV09SS19ET1dOTE9BRFMpCi0gICAgc3RhdGljIE5TU2V0PENsYXNzPiAqcGxpc3RDbGFz
c2VzID0gbmlsOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ8Q2xh
c3M+Pj4gcGxpc3RDbGFzc2VzOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBwbGlzdENsYXNz
ZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJh
eSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xh
c3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSByZXRhaW5dOwor
ICAgICAgICBwbGlzdENsYXNzZXMuZ2V0KCkgPSBbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGlj
dGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVt
YmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3Qg
Y2xhc3NdLCBuaWxdOwogICAgIH0pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tO
U0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpuc0RhdGEuZ2V0
KCkgZXJyb3I6bmlsXSk7CiAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5
Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOwotICAgIGF1dG8gZGljdGlv
bmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAqPihbW3VuYXJj
aGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOnBsaXN0Q2xhc3NlcyBmb3JLZXk6QCJOU0tleWVk
QXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAgICBhdXRvIGRpY3Rpb25h
cnkgPSBhZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hp
dmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpwbGlzdENsYXNzZXMuZ2V0KCkuZ2V0KCkgZm9yS2V5
OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CiAgICAgW3Vu
YXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDpzdGF0
aWNfY2FzdDxOU1N0cmluZyo+KHBhdGgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9M
b2NhbFBhdGgiXTsKICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVy
IGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXNDb2NvYS5tbQppbmRleCAxMDE0NWI5MGFhM2I0ZGE2OWEwOGMwODg3OWQ4NTA2ZWM2YTZiZGMy
Li5jODkxNDg0YmJlN2Q3NWEwYjk1YjgyNDAzZWVlYjA2Njk2ZmNhMmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXNDb2NvYS5tbQpAQCAtNDUsMTIgKzQ1LDEyIEBAIGJvb2wgaXNGZWF0dXJlRmxhZ0Vu
YWJsZWQoY29uc3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKICAgICBpZiAoIWlzV2ViS2l0QnVuZGxl
RnJvbVN0YWdlZEZyYW1ld29yaykKICAgICAgICAgcmV0dXJuIF9vc19mZWF0dXJlX2VuYWJsZWRf
aW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNoYXIqKWZlYXR1cmVOYW1lLnV0ZjgoKS5kYXRhKCkpOwog
Ci0gICAgc3RhdGljIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IFtbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGlicmFyeS9BcHBsZS9TeXN0ZW0vTGlicmFy
eS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdCJdIHJldGFpbl07CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBkaWN0aW9uYXJ5ID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkvQXBwbGUv
U3lzdGVtL0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXTsKIAotICAg
IGlmICghW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5
OkAiRW5hYmxlZCJdKQorICAgIGlmICghW1tkaWN0aW9uYXJ5LmdldCgpIG9iamVjdEZvcktleTpm
ZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdKQogICAgICAgICByZXR1cm4gX29z
X2ZlYXR1cmVfZW5hYmxlZF9pbXBsKCJXZWJLaXQiLCAoY29uc3QgY2hhciopZmVhdHVyZU5hbWUu
Y2hhcmFjdGVyczgoKSk7CiAKLSAgICByZXR1cm4gW1tbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dICYmIFtbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBv
YmplY3RGb3JLZXk6QCJFbmFibGVkIl0gYm9vbFZhbHVlXTsKKyAgICByZXR1cm4gW1tbZGljdGlv
bmFyeS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJs
ZWQiXSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dICYmIFtbW2RpY3Rpb25hcnkuZ2V0
KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gYm9v
bFZhbHVlXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZUNvY29hLm1tCmluZGV4IGQyZDhhZThmY2Q1NzdjMTMyMmExOTRjY2Q1NThiMGQ4YzZlY2U0
ZjcuLjRlZDM3NzRhMDRmMDgxOGU1NTc0MTExYTI3NTQ2ZjU2ZDI3YjdkOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBBUEkg
ewogV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgoYm9v
bCBsZWdhY3lGaWxlbmFtZSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKLSAgICBzdGF0aWMgTlNVUkwgKmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiBjb250ZW50UnVsZUxpc3RTdG9yZVVS
TDsKIAogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNVUkwgKnVy
bCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGli
cmFyeURpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJM
Om51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOwpAQCAtNTMsMTUgKzUzLDE1IEBAIFdU
Rjo6U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVn
YWN5RmlsZW5hbWUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZWdhY3lGaWxl
bmFtZSkKLSAgICAgICAgICAgIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbnMiIGlzRGlyZWN0b3J5OllF
U10gcmV0YWluXTsKKyAgICAgICAgICAgIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpID0g
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50RXh0ZW5zaW9ucyIgaXNE
aXJlY3Rvcnk6WUVTXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0
U3RvcmVVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50UnVs
ZUxpc3RzIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgICAgICAgICBjb250ZW50UnVs
ZUxpc3RTdG9yZVVSTC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
Q29udGVudFJ1bGVMaXN0cyIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICB9KTsKIAotICAgIGlmICgh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpjb250
ZW50UnVsZUxpc3RTdG9yZVVSTCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgZGlyZWN0b3J5ICVAIiwgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwpOworICAgIGlmICgh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpjb250
ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5nZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3Jp
ZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwu
Z2V0KCkuZ2V0KCkpOwogCi0gICAgcmV0dXJuIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmFic29s
dXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworICAgIHJldHVybiBbY29udGVu
dFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgYWJzb2x1dGVVUkxdLnBhdGguZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDU1
YjVmYzk1NTE2OGU0ODQ1MmNmYjcxMGNlYmI2YWRmZTlkMDVhOTQuLjQwZDdmODViZjliZjg0MjY1
ZDA2ZDQ5NzJkYzRkMDZlZTBjZTk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjMxLDcgKzIzMSw3
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUgKFdLUHJpdmF0ZSkKICsgKE5T
U2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlCiB7
CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TU2V0
ICphbGxXZWJzaXRlRGF0YVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNTZXQ+PiBhbGxXZWJzaXRlRGF0YVR5cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXiB7CiAgICAgICAgIGF1dG8gKnByaXZhdGVUeXBlcyA9IEBbCiAgICAgICAgICAgICBf
V0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUsCkBAIC0yNDcsMTAgKzI0NywxMCBAQCArIChOU1Nl
dDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQogI2Vu
ZGlmCiAgICAgICAgIF07CiAKLSAgICAgICAgYWxsV2Vic2l0ZURhdGFUeXBlcyA9IFtbW3NlbGYg
YWxsV2Vic2l0ZURhdGFUeXBlc10gc2V0QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OnByaXZhdGVU
eXBlc10gcmV0YWluXTsKKyAgICAgICAgYWxsV2Vic2l0ZURhdGFUeXBlcy5nZXQoKSA9IFtbc2Vs
ZiBhbGxXZWJzaXRlRGF0YVR5cGVzXSBzZXRCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6cHJpdmF0
ZVR5cGVzXTsKICAgICB9KTsKIAotICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOworICAg
IHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzLmdldCgpLmdldCgpOwogfQogCiArIChCT09MKV9k
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
aW5kZXggMDhjYjhlZDA2MzZiZjQwNjdkNzRkNWIzOWQxOWQ1ZThmNjQ0YmYzZC4uZmNhOTZjMmY5
Y2UyYzI5NmVmZjQ5NmVlZjFlYmViYWFmNTlkNjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQpAQCAtMzMyLDcgKzMzMiw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rv
cnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJMPj4gdGVtcFVSTDsKICAgICAKICAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKQEAgLTM0Niwx
MCArMzQ2LDEwIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTCiAgICAgICAgICAgICB1cmwgPSBb
dXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0
b3J5OllFU107CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHRlbXBVUkwgPSBbW3VybCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0
YWluXTsKKyAgICAgICAgdGVtcFVSTC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogICAgIAotICAgIE5T
VVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5
TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTC5nZXQoKSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNd
OwogCiAgICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBTaG91bGRDcmVhdGVEaXJlY3Rv
cnk6OlllcwogICAgICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3Jl
YXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pKQpAQCAtMzYxLDcgKzM2MSw3IEBAIFdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgV1RGOjpTCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5
TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKIHsKICAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKmNh
Y2hlVVJMOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiBjYWNo
ZVVSTDsKIAogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNVUkwg
KnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5T
Q2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CkBAIC0zNzUsMTAgKzM3NSwxMCBA
QCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OgogICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOwog
ICAgICAgICB9CiAKLSAgICAgICAgY2FjaGVVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICAgICAgY2Fj
aGVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIg
aXNEaXJlY3Rvcnk6WUVTXTsKICAgICB9KTsKIAotICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CiAgICAgaWYgKHNob3VsZENy
ZWF0ZURpcmVjdG9yeSA9PSBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6OlllcwogICAgICAgICAmJiAh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxs
cHRyXSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIs
IHVybCk7CkBAIC0zODksNyArMzg5LDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjoKIFdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewogICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqd2Vic2l0
ZURhdGFVUkw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IHdl
YnNpdGVEYXRhVVJMOwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAg
ICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJl
Y3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9w
cmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CkBAIC00MDUsMTAg
KzQwNSwxMCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdAogICAgICAgICAgICAgdXJsID0gW3Vy
bCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9y
eTpZRVNdOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vic2l0ZURhdGFVUkwgPSBbW3VybCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXSBy
ZXRhaW5dOworICAgICAgICB3ZWJzaXRlRGF0YVVSTC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7
CiAKLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKnVybCA9
IFt3ZWJzaXRlRGF0YVVSTC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0
b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVj
dG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IDY2MTYyZTNmYTI5M2ViNzRlYmVmM2MwZDUwYWMxN2VhY2ZiZGM4MDIuLjIyMGI3Njlj
MDFiNGE2M2VjOTc0YjM5OWE1MTg2YzE4YTQzNDg2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDUw
MywxMSArNDUwMywxMSBAQCAtIChOU0FycmF5ICopa2V5Q29tbWFuZHMKICAgICBpZiAoIV9wYWdl
LT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgc3RhdGljIE5TQXJyYXkqIGVkaXRhYmxlS2V5Q29tbWFuZHMgPSBbQFsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBlZGl0YWJsZUtleUNvbW1hbmRz
ID0gQFsKICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1v
ZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9uZXh0QWNjZXNzb3J5VGFiOildLAogICAg
ICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFn
czpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfcHJldmlvdXNBY2Nlc3NvcnlU
YWI6KV0KLSAgICBdIHJldGFpbl07Ci0gICAgcmV0dXJuIGVkaXRhYmxlS2V5Q29tbWFuZHM7Cisg
ICAgXTsKKyAgICByZXR1cm4gZWRpdGFibGVLZXlDb21tYW5kcy5nZXQoKS5nZXQoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBhMmM4YmIxYTQ3MTc4Y2MwYzM0N2FkYzQ3YmQwNjQ5OGRiNTdjMWM3Li4y
YTViMTgzMjY3NjdjMmE3ZDQ5ZTU5ZWJlM2U4YTJjMTBiMGQzZWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1MywyNSAr
MjUzLDIwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtIChOU0Fy
cmF5ICopYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXR0cmlidXRlTmFtZXMgPSAw
OwotCi0gICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykgewotICAgICAgICBhdHRyaWJ1dGVOYW1lcyA9
IEBbCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNz
aWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVNpemVBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0
cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCi0g
ICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlLAotICAgICAgICAgICAg
Ly8gUERGTGF5ZXJDb250cm9sbGVyIGhhcyBpdHMgb3duIGFjY2Vzc2liaWxpdHlDaGlsZHJlbi4K
LSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlCi0gICAgICAgICAg
ICBdOwotICAgICAgICBbYXR0cmlidXRlTmFtZXMgcmV0YWluXTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gYXR0cmlidXRlTmFtZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxO
U0FycmF5Pj4gYXR0cmlidXRlTmFtZXMgPSBAWworICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJl
bnRBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0
dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsCisgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCisgICAgICAgIC8vIFBERkxheWVy
Q29udHJvbGxlciBoYXMgaXRzIG93biBhY2Nlc3NpYmlsaXR5Q2hpbGRyZW4uCisgICAgICAgIE5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlCisgICAgXTsKKworICAgIHJldHVybiBhdHRy
aWJ1dGVOYW1lcy5nZXQoKS5nZXQoKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0
cmFzLm1tCmluZGV4IDg3NTM2MjQyYjc5MDM0ZWI5MzRjYjVmNzJhODk3MzZmNzExYTk1MGYuLjFl
YzA0ZWFhZjViNDY0NzZkODk5ZGZlODU1ZWVmMjZjYzI5MzU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMjc2LDE3ICsyNzYsMTYg
QEAgLShOU1JhbmdlKV93ZWJraXRfcmFuZ2VPZlVSTFNjaGVtZQogICAgIE5TUmFuZ2UgY29sb24g
PSBbc2VsZiByYW5nZU9mU3RyaW5nOkAiOiJdOwogICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBO
U05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkgewogICAgICAgICBOU1JhbmdlIHNjaGVt
ZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07Ci0gICAgICAgIHN0YXRpYyBOU0NoYXJhY3RlclNldCAq
SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCA9IG5pbDsKLSAgICAgICAgaWYgKCFJbnZlcnNlU2No
ZW1lQ2hhcmFjdGVyU2V0KSB7CisgICAgICAgIHN0YXRpYyBhdXRvIGludmVyc2VTY2hlbWVDaGFy
YWN0ZXJTZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewogICAgICAgICAgICAgLyoKICAgICAg
ICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4
MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKICAgICAgICAgICAgICBldmVyeXRoaW5n
IGVsc2Ugd2hlbiBhZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1l
IHdvbmRlciBpZiB3ZQogICAgICAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFy
YWN0ZXIgc2V0IGhlcmUuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgTlNTdHJpbmcgKmFj
Y2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgICAgICBJbnZlcnNlU2No
ZW1lQ2hhcmFjdGVyU2V0ID0gW1tbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJh
Y3RlcnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdIHJldGFpbl07
Ci0gICAgICAgIH0KLSAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtzZWxmIHJhbmdlT2ZDaGFy
YWN0ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQgb3B0aW9uczowIHJhbmdlOnNj
aGVtZV07CisgICAgICAgICAgICByZXR1cm4gcmV0YWluUHRyKFtbTlNDaGFyYWN0ZXJTZXQgY2hh
cmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52
ZXJ0ZWRTZXRdKTsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtz
ZWxmIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OmludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnNjaGVtZV07CiAgICAgICAgIGlmIChpbGxlZ2Fscy5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5j
YXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9y
Lm1tCmluZGV4IDk4ZWNhYTk0MzU2NDZmNjBlYWYxNWMzNDUxNTY4YzkyMDcwNjNlMTIuLjNlZWM4
MGFjMjk3M2QyYjVmNmZmNjNkMzVlMzZkMGVhMjZiMWJjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm1tCkBAIC01OCwxMyArNTgs
MTMgQEAgKyAodm9pZClpbml0aWFsaXplCiAKICsgKE5TU3RyaW5nICopY2VudGVyVHJ1bmNhdGVT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHRvV2lkdGg6KGZsb2F0KW1heFdpZHRoCiB7Ci0gICAg
c3RhdGljIE5TRm9udCAqbWVudUZvbnQgPSBbW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNGb250Pj4gbWVudUZv
bnQgPSBbTlNGb250IG1lbnVGb250T2ZTaXplOjBdOwogCi0gICAgQVNTRVJUKG1lbnVGb250KTsK
LSAgICBpZiAoIW1lbnVGb250KQorICAgIEFTU0VSVChtZW51Rm9udC5nZXQoKSk7CisgICAgaWYg
KCFtZW51Rm9udC5nZXQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBXZWJD
b3JlOjpTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRlKHN0cmluZywgbWF4V2lkdGgsIGZv
bnRGcm9tTlNGb250KG1lbnVGb250KSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlN0cmluZ1RydW5j
YXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyaW5nLCBtYXhXaWR0aCwgZm9udEZyb21OU0ZvbnQobWVu
dUZvbnQuZ2V0KCkuZ2V0KCkpKTsKIH0KIAogKyAoTlNTdHJpbmcgKiljZW50ZXJUcnVuY2F0ZVN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgdG9XaWR0aDooZmxvYXQpbWF4V2lkdGggd2l0aEZvbnQ6
KE5TRm9udCAqKWZvbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3Jh
Z2UvV2ViU3RvcmFnZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdl
L1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCmluZGV4IGJiZmZkYzQ1NDgwNzA4YmU5OTIxN2Q4ZDA0MDIw
YTlhOGJjMjczNjUuLjMzOTRhYTRlMWVmZDIwZGE4N2U0N2M1MWJiMmNkZGJjMjFkNTI0ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFn
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFu
YWdlci5tbQpAQCAtOTcsMTkgKzk3LDE5IEBAIC0gKHZvaWQpc3luY0ZpbGVTeXN0ZW1BbmRUcmFj
a2VyRGF0YWJhc2UKIAogKyAoTlNTdHJpbmcgKilfc3RvcmFnZURpcmVjdG9yeVBhdGgKIHsKLSAg
ICBzdGF0aWMgTlNTdHJpbmcgKnNMb2NhbFN0b3JhZ2VQYXRoOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBzTG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IGZsYWc7CiAgICAgZGlzcGF0Y2hfb25jZSgmZmxhZywgXnsKICAg
ICAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXTsKLSAgICAgICAgc0xvY2FsU3RvcmFnZVBhdGggPSBbZGVmYXVsdHMgb2Jq
ZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07Ci0gICAgICAgIGlmICgh
c0xvY2FsU3RvcmFnZVBhdGggfHwgIVtzTG9jYWxTdG9yYWdlUGF0aCBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbG9jYWxTdG9y
YWdlUGF0aCA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURlZmF1
bHRzS2V5XTsKKyAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2VQYXRoIHx8ICFbbG9jYWxTdG9yYWdl
UGF0aCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAgICAgICAgICBOU0Fy
cmF5ICpwYXRocyA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFy
eURpcmVjdG9yeSwgTlNVc2VyRG9tYWluTWFzaywgWUVTKTsKICAgICAgICAgICAgIE5TU3RyaW5n
ICpsaWJyYXJ5RGlyZWN0b3J5ID0gW3BhdGhzIG9iamVjdEF0SW5kZXg6MF07Ci0gICAgICAgICAg
ICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtsaWJyYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIldlYktpdC9Mb2NhbFN0b3JhZ2UiXTsKKyAgICAgICAgICAgIGxvY2Fs
U3RvcmFnZVBhdGggPSBbbGlicmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJXZWJLaXQvTG9jYWxTdG9yYWdlIl07CiAgICAgICAgIH0KLSAgICAgICAgc0xvY2Fs
U3RvcmFnZVBhdGggPSBbW3NMb2NhbFN0b3JhZ2VQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdIHJldGFpbl07CisgICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoLmdldCgpID0gW2xvY2FsU3Rv
cmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiAgICAgfSk7Ci0gICAgcmV0dXJu
IHNMb2NhbFN0b3JhZ2VQYXRoOworICAgIHJldHVybiBzTG9jYWxTdG9yYWdlUGF0aC5nZXQoKS5n
ZXQoKTsKIH0KIAogKyAodm9pZClzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWw6KGRvdWJs
ZSlpbnRlcnZhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDkxYWZjNWQ3NDQ5MTQzNGY0ZTEyM2Yx
OGE1MDQxNzM4OWIzNGIzYjkuLjBkZmFlODQ5ZjBkNzc0NGU4N2ZkMjg5ZGQ2NjFhNTBmMTQwYzQy
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQ1OSwxMCArNDU5LDEwIEBAIHN0YXRpYyBOU0Rp
Y3Rpb25hcnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiAKIHZv
aWQgX1dlYkNyZWF0ZUZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIEZyYWdtZW50QW5kUmVzb3VyY2VzJiByZXN1bHQpCiB7Ci0gICAgc3RhdGlj
IE5TRGljdGlvbmFyeSAqZG9jdW1lbnRBdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZXNGb3JBdHRyaWJ1
dGVkU3RyaW5nQ29udmVyc2lvbigpIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBkb2N1bWVudEF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
Rm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKTsKICAgICBOU0FycmF5ICpzdWJyZXNvdXJj
ZXM7CiAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQgPSBbc3RyaW5nIF9kb2N1bWVu
dEZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAgIGRvY3Vt
ZW50OmtpdCgmZG9jdW1lbnQpIGRvY3VtZW50QXR0cmlidXRlczpkb2N1bWVudEF0dHJpYnV0ZXMg
c3VicmVzb3VyY2VzOiZzdWJyZXNvdXJjZXNdOworICAgICAgICBkb2N1bWVudDpraXQoJmRvY3Vt
ZW50KSBkb2N1bWVudEF0dHJpYnV0ZXM6ZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpLmdldCgpIHN1
YnJlc291cmNlczomc3VicmVzb3VyY2VzXTsKICAgICByZXN1bHQuZnJhZ21lbnQgPSBjb3JlKGZy
YWdtZW50KTsKICAgICBmb3IgKFdlYlJlc291cmNlKiByZXNvdXJjZSBpbiBzdWJyZXNvdXJjZXMp
CiAgICAgICAgIHJlc3VsdC5yZXNvdXJjZXMuYXBwZW5kKFtyZXNvdXJjZSBfY29yZVJlc291cmNl
XS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDQ3YTNkNTMwNWU3NjFmNmM2YTQxYmNhZGNk
NjNhNWMzMjI2MTgxMjkuLjhlNmVlYTY4YWY1MzdlNzE5MTJmNTIyMDZkOWQzZmIyMGNkNDhiNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCkBAIC05NywzNCArOTcsMzMgQEAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBuZXdBcnJheVdpdGhTdHJpbmdzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnMKIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogewotICAgIHN0YXRpYyBO
U0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMgPSBbW1tbc2VsZiBzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlc10gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6Ci0gICAgICAgIFtz
ZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXV0gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJy
YXk6Ci0gICAgICAgIFtzZWxmIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXV0gcmV0YWluXTsKLSAg
ICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9IFtbW3Nl
bGYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFy
cmF5OgorICAgICAgICBbc2VsZiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc11dIGFycmF5QnlBZGRp
bmdPYmplY3RzRnJvbUFycmF5OltzZWxmIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXV07CisgICAg
cmV0dXJuIHN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNB
cnJheSAqKXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0
YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlw
ZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7Ci0gICAgcmV0
dXJuIHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0g
bmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlcygpKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMuZ2V0KCku
Z2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcwogewot
ICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5l
d0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMoKSkubGVha1JlZigpOwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBz
dGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlN
RVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKSk7CisgICAgcmV0dXJu
IHN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiArIChO
U0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAq
c3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVU
eXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAgICBy
ZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMg
PSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy5nZXQo
KS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKXVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcwogewot
ICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdB
cnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
cygpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNV
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVn
aXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKTsKKyAgICByZXR1cm4gc3RhdGljVW5z
dXBwb3J0ZWRUZXh0TUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiAtIChpZClpbml0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzLm1tCmluZGV4IGNmOWRiY2FiMTg0YzVjODU5NTNkNzViZmUwY2Q1
YTRmOWJmYzQ2YjIuLjg5MGUyYjE1YTQ1OGJjZTlkOTVmNWU2NTcxMWU0MTVhMjAxYTNkYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNE
ZWZhdWx0VmFsdWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tCkBAIC01MiwxMiArNTIsMTIgQEAgYm9vbCBpc0Zl
YXR1cmVGbGFnRW5hYmxlZChjb25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogICAgIGlmICghaXNX
ZWJLaXRCdW5kbGVGcm9tU3RhZ2VkRnJhbWV3b3JrKQogICAgICAgICByZXR1cm4gX29zX2ZlYXR1
cmVfZW5hYmxlZF9pbXBsKCJXZWJLaXQiLCAoY29uc3QgY2hhciopZmVhdHVyZU5hbWUudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gW1tOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5L0FwcGxlL1N5
c3RlbS9MaWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il0gcmV0YWluXTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGRpY3Rp
b25hcnkgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGli
cmFyeS9BcHBsZS9TeXN0ZW0vTGlicmFyeS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlz
dCJdOwogCi0gICAgaWYgKCFbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBv
YmplY3RGb3JLZXk6QCJFbmFibGVkIl0pCisgICAgaWYgKCFbW2RpY3Rpb25hcnkuZ2V0KCkgb2Jq
ZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0pCiAgICAgICAg
IHJldHVybiBfb3NfZmVhdHVyZV9lbmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilm
ZWF0dXJlTmFtZS5jaGFyYWN0ZXJzOCgpKTsKIAotICAgIHJldHVybiBbW1tkaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVh
dHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBib29sVmFsdWVdOworICAgIHJldHVy
biBbW1tkaWN0aW9uYXJ5LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9y
S2V5OkAiRW5hYmxlZCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGlj
dGlvbmFyeS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVu
YWJsZWQiXSBib29sVmFsdWVdOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5MTdhMDVkODkxMDcyOWY0MmRhZTA2ZjU5ZmI1MWEz
NmI3ODFlY2JhLi42OTYwNmJmNmVlMzk4OWIwYjFkOWEyMzZmYzY2OGEwZTk1YzZlZmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNDM4LDExICsx
NDM4LDExIEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNT
dHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgV2ViUHJlZmVyZW5jZXMgKnN0
YW5kYXJkUHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107
CiAgICAgW3N0YW5kYXJkUHJlZmVyZW5jZXMgd2lsbEFkZFRvV2ViVmlld107CiAKLSAgICBfcHJp
dmF0ZS0+cHJlZmVyZW5jZXMgPSBbc3RhbmRhcmRQcmVmZXJlbmNlcyByZXRhaW5dOworICAgIF9w
cml2YXRlLT5wcmVmZXJlbmNlcyA9IHN0YW5kYXJkUHJlZmVyZW5jZXM7CiAgICAgX3ByaXZhdGUt
Pm1haW5GcmFtZURvY3VtZW50UmVhZHkgPSBOTzsKICAgICBfcHJpdmF0ZS0+ZHJhd3NCYWNrZ3Jv
dW5kID0gWUVTOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIF9wcml2YXRlLT5iYWNr
Z3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxIGFs
cGhhOjFdIHJldGFpbl0pOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBbTlNDb2xv
ciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxIGFscGhhOjFdOwogI2Vsc2UKICAgICBfcHJpdmF0ZS0+
YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
d2hpdGUpOwogI2VuZGlmCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZToo
TlNTdAogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgIH0KIAot
ICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1l
LCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAg
X3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFtf
cHJpdmF0ZS0+cHJlZmVyZW5jZXMgX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9w
cml2YXRlLT5ncm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAogICAgIGF1dG8gc3RvcmFnZVByb3Zp
ZGVyID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwpAQCAtMTc4MCw3ICsx
NzgwLDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcg
KilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICAgICAgcHJlZmVyZW5jZXMgPSBb
V2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CiAgICAgW3ByZWZlcmVuY2VzIHdp
bGxBZGRUb1dlYlZpZXddOwogCi0gICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3ByZWZlcmVu
Y2VzIHJldGFpbl07CisgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gcHJlZmVyZW5jZXM7CiAg
ICAgX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVhZHkgPSBOTzsKICAgICBfcHJpdmF0ZS0+
ZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwogICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBX
ZWJDb3JlOjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CkBAIC0xNzg5LDcg
KzE3ODksNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmlu
ZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIFtmcmFtZVZpZXcgc2V0QXV0
b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsK
ICAgICBbc2VsZiBhZGRTdWJ2aWV3OmZyYW1lVmlldy5nZXQoKV07CiAKLSAgICBfcHJpdmF0ZS0+
Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnBy
ZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIF9wcml2YXRlLT5ncm91
cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBbX3ByaXZhdGUtPnByZWZl
cmVuY2VzIF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAt
PmFkZFdlYlZpZXcoc2VsZik7CiAKICAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKQEAgLTI1MDYsNyArMjUwNiw3IEBAIC0gKHZv
aWQpX2Nsb3NlCiAKICAgICBbV2ViUHJlZmVyZW5jZXMgX3JlbW92ZVJlZmVyZW5jZUZvcklkZW50
aWZpZXI6W3NlbGYgcHJlZmVyZW5jZXNJZGVudGlmaWVyXV07CiAKLSAgICBhdXRvIHByZWZlcmVu
Y2VzID0gYWRvcHROUyhzdGQ6OmV4Y2hhbmdlKF9wcml2YXRlLT5wcmVmZXJlbmNlcywgbmlsKSk7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVu
Y2VzLCBuaWwpOwogICAgIFtwcmVmZXJlbmNlcyBkaWRSZW1vdmVGcm9tV2ViVmlld107CiAKICAg
ICBbc2VsZiBfY2xvc2VQbHVnaW5EYXRhYmFzZXNdOwpAQCAtMzM3NSw4ICszMzc1LDggQEAgLSAo
dm9pZClfY2hlY2tEaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uCiAKICAgICBfcHJpdmF0ZS0+X2Rp
ZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24gPSBZRVM7CiAKLSAgICBpZiAoX3ByaXZhdGUtPnByZWZl
cmVuY2VzLmF1dG9tYXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2RlbCAmJiBfcHJpdmF0ZS0+cHJlZmVy
ZW5jZXMuY2FjaGVNb2RlbCA8IFdlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpCi0gICAgICAg
IF9wcml2YXRlLT5wcmVmZXJlbmNlcy5jYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50
QnJvd3NlcjsKKyAgICBpZiAoW19wcml2YXRlLT5wcmVmZXJlbmNlcyBhdXRvbWF0aWNhbGx5RGV0
ZWN0c0NhY2hlTW9kZWxdICYmIFtfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgY2FjaGVNb2RlbF0gPCBX
ZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKQorICAgICAgICBbX3ByaXZhdGUtPnByZWZlcmVu
Y2VzIHNldENhY2hlTW9kZWw6V2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcl07CiB9CiAKIC0g
KHZvaWQpX2RpZENvbW1pdExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQpAQCAtNTc4Mywx
MiArNTc4MywxMiBAQCAtICh2b2lkKXNldFByZWZlcmVuY2VzOihXZWJQcmVmZXJlbmNlcyAqKXBy
ZWZzCiAKICAgICBbcHJlZnMgd2lsbEFkZFRvV2ViVmlld107CiAKLSAgICBhdXRvIG9sZFByZWZz
ID0gYWRvcHROUyhfcHJpdmF0ZS0+cHJlZmVyZW5jZXMpOworICAgIGF1dG8gb2xkUHJlZnMgPSBz
dGQ6OmV4Y2hhbmdlKF9wcml2YXRlLT5wcmVmZXJlbmNlcywgbnVsbHB0cik7CiAKICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFt
ZTpXZWJQcmVmZXJlbmNlc0NoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBvYmplY3Q6W3NlbGYg
cHJlZmVyZW5jZXNdXTsKICAgICBbV2ViUHJlZmVyZW5jZXMgX3JlbW92ZVJlZmVyZW5jZUZvcklk
ZW50aWZpZXI6W29sZFByZWZzIGlkZW50aWZpZXJdXTsKIAotICAgIF9wcml2YXRlLT5wcmVmZXJl
bmNlcyA9IFtwcmVmcyByZXRhaW5dOworICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IHByZWZz
OwogCiAgICAgLy8gQWZ0ZXIgcmVnaXN0ZXJpbmcgZm9yIHRoZSBub3RpZmljYXRpb24sIHBvc3Qg
aXQgc28gdGhlIFdlYkNvcmUgc2V0dGluZ3MgdXBkYXRlLgogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
X3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbjopCkBAIC01ODAxLDcgKzU4MDEsNyBAQCAt
ICh2b2lkKXNldFByZWZlcmVuY2VzOihXZWJQcmVmZXJlbmNlcyAqKXByZWZzCiAKIC0gKFdlYlBy
ZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnByZWZlcmVu
Y2VzOworICAgIHJldHVybiBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuZ2V0KCk7CiB9CiAKIC0gKHZv
aWQpc2V0UHJlZmVyZW5jZXNJZGVudGlmaWVyOihOU1N0cmluZyAqKWFuSWRlbnRpZmllcgpAQCAt
NjU1OSw3ICs2NTU5LDcgQEAgLSAodm9pZClzZXRHcm91cE5hbWU6KE5TU3RyaW5nICopZ3JvdXBO
YW1lCiAgICAgaWYgKF9wcml2YXRlLT5ncm91cCkKICAgICAgICAgX3ByaXZhdGUtPmdyb3VwLT5y
ZW1vdmVXZWJWaWV3KHNlbGYpOwogCi0gICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3Vw
OjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKTsKKyAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKGdyb3VwTmFtZSwgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBfbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwog
CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA4M2M2ZDc4MDUwMmVmMmIxOGI1NTNhOGU4OWQ0YzFl
ZTUwOGFlODg3Li4xNWMzOTE2OGUwMTJkYjU0YmI2ZTUwOTRlZTYxM2IwMGY2NzE1ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0yMjYs
NyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQ7CiAgICAgQk9P
TCB1c2VyQWdlbnRPdmVycmlkZGVuOwogICAgIAotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJl
bmNlczsKKyAgICBSZXRhaW5QdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgTlNVUkwgKnVzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjYmNlM2I4ODllOGEyYzczM2M0OTQyYTVjZjhlZmY5OWY5OWU1ZjkxLi4yYzExNjg1ZTE4Nzdm
MzA5OTU0MzYyM2I1ZjI2N2E3NDBmYTMzMjgxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDItMjUgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNh
Z2Ugb2YgW29iakMgcmV0YWluXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRh
aW5dIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGFsbG93ZWRGb250RmFtaWx5
U2V0KToKKyAgICAgICAgKC1bRFJUTW9ja1Njcm9sbGVyIGRyYXdLbm9iXSk6CisgICAgICAgICgt
W0RSVE1vY2tTY3JvbGxlciBkcmF3UmVjdDpdKToKKyAgICAgICAgKHByZXBhcmVDb25zaXN0ZW50
VGVzdGluZ0Vudmlyb25tZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBz
ZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlXSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OmFs
bG93ZWRGb250RmFtaWx5U2V0KToKKyAgICAgICAgKFdUUjo6c3lzdGVtSGlkZGVuRm9udEZhbWls
eVNldCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRo
Rm9yVGVzdGluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbToKKyAg
ICAgICAgKGRpc2FibGVBcHBOYXBJblVJUHJvY2Vzcyk6CisKIDIwMjEtMDItMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIGludGVy
bmFsIENvbnRlbnRGaWx0ZXJpbmcgdGVzdHMgbm90IHRpbWUgb3V0IGFmdGVyIHIyNzIyOTMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzZjNiZDUxOWZl
ODgyZTg0ZmZmMDFjYTRmNWZkNTZiODdlYmNmYmViLi4zNmVjMmM1MjYzODNjMGUyYWM2MTViMmM5
NzEyNWI3Y2MxM2I4YjQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCkBAIC0yODMsNyArMjgzLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29y
ZU5vZGVMZWFrcyhjb25zdCBzdGQ6OnN0cmluZyYgdXJsU3RyaW5nKQogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiB7Ci0gICAg
c3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAg
ICBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiBmb250RmFtaWx5U2V0ID0gW05TU2V0IHNldFdpdGhP
YmplY3RzOgogICAgICAgICBAIkFoZW0iLAogICAgICAgICBAIkFsIEJheWFuIiwKICAgICAgICAg
QCJBbWVyaWNhbiBUeXBld3JpdGVyIiwKQEAgLTQxMCw5ICs0MTAsOSBAQCBzdGF0aWMgTlNTZXQg
KmFsbG93ZWRGb250RmFtaWx5U2V0KCkKICAgICAgICAgQCJXaW5nZGluZ3MiLAogICAgICAgICBA
IlphcGYgRGluZ2JhdHMiLAogICAgICAgICBAIlphcGZpbm8iLAotICAgICAgICBuaWxdIHJldGFp
bl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZhbWlseVNldDsKKyAgICByZXR1
cm4gZm9udEZhbWlseVNldC5nZXQoKTsKIH0KIAogc3RhdGljIE5TQXJyYXkgKmZvbnRBbGxvd0xp
c3QoKQpAQCAtNjQzLDcgKzY0Myw3IEBAIC0gKHZvaWQpZHJhd0tub2IKIAogICAgIE5TUmVjdCBr
bm9iUmVjdCA9IFtzZWxmIHJlY3RGb3JQYXJ0Ok5TU2Nyb2xsZXJLbm9iXTsKIAotICAgIHN0YXRp
YyBOU0NvbG9yICprbm9iQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOjB4ODAg
LyAyNTUuMCBncmVlbjoweDgwIC8gMjU1LjAgYmx1ZToweDgwIC8gMjU1LjAgYWxwaGE6MV0gcmV0
YWluXTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IGtub2JDb2xvciA9IFtOU0NvbG9y
IGNvbG9yV2l0aERldmljZVJlZDoweDgwIC8gMjU1LjAgZ3JlZW46MHg4MCAvIDI1NS4wIGJsdWU6
MHg4MCAvIDI1NS4wIGFscGhhOjFdOwogICAgIFtrbm9iQ29sb3Igc2V0XTsKIAogICAgIE5TUmVj
dEZpbGwoa25vYlJlY3QpOwpAQCAtNjUxLDggKzY1MSw4IEBAIC0gKHZvaWQpZHJhd0tub2IKIAog
LSAodm9pZClkcmF3UmVjdDooTlNSZWN0KWRpcnR5UmVjdAogewotICAgIHN0YXRpYyBOU0NvbG9y
ICp0cmFja0NvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweEMwIC8gMjU1LjAg
Z3JlZW46MHhDMCAvIDI1NS4wIGJsdWU6MHhDMCAvIDI1NS4wIGFscGhhOjFdIHJldGFpbl07Ci0g
ICAgc3RhdGljIE5TQ29sb3IgKmRpc2FibGVkVHJhY2tDb2xvciA9IFtbTlNDb2xvciBjb2xvcldp
dGhEZXZpY2VSZWQ6MHhFMCAvIDI1NS4wIGdyZWVuOjB4RTAgLyAyNTUuMCBibHVlOjB4RTAgLyAy
NTUuMCBhbHBoYToxXSByZXRhaW5dOworICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNDb2xvcj4gdHJh
Y2tDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweEMwIC8gMjU1LjAgZ3JlZW46
MHhDMCAvIDI1NS4wIGJsdWU6MHhDMCAvIDI1NS4wIGFscGhhOjFdOworICAgIHN0YXRpYyBSZXRh
aW5QdHI8TlNDb2xvcj4gZGlzYWJsZWRUcmFja0NvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoRGV2
aWNlUmVkOjB4RTAgLyAyNTUuMCBncmVlbjoweEUwIC8gMjU1LjAgYmx1ZToweEUwIC8gMjU1LjAg
YWxwaGE6MV07CiAKICAgICBpZiAoW3NlbGYgaXNFbmFibGVkXSkKICAgICAgICAgW3RyYWNrQ29s
b3Igc2V0XTsKQEAgLTExNDcsNyArMTE0Nyw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVDb25zaXN0
ZW50VGVzdGluZ0Vudmlyb25tZW50KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU0FjdGl2
aXR5T3B0aW9ucyBvcHRpb25zID0gKE5TQWN0aXZpdHlVc2VySW5pdGlhdGVkQWxsb3dpbmdJZGxl
U3lzdGVtU2xlZXAgfCBOU0FjdGl2aXR5TGF0ZW5jeUNyaXRpY2FsKSAmIH4oTlNBY3Rpdml0eVN1
ZGRlblRlcm1pbmF0aW9uRGlzYWJsZWQgfCBOU0FjdGl2aXR5QXV0b21hdGljVGVybWluYXRpb25E
aXNhYmxlZCk7Ci0gICAgc3RhdGljIGlkIGFzc2VydGlvbiA9IFtbW05TUHJvY2Vzc0luZm8gcHJv
Y2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjpAIkR1bXBS
ZW5kZXJUcmVlIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHByZXNzaW9uIl0g
cmV0YWluXTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPGlkPiBhc3NlcnRpb24gPSBbW05TUHJvY2Vz
c0luZm8gcHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNv
bjpAIkR1bXBSZW5kZXJUcmVlIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHBy
ZXNzaW9uIl07CiAgICAgQVNTRVJUX1VOVVNFRChhc3NlcnRpb24sIGFzc2VydGlvbik7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UXVpY2tMb29rLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW0KaW5kZXggMWY5N2QyOTQyMjAyZTgwY2RmMzA2MDBmNTY1YmU0YjBlMTMyZWYwOC4u
NDU0Y2EzYWQ4NWM5M2NiOWZjOWIzZjIwMmE4NWUxMjNkYzM3NGE4MCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTUxLDcg
KzUxLDcgQEAgc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGJvb2wgZG93bmxvYWRJc0RvbmU7
CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUg
PSBAImFwcGxpY2F0aW9uL3BkZiI7Ci1zdGF0aWMgTlNVUkwgKiBjb25zdCBwYWdlc0RvY3VtZW50
VVJMID0gW1tOU0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291cmNlOkAicGFnZXMiIHdpdGhF
eHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XSByZXRhaW5dOworc3RhdGljIFJldGFpblB0cjxOU1VSTD4gcGFnZXNEb2N1bWVudFVSTCA9IFtO
U0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291cmNlOkAicGFnZXMiIHdpdGhFeHRlbnNpb246
QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIAogQGlu
dGVyZmFjZSBRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGUsIF9XS0Rvd25sb2FkRGVsZWdhdGU+CiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19V
TkFWQUlMQUJMRTsKQEAgLTI4MCw4ICsyODAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmll
dz4gcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhRdWlja0xvb2tEZWxlZ2F0ZSAqZGVsZWdhdAog
CiBURVNUKFF1aWNrTG9vaywgQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewot
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwotICAgIHJ1blRlc3REZWNpZGVCZWZvcmVM
b2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2Vz
RG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMLmdl
dCgpIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAg
ICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0ZB
TFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxl
Z2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRp
ZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTI5MCw4ICsyOTAsOCBAQCBURVNUKFF1aWNrTG9v
aywgQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywg
QWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVV
Ukw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdN
SU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7
Ci0gICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZp
bGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVu
dFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93XSk7CisgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVD
VF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUo
W2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTMxOSw4ICszMTksOCBAQCBA
ZW5kCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRp
bmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rQXN5
bmNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVS
TCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAg
cnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUXVpY2tMb29rQXN5bmNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZp
bGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVs
ZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVS
TC5nZXQoKV0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25d
KTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAg
IEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zMjks
OCArMzI5LDggQEAgVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRp
bmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3BvbnNlQWZ0ZXJMb2Fk
aW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0Fz
eW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRV
UkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQ
b2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwotICAgIHJ1blRlc3REZWNp
ZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVp
Y2tMb29rQXN5bmNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNE
b2N1bWVudFVSTC5nZXQoKSBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1F
VHlwZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Cisg
ICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0ZB
TFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxl
Z2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRp
ZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTM0MCw4ICszNDAsOCBAQCBURVNUKFF1aWNrTG9v
aywgQXN5bmNBbGxvd1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xv
b2ssIENhbmNlbFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3Rl
ZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUNhbmNlbF0pOwotICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVn
YXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxd
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpIHJlc3BvbnNl
UG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERl
Y2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJv
ckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9u
RXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdh
dGlvbl0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9h
ZF0pOwpAQCAtMzUyLDggKzM1Miw4IEBAIFRFU1QoUXVpY2tMb29rLCBDYW5jZWxSZXNwb25zZUJl
Zm9yZUxvYWRpbmdQcmV2aWV3KQogI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tMb29rLCBDYW5jZWxSZXNwb25z
ZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNw
b25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbF0pOwotICAgIHJ1blRl
c3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2Vz
RG9jdW1lbnRVUkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlN
RVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsK
KyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1Rf
RVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdh
dGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRp
ZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmFpbE5h
dmlnYXRpb25dKTsKQEAgLTM2NCw4ICszNjQsOCBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVz
cG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNw
b25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2Vz
RG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3du
bG9hZF0pOwotICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4
cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpIHJlc3BvbnNlUG9saWN5OldLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWRdKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3Jl
TG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdl
c0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2Fk
SW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29k
ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0z
NzksOCArMzc5LDggQEAgVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2Fk
aW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVy
TG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVS
TCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBv
bGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7Ci0gICAgcnVuVGVzdERl
Y2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTC5nZXQoKSBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlw
ZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7Cisg
ICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0VR
KFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRl
IG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRG
aW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZhaWxOYXZp
Z2F0aW9uXSk7CkBAIC00MzAsOCArNDMwLDggQEAgVEVTVChRdWlja0xvb2ssIFJlcXVlc3RQYXNz
d29yZEFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBSZWxvYWRBbmRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uKQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVp
Y2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1l
bnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwot
ICAgIGF1dG8gd2ViVmlldyA9IHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdl
dCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpIHJlc3BvbnNlUG9saWN5
OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBy
dW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0ZBTFNF
KFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0
ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZp
bmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBURVNUKFF1aWNrTG9vaywg
TGVnYWN5UXVpY2tMb29rQ29udGVudCkKIAogICAgIFdlYkZyYW1lICptYWluRnJhbWUgPSBbd2Vi
VmlldyBtYWluRnJhbWVdOwogCi0gICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdXTsKKyAgICBbbWFpbkZyYW1lIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5n
ZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAK
QEAgLTUwMCw3ICs1MDAsNyBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tMb29rQ29udGVu
dCkKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVkRmlsZU5hbWU7CiAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVUeXBlOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4g
ZXhwZWN0ZWRNSU1FVHlwZTsKLSAgICByZWFkRmlsZShwYWdlc0RvY3VtZW50VVJMLCBleHBlY3Rl
ZEZpbGVTaXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVUeXBlLCBleHBlY3RlZE1J
TUVUeXBlLCBleHBlY3RlZEZpbGVEYXRhKTsKKyAgICByZWFkRmlsZShwYWdlc0RvY3VtZW50VVJM
LmdldCgpLCBleHBlY3RlZEZpbGVTaXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVU
eXBlLCBleHBlY3RlZE1JTUVUeXBlLCBleHBlY3RlZEZpbGVEYXRhKTsKIAogICAgIE5TRGljdGlv
bmFyeSAqcXVpY2tMb29rQ29udGVudCA9IG1haW5GcmFtZS5kYXRhU291cmNlLl9xdWlja0xvb2tD
b250ZW50OwogICAgIE5TU3RyaW5nICpmaWxlUGF0aCA9IHF1aWNrTG9va0NvbnRlbnRbV2ViUXVp
Y2tMb29rRmlsZU5hbWVLZXldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCmluZGV4IDJlOWIxMzQzOWUyODVmZDIyN2NmYzE5YzUxNzM2NTNjMTFiNjQ3ZTIuLjY3
YTY2NzIyMjA1ZTJkNmZjYzlmZDllMTlmMDQyZDg1NDc1OGZhODEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTY2OSw3ICs2NjksNyBAQCAtIChSZXRh
aW5QdHI8TlNBcnJheT4pc2VsZWN0aW9uUmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZQogICAg
IF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Fy
cmF5PiBzZWxlY3Rpb25SZWN0czsKICAgICBbc2VsZiBfZG9BZnRlck5leHRQcmVzZW50YXRpb25V
cGRhdGU6XigpIHsKLSAgICAgICAgc2VsZWN0aW9uUmVjdHMgPSBhZG9wdE5TKFtbcmV0YWluZWRT
ZWxmIF91aVRleHRTZWxlY3Rpb25SZWN0c10gcmV0YWluXSk7CisgICAgICAgIHNlbGVjdGlvblJl
Y3RzID0gW3JldGFpbmVkU2VsZiBfdWlUZXh0U2VsZWN0aW9uUmVjdHNdOwogICAgICAgICBpc0Rv
bmUgPSB0cnVlOwogICAgIH1dOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rl
c3RDb250cm9sbGVySU9TLm1tCmluZGV4IGZkZTJlYTllYWJjZWJhNjI0YzVmOGMzZmI4OTc3Y2Qz
ZjcwMDU5MGQuLjhhZTFmYjczZmI2MjhiZmJmY2Q3ZDJjZjg3NGExOTE2YjJjZmUyOWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0z
MTYsMTIgKzMxNiwxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIAogY29u
c3QgY2hhciogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkK
IHsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKnBsYXRmb3JtTGlicmFyeVBhdGggPSBuaWw7CisgICAg
c3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gcGxhdGZvcm1MaWJyYXJ5UGF0aDsKICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9r
ZW4sIF57Ci0gICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbW0Aifi9MaWJyYXJ5L0FwcGxp
Y2F0aW9uIFN1cHBvcnQvV2ViS2l0VGVzdFJ1bm5lciIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUlu
UGF0aF0gcmV0YWluXTsKKyAgICAgICAgcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IFtAIn4vTGlicmFy
eS9BcHBsaWNhdGlvbiBTdXBwb3J0L1dlYktpdFRlc3RSdW5uZXIiIHN0cmluZ0J5RXhwYW5kaW5n
VGlsZGVJblBhdGhdOwogICAgIH0pOwotICAgIHJldHVybiBwbGF0Zm9ybUxpYnJhcnlQYXRoLlVU
RjhTdHJpbmc7CisgICAgcmV0dXJuIFtwbGF0Zm9ybUxpYnJhcnlQYXRoIFVURjhTdHJpbmddOwog
fQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRIaWRkZW4oYm9vbCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggODVhMmM3NGQyZDhi
NzBhY2ViOGUxZjEyN2FmZWVhOGQ1MmUyNzdhOS4uOGFjNjRiMzdlMjUyZDU4ZWFjOTQzZGU0YzMx
ODhmNGE3YTQ5YWRkNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVz
dENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENv
bnRyb2xsZXJNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQog
CiBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKIHsKLSAgICBzdGF0aWMgTlNT
ZXQgKmZvbnRGYW1pbHlTZXQgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOgorICAgIHN0YXRpYyBS
ZXRhaW5QdHI8TlNTZXQ+IGZvbnRGYW1pbHlTZXQgPSBbTlNTZXQgc2V0V2l0aE9iamVjdHM6CiAg
ICAgICAgIEAiQWhlbSIsCiAgICAgICAgIEAiQWwgQmF5YW4iLAogICAgICAgICBAIkFtZXJpY2Fu
IFR5cGV3cml0ZXIiLApAQCAtMzU1LDE4ICszNTUsMTggQEAgc3RhdGljIE5TU2V0ICphbGxvd2Vk
Rm9udEZhbWlseVNldCgpCiAgICAgICAgIEAiV2luZ2RpbmdzIiwKICAgICAgICAgQCJaYXBmIERp
bmdiYXRzIiwKICAgICAgICAgQCJaYXBmaW5vIiwKLSAgICAgICAgbmlsXSByZXRhaW5dOworICAg
ICAgICBuaWxdOwogCi0gICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQ7CisgICAgcmV0dXJuIGZvbnRG
YW1pbHlTZXQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU1NldCAqc3lzdGVtSGlkZGVuRm9udEZhbWls
eVNldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRX
aXRoT2JqZWN0czoKKyAgICBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiBmb250RmFtaWx5U2V0ID0g
W05TU2V0IHNldFdpdGhPYmplY3RzOgogICAgICAgICBAIi5MdWNpZGFHcmFuZGVVSSIsCi0gICAg
ICAgIG5pbF0gcmV0YWluXTsKKyAgICAgICAgbmlsXTsKIAotICAgIHJldHVybiBmb250RmFtaWx5
U2V0OworICAgIHJldHVybiBmb250RmFtaWx5U2V0LmdldCgpOwogfQogCiBzdGF0aWMgV0tSZXRh
aW5QdHI8V0tBcnJheVJlZj4gZ2VuZXJhdGVGb250QWxsb3dMaXN0KCkKQEAgLTQzMCwxMiArNDMw
LDEyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogCiBjb25zdCBjaGFyKiBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQogewotICAgIHN0
YXRpYyBOU1N0cmluZyAqcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IG5pbDsKKyAgICBzdGF0aWMgUmV0
YWluUHRyPE5TU3RyaW5nPiBwbGF0Zm9ybUxpYnJhcnlQYXRoOwogICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAg
ICAgICAgcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IFtbQCJ+L0xpYnJhcnkvQXBwbGljYXRpb24gU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZSIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gcmV0YWlu
XTsKKyAgICAgICAgcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IFtAIn4vTGlicmFyeS9BcHBsaWNhdGlv
biBTdXBwb3J0L0R1bXBSZW5kZXJUcmVlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsK
ICAgICB9KTsKLSAgICByZXR1cm4gcGxhdGZvcm1MaWJyYXJ5UGF0aC5VVEY4U3RyaW5nOworICAg
IHJldHVybiBbcGxhdGZvcm1MaWJyYXJ5UGF0aCBVVEY4U3RyaW5nXTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQppbmRleCA0OTE0MzEzYjE4OWJj
ODVlMWI5NzhkYzM1NjliN2RiZWY3NTQ2NTAzLi5lZGQxMjY5NzI4MTkzYzg5ZDhiMjlkNDI2NzMw
ZmU1MTU4YjAxYTEyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWlu
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0KQEAgLTU0LDcgKzU0
LDcgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KCkKIHN0YXRpYyB2b2lkIGRpc2FibGVBcHBOYXBJblVJUHJvY2VzcygpCiB7CiAgICAgTlNBY3Rp
dml0eU9wdGlvbnMgb3B0aW9ucyA9IChOU0FjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRs
ZVN5c3RlbVNsZWVwIHwgTlNBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCkgJiB+KE5TQWN0aXZpdHlT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkIHwgTlNBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9u
RGlzYWJsZWQpOwotICAgIHN0YXRpYyBpZCBhc3NlcnRpb24gPSBbW1tOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246QCJXZWJL
aXRUZXN0UnVubmVyIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHByZXNzaW9u
Il0gcmV0YWluXTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPGlkPiBhc3NlcnRpb24gPSBbW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJl
YXNvbjpAIldlYktpdFRlc3RSdW5uZXIgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mg
c3VwcHJlc3Npb24iXTsKICAgICBBU1NFUlRfVU5VU0VEKGFzc2VydGlvbiwgYXNzZXJ0aW9uKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421596</attachid>
            <date>2021-02-25 19:08:05 -0800</date>
            <delta_ts>2021-02-25 19:23:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222439-20210225190804.patch</filename>
            <type>text/plain</type>
            <size>76386</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTA0OGRiN2M3ZGE2ODdkN2MxZjk2NDI2OTIxNDJiNDhmZDBiNjViLi5kMzYyYjUzNDhkYzE2MDgz
ZTYwY2FlYzY0MjM0NTZkZWI0M2RmMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKCtbSlNDb250
ZXh0IGN1cnJlbnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGJlZ2luQ2FsbGJh
Y2tXaXRoRGF0YTpjYWxsZWVWYWx1ZTp0aGlzVmFsdWU6YXJndW1lbnRDb3VudDphcmd1bWVudHM6
XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBlbmRDYWxsYmFja1dpdGhEYXRhOl0pOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
Lm1tOgorICAgICAgICAoLVtUaW55RE9NTm9kZSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgor
CiAyMDIxLTAyLTI1ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBMaXN0IG9mIGdyaWQgbm9kZXMgaXMgaW5jb21wbGV0ZSBpbiBM
YXlvdXQgc2lkZWJhciBwYW5lbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNWYxMTIxYTg1ZjJhY2JkOWRhMzAz
MWQ3ODc3Y2Q5ZmRkMzIzYjEuLjlhNTI2NzdkNzc5NDZhMTE2ODAyYjQ1YjMyNTM2ZDQxN2E5YTZh
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4g
V2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORF0pOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc3VsdElzVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChXZWJEZWZhdWx0Rm9udCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlRGVjb2RlckFzc2V0T3B0aW9ucyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjp0ZW1wb3JhcnlE
aXJlY3RvcnlBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlv
bk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGNoZWNrQ2xpZW50
U3RhdHVzXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoU2VuZE1lc3NhZ2UpOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRDYWxsRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKToKKyAgICAgICAgKFJ1
bldlYlRocmVhZCk6CisgICAgICAgIChXZWJUaHJlYWROU1J1bkxvb3ApOgorCiAyMDIxLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWFrZSBpbnRlcm5hbCBDb250ZW50RmlsdGVyaW5nIHRlc3RzIG5vdCB0aW1lIG91dCBhZnRlciBy
MjcyMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGRhNjM2YmRjMzUyNTc3NmE0OGI1MzIxY2RjYjRlZmFhMGE0NGI0
YzkuLjJmYzAwZGFjNmMyMmFmM2Y3MDY3MDQyZTA2ZjJiOGUxMmIwOGM5YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdCBieSB1c2luZyBS
ZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmlzRmVhdHVyZUZsYWdFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
LVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EXSk6CisKIDIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViQ29udGVudCBzYW5kYm94IHRvIGFsbG93IGl0IHRv
IGNhbGwgdGFza19jcmVhdGVfaWRlbnRpdHlfdG9rZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGM0NmYyNDY3ODQ5OWJmZWMxOWZiNTMwNWZlYTY2YTQ3NWY3YzFjZmEuLjFhYzU1
ZWQ1MTBiYTY5OWJhM2FiOWM1N2UyZjkyNGYwNmU4MDQ4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBy
ZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0
IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lXSk6CisgICAg
ICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dlYlN0cmluZ1Ry
dW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5hZ2VyIF9z
dG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKF9XZWJDcmVhdGVGcmFnbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOgorICAgICAgICAoK1tXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKyAgICAgICAgKCtb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tOgorICAgICAgICAoV2Vi
S2l0Ojppc0ZlYXR1cmVGbGFnRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jaGVja0RpZFBlcmZvcm1GaXJzdE5h
dmlnYXRpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQcmVmZXJlbmNlczpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBwcmVmZXJlbmNlc10pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEdyb3Vw
TmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMjEtMDItMjUg
IFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MzQ2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
aW5kZXggZTNhZjBiMTQxZGU4MTdkMjg3NThiMzAzODAxMWMyZDFlY2NhMzYyYi4uMGJhNzk5MWVm
N2IyN2RhZTI1NTFkNjA0ZWZjM2RjN2IzMzJjM2JkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KQEAgLTI0MiwxMyArMjQyLDEzIEBAICsgKE5TQXJyYXkgKiljdXJyZW50
QXJndW1lbnRzCiAgICAgaWYgKCFlbnRyeS0+Y3VycmVudEFyZ3VtZW50cykgewogICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICAgICAg
c2l6ZV90IGNvdW50ID0gZW50cnktPmFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIE5TTXV0YWJsZUFy
cmF5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNvdW50XTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6
W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+YXJndW1lbnRzW2ldIGluQ29udGV4
dDpjb250ZXh0XSBhdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIGVudHJ5LT5jdXJyZW50
QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICBlbnRyeS0+Y3VycmVudEFyZ3VtZW50cyA9
IFdURk1vdmUoYXJndW1lbnRzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZW50cnktPmN1cnJlbnRB
cmd1bWVudHM7CisgICAgcmV0dXJuIGVudHJ5LT5jdXJyZW50QXJndW1lbnRzLmdldCgpOwogfQog
CiAtIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTM3MSw3ICszNzEsNyBA
QCAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tE
YXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUgogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFj
ayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwotICAgICpjYWxsYmFja0RhdGEg
PSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWlu
XSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwg
fTsKKyAgICAqY2FsbGJhY2tEYXRhID0gQ2FsbGJhY2tEYXRhIHsgcHJldlN0YWNrLCBzZWxmLCBz
ZWxmLmV4Y2VwdGlvbiwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJn
dW1lbnRzLCBuaWwgfTsKICAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOwogICAg
IHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQpAQCAtMzc5LDkgKzM3OSw3IEBAIC0gKHZvaWQpYmVn
aW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEgY2FsbGVlVmFs
dWU6KEpTVmFsdWVSCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxiYWNrRGF0YSAq
KWNhbGxiYWNrRGF0YQogewogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
Ci0gICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsK
LSAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07Ci0gICAgW2Nh
bGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKKyAgICBzZWxmLmV4Y2VwdGlv
biA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhjZXB0aW9uLmdldCgpOwogICAgIHRocmVhZC5t
X2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKaW5kZXggOTU4
YzQ3OWY0MWNlODQxM2ZjNjk0YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uNDRjNWY1OGUzYWMxMTA0MDRl
MDM3YjU2OTM4NjFjYzIyZDE4MDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0SW50ZXJuYWwuaApAQCAtMzIsMTIgKzMyLDEyIEBACiBzdHJ1Y3QgQ2FsbGJhY2tE
YXRhIHsKICAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpjb250ZXh0Owot
ICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8SlNWYWx1ZT4g
cHJlc2VydmVkRXhjZXB0aW9uOwogICAgIEpTVmFsdWVSZWYgY2FsbGVlVmFsdWU7CiAgICAgSlNW
YWx1ZVJlZiB0aGlzVmFsdWU7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQ7CiAgICAgY29uc3Qg
SlNWYWx1ZVJlZiAqYXJndW1lbnRzOwotICAgIE5TQXJyYXkgKmN1cnJlbnRBcmd1bWVudHM7Cisg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGN1cnJlbnRBcmd1bWVudHM7CiB9OwogCiBAY2xhc3MgSlNX
cmFwcGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmlu
ZGV4IGI3OWFiMmJjM2FmMWJjNTNlOGM4MThhMjMzZGIwNzM2ODRiZWIxZDEuLmZmNDdkNjE0MjI4
YWNhMDk3YTViNDViNTc5YWZlYzUyOTNiMjcyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9NZW1v
cnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL0Rh
dGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJDIiB2b2lkIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwogZXh0
ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRl
eHRSZWYpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRpbnlE
T01Ob2RlIHsKICAgICBOU011dGFibGVBcnJheSAqbV9jaGlsZHJlbjsKLSAgICBKU1ZpcnR1YWxN
YWNoaW5lICptX3NoYXJlZFZpcnR1YWxNYWNoaW5lOworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxN
YWNoaW5lPiBtX3NoYXJlZFZpcnR1YWxNYWNoaW5lOwogfQogCiAtIChpZClpbml0V2l0aFZpcnR1
YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTIyOCw5ICsy
MjksNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICop
dmlydHVhbE1hY2hpbmUKIAogICAgIG1fY2hpbGRyZW4gPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OjBdOwogICAgIG1fc2hhcmVkVmlydHVhbE1hY2hpbmUgPSB2aXJ0
dWFsTWFjaGluZTsKLSNpZiAhX19oYXNfZmVhdHVyZShvYmpjX2FyYykKLSAgICBbbV9zaGFyZWRW
aXJ0dWFsTWFjaGluZSByZXRhaW5dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODFhODljZTRhMjJiNmRm
ZTM1ZjMyMTQxMjAyNWJlMTZkZmRlMGY1MS4uM2U3NGU4ZjRhMGEwNGNiZDJlMTY3Y2VmZjViNjJh
Njc5NzJhM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTExNTQsMjkgKzExNTQsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQgU2Nyb2xsVG9W
aXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZlcnNpb25zIGRv
IG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMgdGhlbSB0byBz
ZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0
aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlT
Y3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gQFtOU0FjY2Vzc2li
aWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9u
XTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAvLyBUaGUgb3Jk
ZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUgJ2RlZmF1bHQn
IGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQg
YWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVu
dEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5
U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0
YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBhY3Rp
b25FbGVtZW50QWN0aW9ucyA9IEBbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNz
aWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rp
b25dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2FuY2VsLgotICAg
IHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVsZW1lbnRBY3Rp
b25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0aW9uXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IG1lbnVF
bGVtZW50QWN0aW9ucyA9IFthY3Rpb25FbGVtZW50QWN0aW9ucy5nZXQoKSBhcnJheUJ5QWRkaW5n
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl07CiAKICAgICAvLyBTbGlkZXIgZWxl
bWVudHMgYWxsb3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNBcnJheSAqc2xp
ZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Rz
RnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNBcnJheT4+IHNsaWRlckFjdGlvbnMgPSBbZGVmYXVsdEVsZW1lbnRBY3Rpb25z
LmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5j
cmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXTsKIAogICAgIE5T
QXJyYXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzUHJlc3NBY3Rp
b24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRBY3Rpb25zOworICAgICAgICBh
Y3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNNZW51UmVsYXRlZCgpKQotICAgICAgICBhY3Rpb25zID0gbWVudUVs
ZW1lbnRBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gbWVudUVsZW1lbnRBY3Rpb25zLmdldCgp
LmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAg
IGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gc2xpZGVyQWN0aW9u
cy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQo
KSkKICAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUFjdGlvbk5hbWVzXTsKICAgICBlbHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVu
dEFjdGlvbnM7CisgICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlvbnMuZ2V0KCku
Z2V0KCk7CiAKICAgICByZXR1cm4gYWN0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA4NjMzZTE2ZTU0MjQ3OGVlN2I0NTA2OGI0
NWRmNGFiZWFhM2Q0MzdkLi41NDc5NzQ0MTk2YWY5OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBA
IC0yMTUsOCArMjE1LDEzIEBAIHN0YXRpYyBCT09MIHJlc3VsdElzVVJMKEREUmVzdWx0UmVmIHJl
c3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHN0
YXRpYyBOU1NldCAqdXJsVHlwZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOiAoTlNTdHJpbmcg
KilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJIdHRwVVJMS2V5KCksIChOU1N0cmluZyAq
KWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlcldlYlVSTEtleSgpLCAoTlNTdHJpbmcgKiln
ZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJNYWlsVVJMS2V5KCksIChOU1N0cmluZyAqKWdl
dF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckdlbmVyaWNVUkxLZXkoKSwgKE5TU3RyaW5nICop
Z2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyRW1haWxLZXkoKSwgbmlsXSByZXRhaW5dOwot
ICAgIHJldHVybiBbdXJsVHlwZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRUeXBlKHJlc3VsdCldOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiB1cmxUeXBlcyA9IFtOU1NldCBzZXRXaXRo
T2JqZWN0czoKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmlu
ZGVySHR0cFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0Nv
cmVfRERCaW5kZXJXZWJVUkxLZXkoKSwKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRl
Y3RvcnNDb3JlX0REQmluZGVyTWFpbFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRf
RGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJHZW5lcmljVVJMS2V5KCksCisgICAgICAgIChOU1N0
cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckVtYWlsS2V5KCksIG5pbF07Cisg
ICAgcmV0dXJuIFt1cmxUeXBlcy5nZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07CiB9CiAKIHN0
YXRpYyBOU1N0cmluZyAqY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KEREUmVzdWx0UmVmIGN1
cnJlbnRSZXN1bHQsIE5TU3RyaW5nICpyZXN1bHRJZGVudGlmaWVyLCBOU0RhdGUgKnJlZmVyZW5j
ZURhdGUsIE5TVGltZVpvbmUgKnJlZmVyZW5jZVRpbWVab25lLCBPcHRpb25TZXQ8RGF0YURldGVj
dG9yVHlwZT4gZGV0ZWN0aW9uVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDNiZDJkNmViYTNiMzVmZTZkYzM5NTMyMjZmYmQ4ZDU2
MGJlY2ZlOS4uMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNDE1LDE2
ICs0MTUsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIC8v
IFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUgTlNGb250QXR0cmlidXRlTmFtZSBk
b2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiB7Ci0gICAgc3Rh
dGljIE5TRm9udCAqZGVmYXVsdEZvbnQgPSBuaWw7Ci0gICAgaWYgKGRlZmF1bHRGb250KQotICAg
ICAgICByZXR1cm4gZGVmYXVsdEZvbnQ7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZv
bnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07Ci0gICAgaWYgKCFmb250KQotICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLQotICAgIGRlZmF1bHRGb250
ID0gW2ZvbnQgcmV0YWluXTsKLSAgICByZXR1cm4gZGVmYXVsdEZvbnQ7CisgICAgc3RhdGljIGF1
dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBOU0ZvbnQg
KmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07CisgICAg
ICAgIGlmICghZm9udCkKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNp
emU6MTJdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZvbnQpOworICAgIH0oKSk7CisgICAg
cmV0dXJuIGRlZmF1bHRGb250LmdldCgpLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU3ZjIxYzU4ODg5YjY3
NjM4Y2RjMjhhNDExNTQyZmFjZmU1MjAyNjMuLmYzNjljZjBjMjlmNjY5ZGNmMmZhZGY4YTVkY2E5
YzI4MTJiZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjI1LDEzICsyMjUsMTEgQEAgc3RhdGljIE5TVVJMICpjdXN0b21TY2hlbWVV
UkwoKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICppbWFnZURlY29kZXJBc3NldE9wdGlvbnMoKQog
ewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbXSB7Ci0gICAgICAgIHJldHVy
biBbQHsKLSAgICAgICAgICAgIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXk6IEAo
QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkQWxsKSwKLSAgICAgICAgICAgIEFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXk6IEBZRVMsCi0gICAgICAgIH0gcmV0YWluXTsK
LSAgICB9KCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBvcHRpb25zID0gQHsKKyAgICAgICAgQVZVUkxBc3Nl
dFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25G
b3JiaWRBbGwpLAorICAgICAgICBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5OiBA
WUVTLAorICAgIH07CisgICAgcmV0dXJuIG9wdGlvbnMuZ2V0KCkuZ2V0KCk7CiB9CiAKIGNsYXNz
IEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUgOiBwdWJsaWMgTWVkaWFTYW1wbGVBVkZPYmpDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpp
bmRleCBkOTMxZDZjYWVhZDAwZjdhYzdiMDg4YjM4OWEwNGE4YjUzMTMwZjJmLi5kNDQ5YzQ4MjQ5
NTg1MTY0MGRhOTNkNWNiOWVhYjY2Mzc2MTg4MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBO
U0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAoY29sb3IuaXNJbmxp
bmUoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgY29sb3IuYXNJbmxp
bmUoKSB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAq
Y2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAg
YWxwaGE6MF0gcmV0YWluXTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOworICAgICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gY2xlYXJDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYTowXTsK
KyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52YWx1ZTogewot
ICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JX
aXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0gICAgICAgICAg
ICByZXR1cm4gYmxhY2tDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVk
OjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV07CisgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3
aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYToxXSByZXRhaW5dOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7CisgICAgICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ29sb3I+PiB3aGl0ZUNvbG9y
ID0gW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdOwor
ICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmlu
ZGV4IDJlMjQ3YTZlNTNkZDA1YWIxOTBlZDk2ZGRhMmExYWU2ZGFkYzk4YWYuLmE1ZDJmNzM2YzJl
ZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQpAQCAtNDEsOCArNDEsOCBAQCBjb25zdCBjaGFyKiBRTFByZXZpZXdQ
cm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKIAogTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpzZXQgPSBbUEFMOjpzb2Z0TGlu
a19RdWlja0xvb2tfUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzKCkgcmV0YWluXTsKLSAg
ICByZXR1cm4gc2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+
PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1F
VHlwZXMoKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgTG9jayBx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jazsKQEAgLTEwMiwyMSArMTAyLDIxIEBAIGJv
b2wgaXNRdWlja0xvb2tQcmV2aWV3VVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcygpCiB7Ci0gICAgc3RhdGljIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IFtAeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5Pj4gYXR0cmlidXRlcyA9IEB7CiAgICAgICAgIE5TRmlsZU93bmVyQWNj
b3VudE5hbWUgOiBOU1VzZXJOYW1lKCksCiAgICAgICAgIE5TRmlsZVBvc2l4UGVybWlzc2lvbnMg
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6KFdFQl9VUkVBRCB8IFdFQl9VV1JJVEUpXSwK
LSAgICAgICAgfSByZXRhaW5dOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMgPSBbQHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICBOU0ZpbGVPd25lckFjY291
bnROYW1lIDogTlNVc2VyTmFtZSgpLAogICAgICAgICBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zIDog
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOihXRUJfVVJFQUQgfCBXRUJfVVdSSVRFIHwgV0VC
X1VFWEVDKV0sCiAgICAgICAgIE5TRmlsZVByb3RlY3Rpb25LZXkgOiBOU0ZpbGVQcm90ZWN0aW9u
Q29tcGxldGVVbmxlc3NPcGVuLAotICAgICAgICB9IHJldGFpbl07Ci0gICAgcmV0dXJuIGF0dHJp
YnV0ZXM7CisgICAgfTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAog
TlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJpbmcgKmZpbGVO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCmluZGV4IDI3YjQyNDhjNjc5N2IyYzdmNjIzNWViZTFlYjRiZTZjYzMzZjUxODMu
LmVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTE3
OCwxMyArMTc4LDggQEAgLSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAgICBpZiAobV9o
ZWFkaW5nQXZhaWxhYmxlKQogICAgICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBk
YXRpbmdIZWFkaW5nXTsKIAotICAgICAgICBpZiAoIW1fdXBkYXRlVGltZXIpIHsKLSAgICAgICAg
ICAgIG1fdXBkYXRlVGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVy
dmFsOmtNb3Rpb25VcGRhdGVJbnRlcnZhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6c2VsZgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6
QHNlbGVjdG9yKHVwZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6WUVTXSByZXRh
aW5dOwotICAgICAgICB9CisgICAgICAgIGlmICghbV91cGRhdGVUaW1lcikKKyAgICAgICAgICAg
IG1fdXBkYXRlVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6
a01vdGlvblVwZGF0ZUludGVydmFsIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRh
dGUpIHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU107CiAgICAgfSBlbHNlIHsKICAgICAgICAgW21f
dXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5k
ZXggMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MC4uOGJhMjI1ZTI1M2Ux
YzdmYjAyZGY4YmE3MTBkNmE4NjNkZjMzZTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9y
dCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
I2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CkBAIC0xMTEsNyArMTEyLDcgQEAgc3RhdGlj
IFJlY3Vyc2l2ZUxvY2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCiBzdGF0aWMgdm9pZCogYXV0b3Jl
bGVhc2VQb29sTWFyazsKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgd2ViVGhyZWFkUnVuTG9vcDsKLXN0
YXRpYyBOU1J1bkxvb3AqIHdlYlRocmVhZE5TUnVuTG9vcDsKK3N0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNSdW5Mb29wPj4gd2ViVGhyZWFkTlNSdW5Mb29wOwogc3RhdGljIHB0aHJl
YWRfdCB3ZWJUaHJlYWQ7CiBzdGF0aWMgQk9PTCBpc1dlYlRocmVhZExvY2tlZDsKIHN0YXRpYyBC
T09MIHdlYlRocmVhZFN0YXJ0ZWQ7CkBAIC0xMjcsMTEgKzEyOCw5IEBAIHR5cGVkZWYgZW51bSB7
CiBzdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIFdlYlRocmVhZFJlbGVhc2VTb3VyY2U7CiBzdGF0
aWMgQ0ZNdXRhYmxlQXJyYXlSZWYgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OwogCi1zdGF0aWMg
dm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaik7Ci0KIHN0YXRpYyBMb2NrIGRl
bGVnYXRlTG9jazsKIHN0YXRpYyBTdGF0aWNDb25kaXRpb24gZGVsZWdhdGVDb25kaXRpb247Ci1z
dGF0aWMgTlNJbnZvY2F0aW9uKiBkZWxlZ2F0ZUludm9jYXRpb247CitzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TSW52b2NhdGlvbj4+IGRlbGVnYXRlSW52b2NhdGlvbjsKIHN0YXRp
YyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2UgPSBudWxscHRyOwogc3RhdGljIEJP
T0wgZGVsZWdhdGVIYW5kbGVkOwogI2lmIExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCkBAIC0xNjUs
MTAgKzE2NCwxNCBAQCBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSB1bnNpZ25lZCB3ZWJUaHJlYWRE
ZWxlZ2F0ZU1lc3NhZ2VTY29wZUNvdW50ID0gMDsKIAogc3RhdGljIGJvb2wgcGVyQ2FsbG91dEF1
dG9yZWxlYXNlcG9vbEVuYWJsZWQ7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShO
U0ludm9jYXRpb24qIGludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2Uo
UmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9u
IGludm9rZV07Ci0gICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKKwor
ICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFpbigpID09IENG
UnVuTG9vcEdldEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtpbnZvY2F0aW9uID0gV1RGTW92ZShpbnZvY2F0aW9uKV0geyB9KTsKIH0K
IAogc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCopCkBAIC0xODUsMTUgKzE4
OCwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkKikKICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOwogCiAjaWYgTE9HX01FU1NBR0VT
Ci0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6
W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKKyAgICAgICAgaWYgKFtbZGVsZWdhdGVJ
bnZvY2F0aW9uLmdldCgpIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50
ZXIgY2xhc3NdXSkgewogICAgICAgICAgICAgaWQgYXJndW1lbnQwOwotICAgICAgICAgICAgW2Rl
bGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAg
ICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgpIGdldEFyZ3VtZW50OiZhcmd1bWVudDAg
YXRJbmRleDowXTsKICAgICAgICAgICAgIE5TTG9nKEAibm90aWZpY2F0aW9uIHJlY2VpdmU6ICVA
IiwgYXJndW1lbnQwKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBOU0xvZyhAImRlbGVn
YXRlIHJlY2VpdmU6ICVAIiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlv
biBzZWxlY3Rvcl0pKTsKKyAgICAgICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgcmVjZWl2ZTogJUAi
LCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgpIHNlbGVjdG9y
XSkpOwogI2VuZGlmCiAKLSAgICAgICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsK
KyAgICAgICAgU2VuZE1lc3NhZ2UoV1RGTW92ZShkZWxlZ2F0ZUludm9jYXRpb24uZ2V0KCkpKTsK
IAogICAgICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBZRVM7CiAgICAgICAgIGRlbGVnYXRlQ29uZGl0
aW9uLm5vdGlmeU9uZSgpOwpAQCAtMjE0LDI2ICsyMTcsMjYgQEAgcHVibGljOgogICAgIH0KIH07
CiAKLXN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uKiBpbnZvY2F0
aW9uKQorc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0
aW9uPiYmIGludm9jYXRpb24pCiB7CiAgICAgaWYgKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewot
ICAgICAgICBTZW5kTWVzc2FnZShpbnZvY2F0aW9uKTsKKyAgICAgICAgU2VuZE1lc3NhZ2UoV1RG
TW92ZShpbnZvY2F0aW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NFUlQo
ZGVsZWdhdGVTb3VyY2UpOwogICAgIGRlbGVnYXRlTG9jay5sb2NrKCk7CiAKLSAgICBkZWxlZ2F0
ZUludm9jYXRpb24gPSBpbnZvY2F0aW9uOworICAgIGRlbGVnYXRlSW52b2NhdGlvbi5nZXQoKSA9
IFdURk1vdmUoaW52b2NhdGlvbik7CiAgICAgZGVsZWdhdGVIYW5kbGVkID0gTk87CiAKICNpZiBM
T0dfTUVTU0FHRVMKLSAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRP
ZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKSB7CisgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uLmdldCgpIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25D
ZW50ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgIFtkZWxlZ2F0
ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOworICAgICAgICBb
ZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgpIGdldEFyZ3VtZW50OiZhcmd1bWVudDAgYXRJbmRleDow
XTsKICAgICAgICAgTlNMb2coQCJub3RpZmljYXRpb24gc2VuZDogJUAiLCBhcmd1bWVudDApOwog
ICAgIH0gZWxzZQotICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHNlbmQ6ICVAIiwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pKTsKKyAgICAgICAgTlNM
b2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUlu
dm9jYXRpb24uZ2V0KCkgc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAogICAgIHsKQEAgLTI0OCwxMCAr
MjUxLDEwIEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uKiBp
bnZvY2F0aW9uKQogICAgICAgICB3aGlsZSAoIWRlbGVnYXRlSGFuZGxlZCkgewogICAgICAgICAg
ICAgaWYgKCFkZWxlZ2F0ZUNvbmRpdGlvbi53YWl0Rm9yKGRlbGVnYXRlTG9jaywgRGVsZWdhdGVX
YWl0SW50ZXJ2YWwpKSB7CiAgICAgICAgICAgICAgICAgaWQgZGVsZWdhdGVJbmZvcm1hdGlvbjsK
LSAgICAgICAgICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRP
ZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKQotICAgICAgICAgICAgICAgICAg
ICBbZGVsZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3VtZW50OiZkZWxlZ2F0ZUluZm9ybWF0aW9uIGF0
SW5kZXg6MF07CisgICAgICAgICAgICAgICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uLmdldCgp
IHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkKKyAg
ICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbi5nZXQoKSBnZXRBcmd1bWVudDom
ZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOwogICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVj
dG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9j
YXRpb24uZ2V0KCkgc2VsZWN0b3JdKTsKICAgICAKICAgICAgICAgICAgICAgICBDRlN0cmluZ1Jl
ZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4oKSk7CiAg
ICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJu
IGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJF
VFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFs
LnNlY29uZHMoKSwgbW9kZSk7CkBAIC0yODIsMTkgKzI4NSw2IEBAIHZvaWQgV2ViVGhyZWFkUnVu
T25NYWluVGhyZWFkKHZvaWQoXmRlbGVnYXRlQmxvY2spKCkpCiAgICAgX1dlYlRocmVhZExvY2so
KTsKIH0KIAotc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopCi17
Ci0gICAgYXV0byBhZG9wdGVkT2JqID0gYWRvcHROUyhvYmopOwotICAgIGlmICghV2ViVGhyZWFk
SXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFpbigpID09IENGUnVuTG9vcEdldEN1cnJlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotI2lmIExPR19SRUxFQVNFUwotICAgIE5TTG9nKEAiUmVsZWFz
ZSBzZW5kIFt3ZWIgdGhyZWFkXSA6ICVAIiwgb2JqKTsKLSNlbmRpZgotICAgIC8vIFdlIG93biBv
YmogYXQgdGhpcyBwb2ludCwgc28gd2UgZG9uJ3QgbmVlZCB0aGUgYmxvY2sgdG8gaW1wbGljaXRs
eQotICAgIC8vIHJldGFpbiBpdC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Fkb3B0
ZWRPYmogPSBXVEZNb3ZlKGFkb3B0ZWRPYmopXSB7IH0pOwotfQotCiB2b2lkIFdlYlRocmVhZEFk
b3B0QW5kUmVsZWFzZShpZCBvYmopCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQo
KSk7CkBAIC00MjYsNyArNDE2LDcgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhyZWFkUmVsZWFz
ZVNvdXJjZSh2b2lkKikKIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKE5TSW52b2NhdGlvbiog
aW52b2NhdGlvbikKIHsKICAgICAvLyBOU0ludm9jYXRpb24gcmVsZWFzZWQgaW4gU2VuZE1lc3Nh
Z2UoKQotICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoW2ludm9jYXRpb24gcmV0YWluXSk7CisgICAg
U2VuZERlbGVnYXRlTWVzc2FnZShpbnZvY2F0aW9uKTsKIH0KIAogdm9pZCBXZWJUaHJlYWRQb3N0
Tm90aWZpY2F0aW9uKE5TU3RyaW5nKiBuYW1lLCBpZCBvYmplY3QsIGlkIHVzZXJJbmZvKQpAQCAt
NTA1LDcgKzQ5NSw3IEBAIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2tJbnRlcm5hbChBdXRv
cmVsZWFzZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlvbikKICAgICBBU1NFUlQoc0FzeW5jRGVs
ZWdhdGVzKCkpOwogICAgIGlmIChbc0FzeW5jRGVsZWdhdGVzKCkgY291bnRdKSB7CiAgICAgICAg
IGZvciAoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uIGluIHNBc3luY0RlbGVnYXRlcygpLmdldCgp
KQotICAgICAgICAgICAgU2VuZERlbGVnYXRlTWVzc2FnZShbaW52b2NhdGlvbiByZXRhaW5dKTsK
KyAgICAgICAgICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoaW52b2NhdGlvbik7CiAgICAgICAgIFtz
QXN5bmNEZWxlZ2F0ZXMoKSByZW1vdmVBbGxPYmplY3RzXTsKICAgICB9CiAKQEAgLTYzMiw3ICs2
MjIsNyBAQCBzdGF0aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogCiAgICAgd2ViVGhyZWFk
Q29udGV4dCA9IEN1cnJlbnRUaHJlYWRDb250ZXh0KCk7CiAgICAgd2ViVGhyZWFkUnVuTG9vcCA9
IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSAgICB3ZWJUaHJlYWROU1J1bkxvb3AgPSBbW05TUnVu
TG9vcCBjdXJyZW50UnVuTG9vcF0gcmV0YWluXTsKKyAgICB3ZWJUaHJlYWROU1J1bkxvb3AuZ2V0
KCkgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKIAogICAgIENGUnVuTG9vcE9ic2VydmVy
UmVmIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShu
dWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMg
fCBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRy
KTsKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29w
TG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtODk4LDggKzg4OCw4
IEBAIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpCiBOU1J1bkxvb3AqIFdlYlRo
cmVhZE5TUnVuTG9vcCh2b2lkKQogewogICAgIGlmICh3ZWJUaHJlYWRTdGFydGVkKSB7Ci0gICAg
ICAgIEFTU0VSVCh3ZWJUaHJlYWROU1J1bkxvb3ApOwotICAgICAgICByZXR1cm4gd2ViVGhyZWFk
TlNSdW5Mb29wOworICAgICAgICBBU1NFUlQod2ViVGhyZWFkTlNSdW5Mb29wLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIHdlYlRocmVhZE5TUnVuTG9vcC5nZXQoKS5nZXQoKTsKICAgICB9CiAKICAg
ICByZXR1cm4gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbQppbmRleCA1Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyLi44Y2Nl
Mjk1NTRjMGI1NjIzY2M5N2RiOWQ0ODI3YzlhMTJjZWEwZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2Fk
Q29jb2EubW0KQEAgLTUxLDE1ICs1MSwxNSBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3By
b2JsZW0vMzQ3NDUxNzE+LiBGaXhlZCBpbiBpT1MgMTMgYW5kIG1hY09TIDEwLjE1LCBidXQgd2Ug
c3RpbGwgbmVlZCB0byBzdXBwb3J0IG1hY09TIDEwLjE0IGZvciBub3cuCiAjaWYgVVNFKExFR0FD
WV9DRk5FVFdPUktfRE9XTkxPQURTKQotICAgIHN0YXRpYyBOU1NldDxDbGFzcz4gKnBsaXN0Q2xh
c3NlcyA9IG5pbDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0PENs
YXNzPj4+IHBsaXN0Q2xhc3NlczsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKIAogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgcGxpc3RDbGFz
c2VzID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJy
YXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNs
YXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gcmV0YWluXTsK
KyAgICAgICAgcGxpc3RDbGFzc2VzLmdldCgpID0gW05TU2V0IHNldFdpdGhPYmplY3RzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051
bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0
IGNsYXNzXSwgbmlsXTsKICAgICB9KTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6bnNEYXRhLmdl
dCgpIGVycm9yOm5pbF0pOwogICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGlj
eTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKLSAgICBhdXRvIGRpY3Rp
b25hcnkgPSBhZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFy
Y2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpwbGlzdENsYXNzZXMgZm9yS2V5OkAiTlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgYXV0byBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNo
aXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6cGxpc3RDbGFzc2VzLmdldCgpLmdldCgpIGZvcktl
eTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOwogICAgIFt1
bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6c3Rh
dGljX2Nhc3Q8TlNTdHJpbmcqPihwYXRoKSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZv
TG9jYWxQYXRoIl07CiAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZl
ciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzQ29jb2EubW0KaW5kZXggMTAxNDViOTBhYTNiNGRhNjlhMDhjMDg4NzlkODUwNmVjNmE2YmRj
Mi4uYzg5MTQ4NGJiZTdkNzVhMGI5NWI4MjQwM2VlZWIwNjY5NmZjYTJlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZh
dWx0VmFsdWVzQ29jb2EubW0KQEAgLTQ1LDEyICs0NSwxMiBAQCBib29sIGlzRmVhdHVyZUZsYWdF
bmFibGVkKGNvbnN0IFN0cmluZyYgZmVhdHVyZU5hbWUpCiAgICAgaWYgKCFpc1dlYktpdEJ1bmRs
ZUZyb21TdGFnZWRGcmFtZXdvcmspCiAgICAgICAgIHJldHVybiBfb3NfZmVhdHVyZV9lbmFibGVk
X2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJlTmFtZS51dGY4KCkuZGF0YSgpKTsK
IAotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBbW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkvQXBwbGUvU3lzdGVtL0xpYnJh
cnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXSByZXRhaW5dOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gZGljdGlvbmFyeSA9IFtO
U0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5L0FwcGxl
L1N5c3RlbS9MaWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il07CiAKLSAg
ICBpZiAoIVtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktl
eTpAIkVuYWJsZWQiXSkKKyAgICBpZiAoIVtbZGljdGlvbmFyeS5nZXQoKSBvYmplY3RGb3JLZXk6
ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKICAgICAgICAgcmV0dXJuIF9v
c19mZWF0dXJlX2VuYWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNoYXIqKWZlYXR1cmVOYW1l
LmNoYXJhY3RlcnM4KCkpOwogCi0gICAgcmV0dXJuIFtbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0g
b2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CisgICAgcmV0dXJuIFtbW2RpY3Rp
b25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFi
bGVkIl0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5Lmdl
dCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGJv
b2xWYWx1ZV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmVDb2NvYS5tbQppbmRleCBkMmQ4YWU4ZmNkNTc3YzEzMjJhMTk0Y2NkNTU4YjBkOGM2ZWNl
NGY3Li40ZWQzNzc0YTA0ZjA4MThlNTU3NDExMWEyNzU0NmY1NmQyN2I3ZDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgQVBJ
IHsKIFdURjo6U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJv
b2wgbGVnYWN5RmlsZW5hbWUpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgc3RhdGljIE5TVVJMICpjb250ZW50UnVsZUxpc3RTdG9yZVVSTDsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJMPj4gY29udGVudFJ1bGVMaXN0U3RvcmVV
Ukw7CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIE5TVVJMICp1
cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xp
YnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVS
TDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTUzLDE1ICs1MywxNSBAQCBX
VEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aChib29sIGxl
Z2FjeUZpbGVuYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVnYWN5Rmls
ZW5hbWUpCi0gICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVSTCA9IFtbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07CisgICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSA9
IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbnMiIGlz
RGlyZWN0b3J5OllFU107CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRSdWxlTGlz
dFN0b3JlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudFJ1
bGVMaXN0cyIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgICAgICAgICAgY29udGVudFJ1
bGVMaXN0U3RvcmVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkNvbnRlbnRSdWxlTGlzdHMiIGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7CiAKLSAgICBpZiAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6Y29u
dGVudFJ1bGVMaXN0U3RvcmVVUkwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIGRpcmVjdG9yeSAlQCIsIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMKTsKKyAgICBpZiAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6Y29u
dGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJM
LmdldCgpLmdldCgpKTsKIAotICAgIHJldHVybiBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5hYnNv
bHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gW2NvbnRl
bnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRlVVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA1
NWI1ZmM5NTUxNjhlNDg0NTJjZmI3MTBjZWJiNmFkZmU5ZDA1YTk0Li40MGQ3Zjg1YmY5YmY4NDI2
NWQwNmQ0OTcyZGM0ZDA2ZWUwY2U5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTIzMSw3ICsyMzEs
NyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiArIChO
U1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQog
ewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1Nl
dCAqYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TU2V0Pj4gYWxsV2Vic2l0ZURhdGFUeXBlczsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF4gewogICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMgPSBAWwogICAgICAgICAgICAg
X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlLApAQCAtMjQ3LDEwICsyNDcsMTAgQEAgKyAoTlNT
ZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGUKICNl
bmRpZgogICAgICAgICBdOwogCi0gICAgICAgIGFsbFdlYnNpdGVEYXRhVHlwZXMgPSBbW1tzZWxm
IGFsbFdlYnNpdGVEYXRhVHlwZXNdIHNldEJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpwcml2YXRl
VHlwZXNdIHJldGFpbl07CisgICAgICAgIGFsbFdlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgPSBbW3Nl
bGYgYWxsV2Vic2l0ZURhdGFUeXBlc10gc2V0QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OnByaXZh
dGVUeXBlc107CiAgICAgfSk7CiAKLSAgICByZXR1cm4gYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAg
ICByZXR1cm4gYWxsV2Vic2l0ZURhdGFUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQk9PTClf
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CmluZGV4IDA4Y2I4ZWQwNjM2YmY0MDY3ZDc0ZDViMzlkMTlkNWU4ZjY0NGJmM2QuLmZjYTk2YzJm
OWNlMmMyOTZlZmY0OTZlZWYxZWJlYmFhZjU5ZDYxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KQEAgLTMzMiw3ICszMzIsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IHRlbXBVUkw7CiAgICAgCiAgICAgZGlzcGF0Y2hf
b25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CkBAIC0zNDYs
MTAgKzM0NiwxMCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6UwogICAgICAgICAgICAgdXJsID0g
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVj
dG9yeTpZRVNdOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB0ZW1wVVJMID0gW1t1cmwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJl
dGFpbl07CisgICAgICAgIHRlbXBVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICB9KTsKICAgICAKLSAgICBO
U1VSTCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9y
eU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqdXJsID0gW3RlbXBVUkwuZ2V0KCkg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVT
XTsKIAogICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3RvcnkgPT0gU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5OjpZZXMKICAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKQEAgLTM2MSw3ICszNjEsNyBAQCBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFdURjo6UwogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCiB7CiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICpj
YWNoZVVSTDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJMPj4gY2Fj
aGVVUkw7CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIE5TVVJM
ICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpO
U0NhY2hlc0RpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9y
VVJMOm51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOwpAQCAtMzc1LDEwICszNzUsMTAg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjoKICAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgICAgIGNh
Y2hlVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQi
IGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7CiAKLSAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllF
U107CisgICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIGlmIChzaG91bGRD
cmVhdGVEaXJlY3RvcnkgPT0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpZZXMKICAgICAgICAgJiYg
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJs
IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVs
bHB0cl0pCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAi
LCB1cmwpOwpAQCAtMzg5LDcgKzM4OSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6CiBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKICAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNp
dGVEYXRhVVJMOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiB3
ZWJzaXRlRGF0YVVSTDsKIAogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAg
ICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGly
ZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJv
cHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOwpAQCAtNDA1LDEw
ICs0MDUsMTAgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QKICAgICAgICAgICAgIHVybCA9IFt1
cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rv
cnk6WUVTXTsKICAgICAgICAgfQogCi0gICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10g
cmV0YWluXTsKKyAgICAgICAgd2Vic2l0ZURhdGFVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0p
OwogCi0gICAgTlNVUkwgKnVybCA9IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp1cmwg
PSBbd2Vic2l0ZURhdGFVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVj
dG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA2NjE2MmUzZmEyOTNlYjc0ZWJlZjNjMGQ1MGFjMTdlYWNmYmRjODAyLi4yMjBiNzY5
YzAxYjRhNjNlYzk3NGIzOTlhNTE4NmMxOGE0MzQ4NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQ1
MDMsMTEgKzQ1MDMsMTEgQEAgLSAoTlNBcnJheSAqKWtleUNvbW1hbmRzCiAgICAgaWYgKCFfcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIHN0YXRpYyBOU0FycmF5KiBlZGl0YWJsZUtleUNvbW1hbmRzID0gW0BbCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gZWRpdGFibGVLZXlDb21tYW5k
cyA9IEBbCiAgICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBt
b2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfbmV4dEFjY2Vzc29yeVRhYjopXSwKICAg
ICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxh
Z3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3IoX3ByZXZpb3VzQWNjZXNzb3J5
VGFiOildCi0gICAgXSByZXRhaW5dOwotICAgIHJldHVybiBlZGl0YWJsZUtleUNvbW1hbmRzOwor
ICAgIF07CisgICAgcmV0dXJuIGVkaXRhYmxlS2V5Q29tbWFuZHMuZ2V0KCkuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggYTJjOGJiMWE0NzE3OGNjMGMzNDdhZGM0N2JkMDY0OThkYjU3YzFjNy4u
MmE1YjE4MzI2NzY3YzJhN2Q0OWU1OWViZTNlOGEyYzEwYjBkM2VlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTMsMjUg
KzI1MywyMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAoTlNB
cnJheSAqKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcwogQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmF0dHJpYnV0ZU5hbWVzID0g
MDsKLQotICAgIGlmICghYXR0cmlidXRlTmFtZXMpIHsKLSAgICAgICAgYXR0cmlidXRlTmFtZXMg
PSBAWwotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2li
aWxpdHlTaXplQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0
dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAot
ICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAg
IC8vIFBERkxheWVyQ29udHJvbGxlciBoYXMgaXRzIG93biBhY2Nlc3NpYmlsaXR5Q2hpbGRyZW4u
Ci0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZQotICAgICAgICAg
ICAgXTsKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWVzIHJldGFpbl07Ci0gICAgfQotCi0gICAgcmV0
dXJuIGF0dHJpYnV0ZU5hbWVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNBcnJheT4+IGF0dHJpYnV0ZU5hbWVzID0gQFsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFy
ZW50QXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCisg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAorICAgICAg
ICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRB
dHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAorICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlLAorICAgICAgICAvLyBQREZMYXll
ckNvbnRyb2xsZXIgaGFzIGl0cyBvd24gYWNjZXNzaWJpbGl0eUNoaWxkcmVuLgorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZQorICAgIF07CisKKyAgICByZXR1cm4gYXR0
cmlidXRlTmFtZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
Yk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4
dHJhcy5tbQppbmRleCA4NzUzNjI0MmI3OTAzNGViOTM0Y2I1ZjcyYTg5NzM2ZjcxMWE5NTBmLi4x
ZWMwNGVhYWY1YjQ2NDc2ZDg5OWRmZTg1NWVlZjI2Y2MyOTM1ODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTI3NiwxNyArMjc2LDE2
IEBAIC0oTlNSYW5nZSlfd2Via2l0X3JhbmdlT2ZVUkxTY2hlbWUKICAgICBOU1JhbmdlIGNvbG9u
ID0gW3NlbGYgcmFuZ2VPZlN0cmluZzpAIjoiXTsKICAgICBpZiAoY29sb24ubG9jYXRpb24gIT0g
TlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKICAgICAgICAgTlNSYW5nZSBzY2hl
bWUgPSB7MCwgY29sb24ubG9jYXRpb259OwotICAgICAgICBzdGF0aWMgTlNDaGFyYWN0ZXJTZXQg
KkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBuaWw7Ci0gICAgICAgIGlmICghSW52ZXJzZVNj
aGVtZUNoYXJhY3RlclNldCkgeworICAgICAgICBzdGF0aWMgYXV0byBpbnZlcnNlU2NoZW1lQ2hh
cmFjdGVyU2V0ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgICAgIC8qCiAgICAg
ICAgICAgICAgVGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAy
eDEuMkdIei4gIElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCiAgICAgICAgICAgICAgZXZlcnl0aGlu
ZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBt
ZSB3b25kZXIgaWYgd2UKICAgICAgICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hh
cmFjdGVyIHNldCBoZXJlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIE5TU3RyaW5nICph
Y2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLi0iOwotICAgICAgICAgICAgSW52ZXJzZVNj
aGVtZUNoYXJhY3RlclNldCA9IFtbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFy
YWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVkU2V0XSByZXRhaW5d
OwotICAgICAgICB9Ci0gICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc2VsZiByYW5nZU9mQ2hh
cmFjdGVyRnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0IG9wdGlvbnM6MCByYW5nZTpz
Y2hlbWVdOworICAgICAgICAgICAgcmV0dXJuIHJldGFpblB0cihbW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGlu
dmVydGVkU2V0XSk7CisgICAgICAgIH0oKSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBb
c2VsZiByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDppbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0Lmdl
dCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOwogICAgICAgICBpZiAoaWxsZWdhbHMu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBzY2hlbWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVu
Y2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRv
ci5tbQppbmRleCA5OGVjYWE5NDM1NjQ2ZjYwZWFmMTVjMzQ1MTU2OGM5MjA3MDYzZTEyLi4zZWVj
ODBhYzI5NzNkMmI1ZjZmZjYzZDM1ZTM2ZDBlYTI2YjFiY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tbQpAQCAtNTgsMTMgKzU4
LDEzIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiArIChOU1N0cmluZyAqKWNlbnRlclRydW5jYXRl
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB0b1dpZHRoOihmbG9hdCltYXhXaWR0aAogewotICAg
IHN0YXRpYyBOU0ZvbnQgKm1lbnVGb250ID0gW1tOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF0gcmV0
YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRm9udD4+IG1lbnVG
b250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKIAotICAgIEFTU0VSVChtZW51Rm9udCk7
Ci0gICAgaWYgKCFtZW51Rm9udCkKKyAgICBBU1NFUlQobWVudUZvbnQuZ2V0KCkpOworICAgIGlm
ICghbWVudUZvbnQuZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gV2Vi
Q29yZTo6U3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIG1heFdpZHRoLCBm
b250RnJvbU5TRm9udChtZW51Rm9udCkpOworICAgIHJldHVybiBXZWJDb3JlOjpTdHJpbmdUcnVu
Y2F0b3I6OmNlbnRlclRydW5jYXRlKHN0cmluZywgbWF4V2lkdGgsIGZvbnRGcm9tTlNGb250KG1l
bnVGb250LmdldCgpLmdldCgpKSk7CiB9CiAKICsgKE5TU3RyaW5nICopY2VudGVyVHJ1bmNhdGVT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHRvV2lkdGg6KGZsb2F0KW1heFdpZHRoIHdpdGhGb250
OihOU0ZvbnQgKilmb250CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJTdG9yYWdlTWFuYWdlci5tbQppbmRleCBiYmZmZGM0NTQ4MDcwOGJlOTkyMTdkOGQwNDAy
MGE5YThiYzI3MzY1Li4zMzk0YWE0ZTFlZmQyMGRhODdlNDdjNTFiYjJjZGRiYzIxZDUyNGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW0KQEAgLTk3LDE5ICs5NywxOSBAQCAtICh2b2lkKXN5bmNGaWxlU3lzdGVtQW5kVHJh
Y2tlckRhdGFiYXNlCiAKICsgKE5TU3RyaW5nICopX3N0b3JhZ2VEaXJlY3RvcnlQYXRoCiB7Ci0g
ICAgc3RhdGljIE5TU3RyaW5nICpzTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gc0xvY2FsU3RvcmFnZVBhdGg7CiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBmbGFnOwogICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CiAg
ICAgICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c107Ci0gICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2RlZmF1bHRzIG9i
amVjdEZvcktleTpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgICAgICBpZiAo
IXNMb2NhbFN0b3JhZ2VQYXRoIHx8ICFbc0xvY2FsU3RvcmFnZVBhdGggaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGxvY2FsU3Rv
cmFnZVBhdGggPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZh
dWx0c0tleV07CisgICAgICAgIGlmICghbG9jYWxTdG9yYWdlUGF0aCB8fCAhW2xvY2FsU3RvcmFn
ZVBhdGggaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICAgICAgTlNB
cnJheSAqcGF0aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJh
cnlEaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7CiAgICAgICAgICAgICBOU1N0cmlu
ZyAqbGlicmFyeURpcmVjdG9yeSA9IFtwYXRocyBvYmplY3RBdEluZGV4OjBdOwotICAgICAgICAg
ICAgc0xvY2FsU3RvcmFnZVBhdGggPSBbbGlicmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJXZWJLaXQvTG9jYWxTdG9yYWdlIl07CisgICAgICAgICAgICBsb2Nh
bFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOwogICAgICAgICB9Ci0gICAgICAgIHNMb2Nh
bFN0b3JhZ2VQYXRoID0gW1tzTG9jYWxTdG9yYWdlUGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQ
YXRoXSByZXRhaW5dOworICAgICAgICBzTG9jYWxTdG9yYWdlUGF0aC5nZXQoKSA9IFtsb2NhbFN0
b3JhZ2VQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogICAgIH0pOwotICAgIHJldHVy
biBzTG9jYWxTdG9yYWdlUGF0aDsKKyAgICByZXR1cm4gc0xvY2FsU3RvcmFnZVBhdGguZ2V0KCku
Z2V0KCk7CiB9CiAKICsgKHZvaWQpc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsOihkb3Vi
bGUpaW50ZXJ2YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA5MWFmYzVkNzQ0OTE0MzRmNGUxMjNm
MThhNTA0MTczODliMzRiM2I5Li4wZGZhZTg0OWYwZDc3NDRlODdmZDI4OWRkNjYxYTUwZjE0MGM0
Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00NTksMTAgKzQ1OSwxMCBAQCBzdGF0aWMgTlNE
aWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogCiB2
b2lkIF9XZWJDcmVhdGVGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KQogewotICAgIHN0YXRp
YyBOU0RpY3Rpb25hcnkgKmRvY3VtZW50QXR0cmlidXRlcyA9IFthdHRyaWJ1dGVzRm9yQXR0cmli
dXRlZFN0cmluZ0NvbnZlcnNpb24oKSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gZG9jdW1lbnRBdHRyaWJ1dGVzID0gYXR0cmlidXRl
c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCk7CiAgICAgTlNBcnJheSAqc3VicmVzb3Vy
Y2VzOwogICAgIERPTURvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50ID0gW3N0cmluZyBfZG9jdW1l
bnRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKQotICAgICAgICBkb2N1
bWVudDpraXQoJmRvY3VtZW50KSBkb2N1bWVudEF0dHJpYnV0ZXM6ZG9jdW1lbnRBdHRyaWJ1dGVz
IHN1YnJlc291cmNlczomc3VicmVzb3VyY2VzXTsKKyAgICAgICAgZG9jdW1lbnQ6a2l0KCZkb2N1
bWVudCkgZG9jdW1lbnRBdHRyaWJ1dGVzOmRvY3VtZW50QXR0cmlidXRlcy5nZXQoKS5nZXQoKSBz
dWJyZXNvdXJjZXM6JnN1YnJlc291cmNlc107CiAgICAgcmVzdWx0LmZyYWdtZW50ID0gY29yZShm
cmFnbWVudCk7CiAgICAgZm9yIChXZWJSZXNvdXJjZSogcmVzb3VyY2UgaW4gc3VicmVzb3VyY2Vz
KQogICAgICAgICByZXN1bHQucmVzb3VyY2VzLmFwcGVuZChbcmVzb3VyY2UgX2NvcmVSZXNvdXJj
ZV0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA0N2EzZDUzMDVlNzYxZjZjNmE0MWJjYWRj
ZDYzYTVjMzIyNjE4MTI5Li44ZTZlZWE2OGFmNTM3ZTcxOTEyZjUyMjA2ZDlkM2ZiMjBjZDQ4Yjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtOTcsMzQgKzk3LDMzIEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNBcnJheT4gbmV3QXJyYXlXaXRoU3RyaW5ncyhjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zCiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMg
TlNBcnJheSAqc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzID0gW1tbW3NlbGYgc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXNdIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OgotICAgICAgICBb
c2VsZiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc11dIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFy
cmF5OgotICAgICAgICBbc2VsZiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc11dIHJldGFpbl07Ci0g
ICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMgPSBbW1tz
ZWxmIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21B
cnJheToKKyAgICAgICAgW3NlbGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdXSBhcnJheUJ5QWRk
aW5nT2JqZWN0c0Zyb21BcnJheTpbc2VsZiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc11dOworICAg
IHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5T
QXJyYXkgKilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpz
dGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5
cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOwotICAgIHJl
dHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9
IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1F
VHlwZXMoKSk7CisgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzLmdldCgp
LmdldCgpOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMKIHsK
LSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBu
ZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VN
SU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4g
c3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1J
TUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpOworICAgIHJldHVy
biBzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAo
TlNBcnJheSAqKXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkg
KnN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1F
VHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7Ci0gICAg
cmV0dXJuIHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVz
ID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcygpKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0
KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMKIHsK
LSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3
QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMoKSkubGVha1JlZigpOwotICAgIHJldHVybiBzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGlj
VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJl
Z2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKSk7CisgICAgcmV0dXJuIHN0YXRpY1Vu
c3VwcG9ydGVkVGV4dE1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaWQpaW5pdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5tbQppbmRleCBjZjlkYmNhYjE4NGM1Yzg1OTUzZDc1YmZlMGNk
NWE0ZjliZmM0NmIyLi44OTBlMmIxNWE0NThiY2U5ZDk1ZjVlNjU3MTFlNDE1YTIwMWEzZGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5tbQpAQCAtNTIsMTIgKzUyLDEyIEBAIGJvb2wgaXNG
ZWF0dXJlRmxhZ0VuYWJsZWQoY29uc3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKICAgICBpZiAoIWlz
V2ViS2l0QnVuZGxlRnJvbVN0YWdlZEZyYW1ld29yaykKICAgICAgICAgcmV0dXJuIF9vc19mZWF0
dXJlX2VuYWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNoYXIqKWZlYXR1cmVOYW1lLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgc3RhdGljIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IFtbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGlicmFyeS9BcHBsZS9T
eXN0ZW0vTGlicmFyeS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdCJdIHJldGFpbl07
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBkaWN0
aW9uYXJ5ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xp
YnJhcnkvQXBwbGUvU3lzdGVtL0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxp
c3QiXTsKIAotICAgIGlmICghW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0g
b2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdKQorICAgIGlmICghW1tkaWN0aW9uYXJ5LmdldCgpIG9i
amVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdKQogICAgICAg
ICByZXR1cm4gX29zX2ZlYXR1cmVfZW5hYmxlZF9pbXBsKCJXZWJLaXQiLCAoY29uc3QgY2hhciop
ZmVhdHVyZU5hbWUuY2hhcmFjdGVyczgoKSk7CiAKLSAgICByZXR1cm4gW1tbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dICYmIFtbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZl
YXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gYm9vbFZhbHVlXTsKKyAgICByZXR1
cm4gW1tbZGljdGlvbmFyeS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZv
cktleTpAIkVuYWJsZWQiXSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dICYmIFtbW2Rp
Y3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJF
bmFibGVkIl0gYm9vbFZhbHVlXTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTE3YTA1ZDg5MTA3MjlmNDJkYWUwNmY1OWZiNTFh
MzZiNzgxZWNiYS4uNjk2MDZiZjZlZTM5ODliMGIxZDlhMjM2ZmM2NjhhMGU5NWM2ZWZkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQzOCwxMSAr
MTQzOCwxMSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5T
U3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogICAgIFdlYlByZWZlcmVuY2VzICpz
dGFuZGFyZFByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNd
OwogICAgIFtzdGFuZGFyZFByZWZlcmVuY2VzIHdpbGxBZGRUb1dlYlZpZXddOwogCi0gICAgX3By
aXZhdGUtPnByZWZlcmVuY2VzID0gW3N0YW5kYXJkUHJlZmVyZW5jZXMgcmV0YWluXTsKKyAgICBf
cHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBzdGFuZGFyZFByZWZlcmVuY2VzOwogICAgIF9wcml2YXRl
LT5tYWluRnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dy
b3VuZCA9IFlFUzsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBfcHJpdmF0ZS0+YmFj
a2dyb3VuZENvbG9yID0gYWRvcHROUyhbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBh
bHBoYToxXSByZXRhaW5dKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW05TQ29s
b3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYToxXTsKICNlbHNlCiAgICAgX3ByaXZhdGUt
PmJhY2tncm91bmRDb2xvciA9IFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6
OndoaXRlKTsKICNlbmRpZgpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgLSAodm9pZClfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6
KE5TU3QKICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFt
ZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAg
IF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBb
X3ByaXZhdGUtPnByZWZlcmVuY2VzIF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKICAgICBf
cHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKICAgICBhdXRvIHN0b3JhZ2VQcm92
aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKQEAgLTE3ODAsNyAr
MTc4MCw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5n
ICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgICAgIHByZWZlcmVuY2VzID0g
W1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogICAgIFtwcmVmZXJlbmNlcyB3
aWxsQWRkVG9XZWJWaWV3XTsKIAotICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IFtwcmVmZXJl
bmNlcyByZXRhaW5dOworICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IHByZWZlcmVuY2VzOwog
ICAgIF9wcml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAgICAgX3ByaXZhdGUt
PmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKICAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0g
V2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwpAQCAtMTc4OSw3
ICsxNzg5LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJp
bmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBbZnJhbWVWaWV3IHNldEF1
dG9yZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZV07
CiAgICAgW3NlbGYgYWRkU3VidmlldzpmcmFtZVZpZXcuZ2V0KCldOwogCi0gICAgX3ByaXZhdGUt
Pmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5w
cmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBfcHJpdmF0ZS0+Z3Jv
dXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgW19wcml2YXRlLT5wcmVm
ZXJlbmNlcyBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZhdGUtPmdyb3Vw
LT5hZGRXZWJWaWV3KHNlbGYpOwogCiAgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3Rv
cmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CkBAIC0yNTA2LDcgKzI1MDYsNyBAQCAtICh2
b2lkKV9jbG9zZQogCiAgICAgW1dlYlByZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJZGVu
dGlmaWVyOltzZWxmIHByZWZlcmVuY2VzSWRlbnRpZmllcl1dOwogCi0gICAgYXV0byBwcmVmZXJl
bmNlcyA9IGFkb3B0TlMoc3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+cHJlZmVyZW5jZXMsIG5pbCkp
OworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBzdGQ6OmV4Y2hhbmdlKF9wcml2YXRlLT5wcmVmZXJl
bmNlcywgbmlsKTsKICAgICBbcHJlZmVyZW5jZXMgZGlkUmVtb3ZlRnJvbVdlYlZpZXddOwogCiAg
ICAgW3NlbGYgX2Nsb3NlUGx1Z2luRGF0YWJhc2VzXTsKQEAgLTMzNzUsOCArMzM3NSw4IEBAIC0g
KHZvaWQpX2NoZWNrRGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbgogCiAgICAgX3ByaXZhdGUtPl9k
aWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uID0gWUVTOwogCi0gICAgaWYgKF9wcml2YXRlLT5wcmVm
ZXJlbmNlcy5hdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwgJiYgX3ByaXZhdGUtPnByZWZl
cmVuY2VzLmNhY2hlTW9kZWwgPCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKQotICAgICAg
ICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVu
dEJyb3dzZXI7CisgICAgaWYgKFtfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgYXV0b21hdGljYWxseURl
dGVjdHNDYWNoZU1vZGVsXSAmJiBbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGNhY2hlTW9kZWxdIDwg
V2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcikKKyAgICAgICAgW19wcml2YXRlLT5wcmVmZXJl
bmNlcyBzZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXJdOwogfQogCiAt
ICh2b2lkKV9kaWRDb21taXRMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKQEAgLTU3ODMs
MTIgKzU3ODMsMTIgQEAgLSAodm9pZClzZXRQcmVmZXJlbmNlczooV2ViUHJlZmVyZW5jZXMgKilw
cmVmcwogCiAgICAgW3ByZWZzIHdpbGxBZGRUb1dlYlZpZXddOwogCi0gICAgYXV0byBvbGRQcmVm
cyA9IGFkb3B0TlMoX3ByaXZhdGUtPnByZWZlcmVuY2VzKTsKKyAgICBhdXRvIG9sZFByZWZzID0g
c3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+cHJlZmVyZW5jZXMsIG51bGxwdHIpOwogCiAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5h
bWU6V2ViUHJlZmVyZW5jZXNDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gb2JqZWN0OltzZWxm
IHByZWZlcmVuY2VzXV07CiAgICAgW1dlYlByZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJ
ZGVudGlmaWVyOltvbGRQcmVmcyBpZGVudGlmaWVyXV07CiAKLSAgICBfcHJpdmF0ZS0+cHJlZmVy
ZW5jZXMgPSBbcHJlZnMgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBwcmVm
czsKIAogICAgIC8vIEFmdGVyIHJlZ2lzdGVyaW5nIGZvciB0aGUgbm90aWZpY2F0aW9uLCBwb3N0
IGl0IHNvIHRoZSBXZWJDb3JlIHNldHRpbmdzIHVwZGF0ZS4KICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246KQpAQCAtNTgwMSw3ICs1ODAxLDcgQEAg
LSAodm9pZClzZXRQcmVmZXJlbmNlczooV2ViUHJlZmVyZW5jZXMgKilwcmVmcwogCiAtIChXZWJQ
cmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wcmVmZXJl
bmNlczsKKyAgICByZXR1cm4gX3ByaXZhdGUtPnByZWZlcmVuY2VzLmdldCgpOwogfQogCiAtICh2
b2lkKXNldFByZWZlcmVuY2VzSWRlbnRpZmllcjooTlNTdHJpbmcgKilhbklkZW50aWZpZXIKQEAg
LTY1NTksNyArNjU1OSw3IEBAIC0gKHZvaWQpc2V0R3JvdXBOYW1lOihOU1N0cmluZyAqKWdyb3Vw
TmFtZQogICAgIGlmIChfcHJpdmF0ZS0+Z3JvdXApCiAgICAgICAgIF9wcml2YXRlLT5ncm91cC0+
cmVtb3ZlV2ViVmlldyhzZWxmKTsKIAotICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCk7CisgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpn
ZXRPckNyZWF0ZShncm91cE5hbWUsIFtfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmlldyhzZWxmKTsK
IAogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggODNjNmQ3ODA1MDJlZjJiMThiNTUzYThlODlkNGMx
ZWU1MDhhZTg4Ny4uMTVjMzkxNjhlMDEyZGI1NGJiNmU1MDk0ZWU2MTNiMDBmNjcxNTgzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMjI2
LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50OwogICAgIEJP
T0wgdXNlckFnZW50T3ZlcnJpZGRlbjsKICAgICAKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVy
ZW5jZXM7CisgICAgUmV0YWluUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TVVJMICp1c2VyU3R5bGVTaGVldExvY2F0aW9uOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggY2JjZTNiODg5ZThhMmM3MzNjNDk0MmE1Y2Y4ZWZmOTlmOTllNWY5MS4uMmMxMTY4NWUxODc3
ZjMwOTk1NDM2MjNiNWYyNjdhNzQwZmEzMzI4MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAyLTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI0MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0
YWluXSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChhbGxvd2VkRm9udEZhbWls
eVNldCk6CisgICAgICAgICgtW0RSVE1vY2tTY3JvbGxlciBkcmF3S25vYl0pOgorICAgICAgICAo
LVtEUlRNb2NrU2Nyb2xsZXIgZHJhd1JlY3Q6XSk6CisgICAgICAgIChwcmVwYXJlQ29uc2lzdGVu
dFRlc3RpbmdFbnZpcm9ubWVudCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9RdWlja0xvb2subW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcg
c2VsZWN0aW9uUmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZV0pOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjph
bGxvd2VkRm9udEZhbWlseVNldCk6CisgICAgICAgIChXVFI6OnN5c3RlbUhpZGRlbkZvbnRGYW1p
bHlTZXQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0
aEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW06Cisg
ICAgICAgIChkaXNhYmxlQXBwTmFwSW5VSVByb2Nlc3MpOgorCiAyMDIxLTAyLTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBpbnRl
cm5hbCBDb250ZW50RmlsdGVyaW5nIHRlc3RzIG5vdCB0aW1lIG91dCBhZnRlciByMjcyMjkzCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2YzYmQ1MTlm
ZTg4MmU4NGZmZjAxY2E0ZjVmZDU2Yjg3ZWJjZmJlYi4uMzZlYzJjNTI2MzgzYzBlMmFjNjE1YjJj
OTcxMjViN2NjMTNiOGI0OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNv
cmVOb2RlTGVha3MoY29uc3Qgc3RkOjpzdHJpbmcmIHVybFN0cmluZykKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIHN0YXRpYyBOU1NldCAqYWxsb3dlZEZvbnRGYW1pbHlTZXQoKQogewotICAg
IHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6Cisg
ICAgc3RhdGljIFJldGFpblB0cjxOU1NldD4gZm9udEZhbWlseVNldCA9IFtOU1NldCBzZXRXaXRo
T2JqZWN0czoKICAgICAgICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBCYXlhbiIsCiAgICAgICAg
IEAiQW1lcmljYW4gVHlwZXdyaXRlciIsCkBAIC00MTAsOSArNDEwLDkgQEAgc3RhdGljIE5TU2V0
ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAgICAgICAgIEAiV2luZ2RpbmdzIiwKICAgICAgICAg
QCJaYXBmIERpbmdiYXRzIiwKICAgICAgICAgQCJaYXBmaW5vIiwKLSAgICAgICAgbmlsXSByZXRh
aW5dOworICAgICAgICBuaWxdOwogCi0gICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQ7CisgICAgcmV0
dXJuIGZvbnRGYW1pbHlTZXQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0FycmF5ICpmb250QWxsb3dM
aXN0KCkKQEAgLTY0Myw3ICs2NDMsNyBAQCAtICh2b2lkKWRyYXdLbm9iCiAKICAgICBOU1JlY3Qg
a25vYlJlY3QgPSBbc2VsZiByZWN0Rm9yUGFydDpOU1Njcm9sbGVyS25vYl07CiAKLSAgICBzdGF0
aWMgTlNDb2xvciAqa25vYkNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweDgw
IC8gMjU1LjAgZ3JlZW46MHg4MCAvIDI1NS4wIGJsdWU6MHg4MCAvIDI1NS4wIGFscGhhOjFdIHJl
dGFpbl07CisgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBrbm9iQ29sb3IgPSBbTlNDb2xv
ciBjb2xvcldpdGhEZXZpY2VSZWQ6MHg4MCAvIDI1NS4wIGdyZWVuOjB4ODAgLyAyNTUuMCBibHVl
OjB4ODAgLyAyNTUuMCBhbHBoYToxXTsKICAgICBba25vYkNvbG9yIHNldF07CiAKICAgICBOU1Jl
Y3RGaWxsKGtub2JSZWN0KTsKQEAgLTY1MSw4ICs2NTEsOCBAQCAtICh2b2lkKWRyYXdLbm9iCiAK
IC0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3QKIHsKLSAgICBzdGF0aWMgTlNDb2xv
ciAqdHJhY2tDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VSZWQ6MHhDMCAvIDI1NS4w
IGdyZWVuOjB4QzAgLyAyNTUuMCBibHVlOjB4QzAgLyAyNTUuMCBhbHBoYToxXSByZXRhaW5dOwot
ICAgIHN0YXRpYyBOU0NvbG9yICpkaXNhYmxlZFRyYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JX
aXRoRGV2aWNlUmVkOjB4RTAgLyAyNTUuMCBncmVlbjoweEUwIC8gMjU1LjAgYmx1ZToweEUwIC8g
MjU1LjAgYWxwaGE6MV0gcmV0YWluXTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IHRy
YWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VSZWQ6MHhDMCAvIDI1NS4wIGdyZWVu
OjB4QzAgLyAyNTUuMCBibHVlOjB4QzAgLyAyNTUuMCBhbHBoYToxXTsKKyAgICBzdGF0aWMgUmV0
YWluUHRyPE5TQ29sb3I+IGRpc2FibGVkVHJhY2tDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aERl
dmljZVJlZDoweEUwIC8gMjU1LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhFMCAvIDI1NS4w
IGFscGhhOjFdOwogCiAgICAgaWYgKFtzZWxmIGlzRW5hYmxlZF0pCiAgICAgICAgIFt0cmFja0Nv
bG9yIHNldF07CkBAIC0xMTQ3LDcgKzExNDcsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlQ29uc2lz
dGVudFRlc3RpbmdFbnZpcm9ubWVudCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNBY3Rp
dml0eU9wdGlvbnMgb3B0aW9ucyA9IChOU0FjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRs
ZVN5c3RlbVNsZWVwIHwgTlNBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCkgJiB+KE5TQWN0aXZpdHlT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkIHwgTlNBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9u
RGlzYWJsZWQpOwotICAgIHN0YXRpYyBpZCBhc3NlcnRpb24gPSBbW1tOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246QCJEdW1w
UmVuZGVyVHJlZSBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBwcmVzc2lvbiJd
IHJldGFpbl07CisgICAgc3RhdGljIFJldGFpblB0cjxpZD4gYXNzZXJ0aW9uID0gW1tOU1Byb2Nl
c3NJbmZvIHByb2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFz
b246QCJEdW1wUmVuZGVyVHJlZSBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBw
cmVzc2lvbiJdOwogICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRpb24pOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1F1aWNrTG9vay5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVp
Y2tMb29rLm1tCmluZGV4IDFmOTdkMjk0MjIwMmU4MGNkZjMwNjAwZjU2NWJlNGIwZTEzMmVmMDgu
LjQ1NGNhM2FkODVjOTNjYjlmYzliM2YyMDJhODVlMTIzZGMzNzRhODAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC01MSw3
ICs1MSw3IEBAIHN0YXRpYyBib29sIGlzRG9uZTsKIHN0YXRpYyBib29sIGRvd25sb2FkSXNEb25l
OwogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBl
ID0gQCJhcHBsaWNhdGlvbi9wZGYiOwotc3RhdGljIE5TVVJMICogY29uc3QgcGFnZXNEb2N1bWVu
dFVSTCA9IFtbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRo
RXh0ZW5zaW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il0gcmV0YWluXTsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHBhZ2VzRG9jdW1lbnRVUkwgPSBb
TlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9u
OkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKIEBp
bnRlcmZhY2UgUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLCBfV0tEb3dubG9hZERlbGVnYXRlPgogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNf
VU5BVkFJTEFCTEU7CkBAIC0yODAsOCArMjgwLDggQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXQK
IAogVEVTVChRdWlja0xvb2ssIEFsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsK
LSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3Jl
TG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdl
c0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5n
ZXQoKSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Cisg
ICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9G
QUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVs
ZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBk
aWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0yOTAsOCArMjkwLDggQEAgVEVTVChRdWlja0xv
b2ssIEFsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ss
IEFsbG93UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3
TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10p
OwotICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRG
aWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1l
bnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCks
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwog
ICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBF
Q1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVF
KFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zMTksOCArMzE5LDggQEAg
QGVuZAogI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VCZWZvcmVMb2Fk
aW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0Fz
eW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRV
UkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwotICAg
IHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRG
aWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRl
bGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRV
UkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9u
XSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAg
ICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzI5
LDggKzMyOSw4IEBAIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VCZWZvcmVMb2Fk
aW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVyTG9h
ZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tB
c3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50
VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNl
UG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBydW5UZXN0RGVj
aWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1
aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2Vz
RG9jdW1lbnRVUkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlN
RVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwor
ICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9G
QUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVs
ZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBk
aWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zNDAsOCArMzQwLDggQEAgVEVTVChRdWlja0xv
b2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tM
b29rLCBDYW5jZWxSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lDYW5jZWxdKTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxl
Z2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJM
XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25z
ZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbF0pOworICAgIHJ1blRlc3RE
ZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJy
b3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlv
bkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmln
YXRpb25dKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xv
YWRdKTsKQEAgLTM1Miw4ICszNTIsOCBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VC
ZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9u
c2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
UXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9j
dW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVz
cG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsKLSAgICBydW5U
ZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdl
c0RvY3VtZW50VVJMLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01J
TUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7
CisgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNU
X0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVn
YXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBk
aWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZhaWxO
YXZpZ2F0aW9uXSk7CkBAIC0zNjQsOCArMzY0LDggQEAgVEVTVChRdWlja0xvb2ssIENhbmNlbFJl
c3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVz
cG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdl
c0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93
bmxvYWRdKTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25zZVBvbGljeTpXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9y
ZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFn
ZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9h
ZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNv
ZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwog
ICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAt
Mzc5LDggKzM3OSw4IEBAIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9h
ZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VBZnRl
ckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tM
b29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRV
UkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQ
b2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOwotICAgIHJ1blRlc3RE
ZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
UXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9j
dW1lbnRVUkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOwor
ICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9F
UShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0
ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlk
RmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2
aWdhdGlvbl0pOwpAQCAtNDMwLDggKzQzMCw4IEBAIFRFU1QoUXVpY2tMb29rLCBSZXF1ZXN0UGFz
c3dvcmRBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgUmVsb2FkQW5kU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbikKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1
aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3Vt
ZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsK
LSAgICBhdXRvIHdlYlZpZXcgPSBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5n
ZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25zZVBvbGlj
eTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgYXV0byB3ZWJWaWV3ID0g
cnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9GQUxT
RShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdh
dGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRG
aW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC00OTEsNyArNDkxLDcgQEAgVEVTVChRdWlja0xvb2ss
IExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiAKICAgICBXZWJGcmFtZSAqbWFpbkZyYW1lID0gW3dl
YlZpZXcgbWFpbkZyYW1lXTsKIAotICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXV07CisgICAgW21haW5GcmFtZSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwu
Z2V0KCldXTsKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgV2ViVGhyZWFkTG9jaygpOwog
CkBAIC01MDAsNyArNTAwLDcgQEAgVEVTVChRdWlja0xvb2ssIExlZ2FjeVF1aWNrTG9va0NvbnRl
bnQpCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVOYW1lOwogICAgIFJldGFp
blB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlVHlwZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IGV4cGVjdGVkTUlNRVR5cGU7Ci0gICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTCwgZXhwZWN0
ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhwZWN0ZWRN
SU1FVHlwZSwgZXhwZWN0ZWRGaWxlRGF0YSk7CisgICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVS
TC5nZXQoKSwgZXhwZWN0ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxl
VHlwZSwgZXhwZWN0ZWRNSU1FVHlwZSwgZXhwZWN0ZWRGaWxlRGF0YSk7CiAKICAgICBOU0RpY3Rp
b25hcnkgKnF1aWNrTG9va0NvbnRlbnQgPSBtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tMb29r
Q29udGVudDsKICAgICBOU1N0cmluZyAqZmlsZVBhdGggPSBxdWlja0xvb2tDb250ZW50W1dlYlF1
aWNrTG9va0ZpbGVOYW1lS2V5XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQppbmRleCAyZTliMTM0MzllMjg1ZmQyMjdjZmMxOWM1MTczNjUzYzExYjY0N2UyLi42
N2E2NjcyMjIwNWUyZDZmY2M5ZmQ5ZTE5ZjA0MmQ4NTQ3NThmYTgxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC02NjksNyArNjY5LDcgQEAgLSAoUmV0
YWluUHRyPE5TQXJyYXk+KXNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUKICAg
ICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNB
cnJheT4gc2VsZWN0aW9uUmVjdHM7CiAgICAgW3NlbGYgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9u
VXBkYXRlOl4oKSB7Ci0gICAgICAgIHNlbGVjdGlvblJlY3RzID0gYWRvcHROUyhbW3JldGFpbmVk
U2VsZiBfdWlUZXh0U2VsZWN0aW9uUmVjdHNdIHJldGFpbl0pOworICAgICAgICBzZWxlY3Rpb25S
ZWN0cyA9IFtyZXRhaW5lZFNlbGYgX3VpVGV4dFNlbGVjdGlvblJlY3RzXTsKICAgICAgICAgaXNE
b25lID0gdHJ1ZTsKICAgICB9XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9U
ZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCBmZGUyZWE5ZWFiY2ViYTYyNGM1ZjhjM2ZiODk3N2Nk
M2Y3MDA1OTBkLi44YWUxZmI3M2ZiNjI4YmZiZmNkN2QyY2Y4NzRhMTkxNmIyY2ZlMjljIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAt
MzE2LDEyICszMTYsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCgpCiAKIGNv
bnN0IGNoYXIqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygp
CiB7Ci0gICAgc3RhdGljIE5TU3RyaW5nICpwbGF0Zm9ybUxpYnJhcnlQYXRoID0gbmlsOworICAg
IHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHBsYXRmb3JtTGlicmFyeVBhdGg7CiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRv
a2VuLCBeewotICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW1tAIn4vTGlicmFyeS9BcHBs
aWNhdGlvbiBTdXBwb3J0L1dlYktpdFRlc3RSdW5uZXIiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJ
blBhdGhdIHJldGFpbl07CisgICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbQCJ+L0xpYnJh
cnkvQXBwbGljYXRpb24gU3VwcG9ydC9XZWJLaXRUZXN0UnVubmVyIiBzdHJpbmdCeUV4cGFuZGlu
Z1RpbGRlSW5QYXRoXTsKICAgICB9KTsKLSAgICByZXR1cm4gcGxhdGZvcm1MaWJyYXJ5UGF0aC5V
VEY4U3RyaW5nOworICAgIHJldHVybiBbcGxhdGZvcm1MaWJyYXJ5UGF0aCBVVEY4U3RyaW5nXTsK
IH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKGJvb2wpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDg1YTJjNzRkMmQ4
YjcwYWNlYjhlMWYxMjdhZmVlYThkNTJlMjc3YTkuLjhhYzY0YjM3ZTI1MmQ1OGVhYzk0M2RlNGMz
MTg4ZjRhN2E0OWFkZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rl
c3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RD
b250cm9sbGVyTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkK
IAogc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiB7Ci0gICAgc3RhdGljIE5T
U2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAgICBzdGF0aWMg
UmV0YWluUHRyPE5TU2V0PiBmb250RmFtaWx5U2V0ID0gW05TU2V0IHNldFdpdGhPYmplY3RzOgog
ICAgICAgICBAIkFoZW0iLAogICAgICAgICBAIkFsIEJheWFuIiwKICAgICAgICAgQCJBbWVyaWNh
biBUeXBld3JpdGVyIiwKQEAgLTM1NSwxOCArMzU1LDE4IEBAIHN0YXRpYyBOU1NldCAqYWxsb3dl
ZEZvbnRGYW1pbHlTZXQoKQogICAgICAgICBAIldpbmdkaW5ncyIsCiAgICAgICAgIEAiWmFwZiBE
aW5nYmF0cyIsCiAgICAgICAgIEAiWmFwZmlubyIsCi0gICAgICAgIG5pbF0gcmV0YWluXTsKKyAg
ICAgICAgbmlsXTsKIAotICAgIHJldHVybiBmb250RmFtaWx5U2V0OworICAgIHJldHVybiBmb250
RmFtaWx5U2V0LmdldCgpOwogfQogCiBzdGF0aWMgTlNTZXQgKnN5c3RlbUhpZGRlbkZvbnRGYW1p
bHlTZXQoKQogewotICAgIHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0
V2l0aE9iamVjdHM6CisgICAgc3RhdGljIFJldGFpblB0cjxOU1NldD4gZm9udEZhbWlseVNldCA9
IFtOU1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAgICAgQCIuTHVjaWRhR3JhbmRlVUkiLAotICAg
ICAgICBuaWxdIHJldGFpbl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZhbWls
eVNldDsKKyAgICByZXR1cm4gZm9udEZhbWlseVNldC5nZXQoKTsKIH0KIAogc3RhdGljIFdLUmV0
YWluUHRyPFdLQXJyYXlSZWY+IGdlbmVyYXRlRm9udEFsbG93TGlzdCgpCkBAIC00MzAsMTIgKzQz
MCwxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIAogY29uc3QgY2hhciog
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKIHsKLSAgICBz
dGF0aWMgTlNTdHJpbmcgKnBsYXRmb3JtTGlicmFyeVBhdGggPSBuaWw7CisgICAgc3RhdGljIFJl
dGFpblB0cjxOU1N0cmluZz4gcGxhdGZvcm1MaWJyYXJ5UGF0aDsKICAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0g
ICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbW0Aifi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1
cHBvcnQvRHVtcFJlbmRlclRyZWUiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIHJldGFp
bl07CisgICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbQCJ+L0xpYnJhcnkvQXBwbGljYXRp
b24gU3VwcG9ydC9EdW1wUmVuZGVyVHJlZSIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07
CiAgICAgfSk7Ci0gICAgcmV0dXJuIHBsYXRmb3JtTGlicmFyeVBhdGguVVRGOFN0cmluZzsKKyAg
ICByZXR1cm4gW3BsYXRmb3JtTGlicmFyeVBhdGggVVRGOFN0cmluZ107CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0KaW5kZXggNDkxNDMxM2IxODli
Yzg1ZTFiOTc4ZGMzNTY5YjdkYmVmNzU0NjUwMy4uZWRkMTI2OTcyODE5M2M4OWQ4YjI5ZDQyNjcz
MGZlNTE1OGIwMWExMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFp
bi5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tCkBAIC01NCw3ICs1
NCw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGlu
ZygpCiBzdGF0aWMgdm9pZCBkaXNhYmxlQXBwTmFwSW5VSVByb2Nlc3MoKQogewogICAgIE5TQWN0
aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lk
bGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5
U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlv
bkRpc2FibGVkKTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tbTlNQcm9jZXNzSW5mbyBw
cm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiV2Vi
S2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBwcmVzc2lv
biJdIHJldGFpbl07CisgICAgc3RhdGljIFJldGFpblB0cjxpZD4gYXNzZXJ0aW9uID0gW1tOU1By
b2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyBy
ZWFzb246QCJXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNz
IHN1cHByZXNzaW9uIl07CiAgICAgQVNTRVJUX1VOVVNFRChhc3NlcnRpb24sIGFzc2VydGlvbik7
CiB9CiAK
</data>
<flag name="commit-queue"
          id="440472"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421598</attachid>
            <date>2021-02-25 19:20:56 -0800</date>
            <delta_ts>2021-02-25 19:22:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222439-20210225192056.patch</filename>
            <type>text/plain</type>
            <size>76608</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTA0OGRiN2M3ZGE2ODdkN2MxZjk2NDI2OTIxNDJiNDhmZDBiNjViLi5kMzYyYjUzNDhkYzE2MDgz
ZTYwY2FlYzY0MjM0NTZkZWI0M2RmMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKCtbSlNDb250
ZXh0IGN1cnJlbnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGJlZ2luQ2FsbGJh
Y2tXaXRoRGF0YTpjYWxsZWVWYWx1ZTp0aGlzVmFsdWU6YXJndW1lbnRDb3VudDphcmd1bWVudHM6
XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBlbmRDYWxsYmFja1dpdGhEYXRhOl0pOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
Lm1tOgorICAgICAgICAoLVtUaW55RE9NTm9kZSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgor
CiAyMDIxLTAyLTI1ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBMaXN0IG9mIGdyaWQgbm9kZXMgaXMgaW5jb21wbGV0ZSBpbiBM
YXlvdXQgc2lkZWJhciBwYW5lbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNWYxMTIxYTg1ZjJhY2JkOWRhMzAz
MWQ3ODc3Y2Q5ZmRkMzIzYjEuLjlhNTI2NzdkNzc5NDZhMTE2ODAyYjQ1YjMyNTM2ZDQxN2E5YTZh
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4g
V2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORF0pOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc3VsdElzVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChXZWJEZWZhdWx0Rm9udCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlRGVjb2RlckFzc2V0T3B0aW9ucyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjp0ZW1wb3JhcnlE
aXJlY3RvcnlBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlv
bk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGNoZWNrQ2xpZW50
U3RhdHVzXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoU2VuZE1lc3NhZ2UpOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRDYWxsRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKToKKyAgICAgICAgKFJ1
bldlYlRocmVhZCk6CisgICAgICAgIChXZWJUaHJlYWROU1J1bkxvb3ApOgorCiAyMDIxLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWFrZSBpbnRlcm5hbCBDb250ZW50RmlsdGVyaW5nIHRlc3RzIG5vdCB0aW1lIG91dCBhZnRlciBy
MjcyMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGRhNjM2YmRjMzUyNTc3NmE0OGI1MzIxY2RjYjRlZmFhMGE0NGI0
YzkuLjJmYzAwZGFjNmMyMmFmM2Y3MDY3MDQyZTA2ZjJiOGUxMmIwOGM5YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdCBieSB1c2luZyBS
ZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmlzRmVhdHVyZUZsYWdFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
LVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EXSk6CisKIDIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViQ29udGVudCBzYW5kYm94IHRvIGFsbG93IGl0IHRv
IGNhbGwgdGFza19jcmVhdGVfaWRlbnRpdHlfdG9rZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGM0NmYyNDY3ODQ5OWJmZWMxOWZiNTMwNWZlYTY2YTQ3NWY3YzFjZmEuLjFhYzU1
ZWQ1MTBiYTY5OWJhM2FiOWM1N2UyZjkyNGYwNmU4MDQ4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBy
ZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0
IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lXSk6CisgICAg
ICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dlYlN0cmluZ1Ry
dW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5hZ2VyIF9z
dG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKF9XZWJDcmVhdGVGcmFnbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOgorICAgICAgICAoK1tXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKyAgICAgICAgKCtb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tOgorICAgICAgICAoV2Vi
S2l0Ojppc0ZlYXR1cmVGbGFnRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jaGVja0RpZFBlcmZvcm1GaXJzdE5h
dmlnYXRpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQcmVmZXJlbmNlczpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBwcmVmZXJlbmNlc10pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEdyb3Vw
TmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMjEtMDItMjUg
IFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MzQ2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
aW5kZXggZTNhZjBiMTQxZGU4MTdkMjg3NThiMzAzODAxMWMyZDFlY2NhMzYyYi4uMGJhNzk5MWVm
N2IyN2RhZTI1NTFkNjA0ZWZjM2RjN2IzMzJjM2JkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KQEAgLTI0MiwxMyArMjQyLDEzIEBAICsgKE5TQXJyYXkgKiljdXJyZW50
QXJndW1lbnRzCiAgICAgaWYgKCFlbnRyeS0+Y3VycmVudEFyZ3VtZW50cykgewogICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICAgICAg
c2l6ZV90IGNvdW50ID0gZW50cnktPmFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIE5TTXV0YWJsZUFy
cmF5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNvdW50XTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6
W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+YXJndW1lbnRzW2ldIGluQ29udGV4
dDpjb250ZXh0XSBhdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIGVudHJ5LT5jdXJyZW50
QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICBlbnRyeS0+Y3VycmVudEFyZ3VtZW50cyA9
IFdURk1vdmUoYXJndW1lbnRzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZW50cnktPmN1cnJlbnRB
cmd1bWVudHM7CisgICAgcmV0dXJuIGVudHJ5LT5jdXJyZW50QXJndW1lbnRzLmdldCgpOwogfQog
CiAtIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTM3MSw3ICszNzEsNyBA
QCAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tE
YXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUgogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFj
ayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwotICAgICpjYWxsYmFja0RhdGEg
PSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWlu
XSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwg
fTsKKyAgICAqY2FsbGJhY2tEYXRhID0gQ2FsbGJhY2tEYXRhIHsgcHJldlN0YWNrLCBzZWxmLCBz
ZWxmLmV4Y2VwdGlvbiwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJn
dW1lbnRzLCBuaWwgfTsKICAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOwogICAg
IHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQpAQCAtMzc5LDkgKzM3OSw3IEBAIC0gKHZvaWQpYmVn
aW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEgY2FsbGVlVmFs
dWU6KEpTVmFsdWVSCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxiYWNrRGF0YSAq
KWNhbGxiYWNrRGF0YQogewogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
Ci0gICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsK
LSAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07Ci0gICAgW2Nh
bGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKKyAgICBzZWxmLmV4Y2VwdGlv
biA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhjZXB0aW9uLmdldCgpOwogICAgIHRocmVhZC5t
X2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKaW5kZXggOTU4
YzQ3OWY0MWNlODQxM2ZjNjk0YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uNDRjNWY1OGUzYWMxMTA0MDRl
MDM3YjU2OTM4NjFjYzIyZDE4MDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0SW50ZXJuYWwuaApAQCAtMzIsMTIgKzMyLDEyIEBACiBzdHJ1Y3QgQ2FsbGJhY2tE
YXRhIHsKICAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpjb250ZXh0Owot
ICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8SlNWYWx1ZT4g
cHJlc2VydmVkRXhjZXB0aW9uOwogICAgIEpTVmFsdWVSZWYgY2FsbGVlVmFsdWU7CiAgICAgSlNW
YWx1ZVJlZiB0aGlzVmFsdWU7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQ7CiAgICAgY29uc3Qg
SlNWYWx1ZVJlZiAqYXJndW1lbnRzOwotICAgIE5TQXJyYXkgKmN1cnJlbnRBcmd1bWVudHM7Cisg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGN1cnJlbnRBcmd1bWVudHM7CiB9OwogCiBAY2xhc3MgSlNX
cmFwcGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmlu
ZGV4IGI3OWFiMmJjM2FmMWJjNTNlOGM4MThhMjMzZGIwNzM2ODRiZWIxZDEuLmZmNDdkNjE0MjI4
YWNhMDk3YTViNDViNTc5YWZlYzUyOTNiMjcyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9NZW1v
cnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL0Rh
dGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJDIiB2b2lkIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwogZXh0
ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRl
eHRSZWYpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRpbnlE
T01Ob2RlIHsKICAgICBOU011dGFibGVBcnJheSAqbV9jaGlsZHJlbjsKLSAgICBKU1ZpcnR1YWxN
YWNoaW5lICptX3NoYXJlZFZpcnR1YWxNYWNoaW5lOworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxN
YWNoaW5lPiBtX3NoYXJlZFZpcnR1YWxNYWNoaW5lOwogfQogCiAtIChpZClpbml0V2l0aFZpcnR1
YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTIyOCw5ICsy
MjksNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICop
dmlydHVhbE1hY2hpbmUKIAogICAgIG1fY2hpbGRyZW4gPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OjBdOwogICAgIG1fc2hhcmVkVmlydHVhbE1hY2hpbmUgPSB2aXJ0
dWFsTWFjaGluZTsKLSNpZiAhX19oYXNfZmVhdHVyZShvYmpjX2FyYykKLSAgICBbbV9zaGFyZWRW
aXJ0dWFsTWFjaGluZSByZXRhaW5dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODFhODljZTRhMjJiNmRm
ZTM1ZjMyMTQxMjAyNWJlMTZkZmRlMGY1MS4uM2U3NGU4ZjRhMGEwNGNiZDJlMTY3Y2VmZjViNjJh
Njc5NzJhM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTExNTQsMjkgKzExNTQsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQgU2Nyb2xsVG9W
aXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZlcnNpb25zIGRv
IG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMgdGhlbSB0byBz
ZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0
aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlT
Y3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gQFtOU0FjY2Vzc2li
aWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9u
XTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAvLyBUaGUgb3Jk
ZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUgJ2RlZmF1bHQn
IGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQg
YWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVu
dEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5
U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0
YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBhY3Rp
b25FbGVtZW50QWN0aW9ucyA9IEBbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNz
aWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rp
b25dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2FuY2VsLgotICAg
IHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVsZW1lbnRBY3Rp
b25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0aW9uXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IG1lbnVF
bGVtZW50QWN0aW9ucyA9IFthY3Rpb25FbGVtZW50QWN0aW9ucy5nZXQoKSBhcnJheUJ5QWRkaW5n
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl07CiAKICAgICAvLyBTbGlkZXIgZWxl
bWVudHMgYWxsb3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNBcnJheSAqc2xp
ZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Rz
RnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNBcnJheT4+IHNsaWRlckFjdGlvbnMgPSBbZGVmYXVsdEVsZW1lbnRBY3Rpb25z
LmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5j
cmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXTsKIAogICAgIE5T
QXJyYXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzUHJlc3NBY3Rp
b24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRBY3Rpb25zOworICAgICAgICBh
Y3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNNZW51UmVsYXRlZCgpKQotICAgICAgICBhY3Rpb25zID0gbWVudUVs
ZW1lbnRBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gbWVudUVsZW1lbnRBY3Rpb25zLmdldCgp
LmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAg
IGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gc2xpZGVyQWN0aW9u
cy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQo
KSkKICAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUFjdGlvbk5hbWVzXTsKICAgICBlbHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVu
dEFjdGlvbnM7CisgICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlvbnMuZ2V0KCku
Z2V0KCk7CiAKICAgICByZXR1cm4gYWN0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA4NjMzZTE2ZTU0MjQ3OGVlN2I0NTA2OGI0
NWRmNGFiZWFhM2Q0MzdkLi41NDc5NzQ0MTk2YWY5OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBA
IC0yMTUsOCArMjE1LDEzIEBAIHN0YXRpYyBCT09MIHJlc3VsdElzVVJMKEREUmVzdWx0UmVmIHJl
c3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHN0
YXRpYyBOU1NldCAqdXJsVHlwZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOiAoTlNTdHJpbmcg
KilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJIdHRwVVJMS2V5KCksIChOU1N0cmluZyAq
KWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlcldlYlVSTEtleSgpLCAoTlNTdHJpbmcgKiln
ZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJNYWlsVVJMS2V5KCksIChOU1N0cmluZyAqKWdl
dF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckdlbmVyaWNVUkxLZXkoKSwgKE5TU3RyaW5nICop
Z2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyRW1haWxLZXkoKSwgbmlsXSByZXRhaW5dOwot
ICAgIHJldHVybiBbdXJsVHlwZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRUeXBlKHJlc3VsdCldOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiB1cmxUeXBlcyA9IFtOU1NldCBzZXRXaXRo
T2JqZWN0czoKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmlu
ZGVySHR0cFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0Nv
cmVfRERCaW5kZXJXZWJVUkxLZXkoKSwKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRl
Y3RvcnNDb3JlX0REQmluZGVyTWFpbFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRf
RGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJHZW5lcmljVVJMS2V5KCksCisgICAgICAgIChOU1N0
cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckVtYWlsS2V5KCksIG5pbF07Cisg
ICAgcmV0dXJuIFt1cmxUeXBlcy5nZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07CiB9CiAKIHN0
YXRpYyBOU1N0cmluZyAqY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KEREUmVzdWx0UmVmIGN1
cnJlbnRSZXN1bHQsIE5TU3RyaW5nICpyZXN1bHRJZGVudGlmaWVyLCBOU0RhdGUgKnJlZmVyZW5j
ZURhdGUsIE5TVGltZVpvbmUgKnJlZmVyZW5jZVRpbWVab25lLCBPcHRpb25TZXQ8RGF0YURldGVj
dG9yVHlwZT4gZGV0ZWN0aW9uVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDNiZDJkNmViYTNiMzVmZTZkYzM5NTMyMjZmYmQ4ZDU2
MGJlY2ZlOS4uMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNDE1LDE2
ICs0MTUsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIC8v
IFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUgTlNGb250QXR0cmlidXRlTmFtZSBk
b2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiB7Ci0gICAgc3Rh
dGljIE5TRm9udCAqZGVmYXVsdEZvbnQgPSBuaWw7Ci0gICAgaWYgKGRlZmF1bHRGb250KQotICAg
ICAgICByZXR1cm4gZGVmYXVsdEZvbnQ7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZv
bnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07Ci0gICAgaWYgKCFmb250KQotICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLQotICAgIGRlZmF1bHRGb250
ID0gW2ZvbnQgcmV0YWluXTsKLSAgICByZXR1cm4gZGVmYXVsdEZvbnQ7CisgICAgc3RhdGljIGF1
dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBOU0ZvbnQg
KmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07CisgICAg
ICAgIGlmICghZm9udCkKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNp
emU6MTJdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZvbnQpOworICAgIH0oKSk7CisgICAg
cmV0dXJuIGRlZmF1bHRGb250LmdldCgpLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU3ZjIxYzU4ODg5YjY3
NjM4Y2RjMjhhNDExNTQyZmFjZmU1MjAyNjMuLmYzNjljZjBjMjlmNjY5ZGNmMmZhZGY4YTVkY2E5
YzI4MTJiZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjI1LDEzICsyMjUsMTEgQEAgc3RhdGljIE5TVVJMICpjdXN0b21TY2hlbWVV
UkwoKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICppbWFnZURlY29kZXJBc3NldE9wdGlvbnMoKQog
ewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbXSB7Ci0gICAgICAgIHJldHVy
biBbQHsKLSAgICAgICAgICAgIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXk6IEAo
QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkQWxsKSwKLSAgICAgICAgICAgIEFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXk6IEBZRVMsCi0gICAgICAgIH0gcmV0YWluXTsK
LSAgICB9KCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBvcHRpb25zID0gQHsKKyAgICAgICAgQVZVUkxBc3Nl
dFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25G
b3JiaWRBbGwpLAorICAgICAgICBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5OiBA
WUVTLAorICAgIH07CisgICAgcmV0dXJuIG9wdGlvbnMuZ2V0KCkuZ2V0KCk7CiB9CiAKIGNsYXNz
IEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUgOiBwdWJsaWMgTWVkaWFTYW1wbGVBVkZPYmpDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpp
bmRleCBkOTMxZDZjYWVhZDAwZjdhYzdiMDg4YjM4OWEwNGE4YjUzMTMwZjJmLi5kNDQ5YzQ4MjQ5
NTg1MTY0MGRhOTNkNWNiOWVhYjY2Mzc2MTg4MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBO
U0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAoY29sb3IuaXNJbmxp
bmUoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgY29sb3IuYXNJbmxp
bmUoKSB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAq
Y2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAg
YWxwaGE6MF0gcmV0YWluXTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOworICAgICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gY2xlYXJDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYTowXTsK
KyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52YWx1ZTogewot
ICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JX
aXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0gICAgICAgICAg
ICByZXR1cm4gYmxhY2tDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVk
OjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV07CisgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3
aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYToxXSByZXRhaW5dOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7CisgICAgICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ29sb3I+PiB3aGl0ZUNvbG9y
ID0gW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdOwor
ICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmlu
ZGV4IDJlMjQ3YTZlNTNkZDA1YWIxOTBlZDk2ZGRhMmExYWU2ZGFkYzk4YWYuLmE1ZDJmNzM2YzJl
ZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQpAQCAtNDEsOCArNDEsOCBAQCBjb25zdCBjaGFyKiBRTFByZXZpZXdQ
cm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKIAogTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpzZXQgPSBbUEFMOjpzb2Z0TGlu
a19RdWlja0xvb2tfUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzKCkgcmV0YWluXTsKLSAg
ICByZXR1cm4gc2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+
PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1F
VHlwZXMoKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgTG9jayBx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jazsKQEAgLTEwMiwyMSArMTAyLDIxIEBAIGJv
b2wgaXNRdWlja0xvb2tQcmV2aWV3VVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcygpCiB7Ci0gICAgc3RhdGljIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IFtAeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5Pj4gYXR0cmlidXRlcyA9IEB7CiAgICAgICAgIE5TRmlsZU93bmVyQWNj
b3VudE5hbWUgOiBOU1VzZXJOYW1lKCksCiAgICAgICAgIE5TRmlsZVBvc2l4UGVybWlzc2lvbnMg
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6KFdFQl9VUkVBRCB8IFdFQl9VV1JJVEUpXSwK
LSAgICAgICAgfSByZXRhaW5dOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMgPSBbQHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICBOU0ZpbGVPd25lckFjY291
bnROYW1lIDogTlNVc2VyTmFtZSgpLAogICAgICAgICBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zIDog
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOihXRUJfVVJFQUQgfCBXRUJfVVdSSVRFIHwgV0VC
X1VFWEVDKV0sCiAgICAgICAgIE5TRmlsZVByb3RlY3Rpb25LZXkgOiBOU0ZpbGVQcm90ZWN0aW9u
Q29tcGxldGVVbmxlc3NPcGVuLAotICAgICAgICB9IHJldGFpbl07Ci0gICAgcmV0dXJuIGF0dHJp
YnV0ZXM7CisgICAgfTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAog
TlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJpbmcgKmZpbGVO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCmluZGV4IDI3YjQyNDhjNjc5N2IyYzdmNjIzNWViZTFlYjRiZTZjYzMzZjUxODMu
LmVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTE3
OCwxMyArMTc4LDggQEAgLSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAgICBpZiAobV9o
ZWFkaW5nQXZhaWxhYmxlKQogICAgICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBk
YXRpbmdIZWFkaW5nXTsKIAotICAgICAgICBpZiAoIW1fdXBkYXRlVGltZXIpIHsKLSAgICAgICAg
ICAgIG1fdXBkYXRlVGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVy
dmFsOmtNb3Rpb25VcGRhdGVJbnRlcnZhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6c2VsZgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6
QHNlbGVjdG9yKHVwZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6WUVTXSByZXRh
aW5dOwotICAgICAgICB9CisgICAgICAgIGlmICghbV91cGRhdGVUaW1lcikKKyAgICAgICAgICAg
IG1fdXBkYXRlVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6
a01vdGlvblVwZGF0ZUludGVydmFsIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRh
dGUpIHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU107CiAgICAgfSBlbHNlIHsKICAgICAgICAgW21f
dXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5k
ZXggMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MC4uNWY5ZjM3YTg0MGJh
ZTcxNGY3OWFlYmI2NTRlY2U3ZTU0MTg2YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9y
dCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
I2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CkBAIC0xMTEsNyArMTEyLDYgQEAgc3RhdGlj
IFJlY3Vyc2l2ZUxvY2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCiBzdGF0aWMgdm9pZCogYXV0b3Jl
bGVhc2VQb29sTWFyazsKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgd2ViVGhyZWFkUnVuTG9vcDsKLXN0
YXRpYyBOU1J1bkxvb3AqIHdlYlRocmVhZE5TUnVuTG9vcDsKIHN0YXRpYyBwdGhyZWFkX3Qgd2Vi
VGhyZWFkOwogc3RhdGljIEJPT0wgaXNXZWJUaHJlYWRMb2NrZWQ7CiBzdGF0aWMgQk9PTCB3ZWJU
aHJlYWRTdGFydGVkOwpAQCAtMTI3LDExICsxMjcsOCBAQCB0eXBlZGVmIGVudW0gewogc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwogc3RhdGljIENGTXV0
YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKIAotc3RhdGljIHZvaWQgTWFp
blRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopOwotCiBzdGF0aWMgTG9jayBkZWxlZ2F0ZUxv
Y2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwotc3RhdGljIE5T
SW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOwogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJl
ZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7
CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKQEAgLTE2MSwxNCArMTU4LDMwIEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBzQXN5bmNEZWxlZ2F0ZXMoKQogICAgIHJldHVy
biBhc3luY0RlbGVnYXRlczsKIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1J1bkxvb3A+JiB3ZWJU
aHJlYWROU1J1bkxvb3AoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNSdW5Mb29wPj4gd2ViVGhyZWFkTlNSdW5Mb29wCisgICAgcmV0dXJuIHdlYlRocmVhZE5TUnVu
TG9vcDsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0ludm9jYXRpb24+JiBkZWxlZ2F0ZUludm9j
YXRpb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNJbnZvY2F0
aW9uPj4gZGVsZWdhdGVJbnZvY2F0aW9uOworICAgIHJldHVybiBkZWxlZ2F0ZUludm9jYXRpb247
Cit9CisKIFdFQkNPUkVfRVhQT1JUIHZvbGF0aWxlIHVuc2lnbmVkIHdlYlRocmVhZERlbGVnYXRl
TWVzc2FnZVNjb3BlQ291bnQgPSAwOwogCiBzdGF0aWMgYm9vbCBwZXJDYWxsb3V0QXV0b3JlbGVh
c2Vwb29sRW5hYmxlZDsKIAotc3RhdGljIGlubGluZSB2b2lkIFNlbmRNZXNzYWdlKE5TSW52b2Nh
dGlvbiogaW52b2NhdGlvbikKK3N0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShSZXRhaW5Q
dHI8TlNJbnZvY2F0aW9uPiYmIGludm9jYXRpb24pCiB7CiAgICAgW2ludm9jYXRpb24gaW52b2tl
XTsKLSAgICBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGludm9jYXRpb24pOworCisgICAgaWYg
KCFXZWJUaHJlYWRJc0VuYWJsZWQoKSB8fCBDRlJ1bkxvb3BHZXRNYWluKCkgPT0gQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2ludm9jYXRpb24gPSBXVEZNb3ZlKGludm9jYXRpb24pXSB7IH0pOwogfQogCiBzdGF0
aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkKikKQEAgLTE4NSwxNSArMTk4LDE1IEBA
IHN0YXRpYyB2b2lkIEhhbmRsZURlbGVnYXRlU291cmNlKHZvaWQqKQogICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGRlbGVnYXRlTG9jayk7CiAKICNpZiBMT0dfTUVTU0FHRVMKLSAgICAg
ICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgeworICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRp
b24oKSB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0p
IHsKICAgICAgICAgICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9j
YXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOworICAgICAgICAgICAgW2Rl
bGVnYXRlSW52b2NhdGlvbigpIGdldEFyZ3VtZW50OiZhcmd1bWVudDAgYXRJbmRleDowXTsKICAg
ICAgICAgICAgIE5TTG9nKEAibm90aWZpY2F0aW9uIHJlY2VpdmU6ICVAIiwgYXJndW1lbnQwKTsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVA
IiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pKTsK
KyAgICAgICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgcmVjZWl2ZTogJUAiLCBOU1N0cmluZ0Zyb21T
ZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAotICAg
ICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOworICAgICAgICBTZW5kTWVzc2Fn
ZShXVEZNb3ZlKGRlbGVnYXRlSW52b2NhdGlvbigpKSk7CiAKICAgICAgICAgZGVsZWdhdGVIYW5k
bGVkID0gWUVTOwogICAgICAgICBkZWxlZ2F0ZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTIx
NCwyNiArMjI3LDI2IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1zdGF0aWMgdm9pZCBTZW5kRGVs
ZWdhdGVNZXNzYWdlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKK3N0YXRpYyB2b2lkIFNlbmRE
ZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogewog
ICAgIGlmICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgU2VuZE1lc3NhZ2UoaW52
b2NhdGlvbik7CisgICAgICAgIFNlbmRNZXNzYWdlKFdURk1vdmUoaW52b2NhdGlvbikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKGRlbGVnYXRlU291cmNlKTsKICAgICBk
ZWxlZ2F0ZUxvY2subG9jaygpOwogCi0gICAgZGVsZWdhdGVJbnZvY2F0aW9uID0gaW52b2NhdGlv
bjsKKyAgICBkZWxlZ2F0ZUludm9jYXRpb24oKSA9IFdURk1vdmUoaW52b2NhdGlvbik7CiAgICAg
ZGVsZWdhdGVIYW5kbGVkID0gTk87CiAKICNpZiBMT0dfTUVTU0FHRVMKLSAgICBpZiAoW1tkZWxl
Z2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRl
ciBjbGFzc11dKSB7CisgICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uKCkgdGFyZ2V0XSBpc0tp
bmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKSB7CiAgICAgICAgIGlkIGFy
Z3VtZW50MDsKLSAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1bWVudDomYXJndW1l
bnQwIGF0SW5kZXg6MF07CisgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24oKSBnZXRBcmd1bWVu
dDomYXJndW1lbnQwIGF0SW5kZXg6MF07CiAgICAgICAgIE5TTG9nKEAibm90aWZpY2F0aW9uIHNl
bmQ6ICVAIiwgYXJndW1lbnQwKTsKICAgICB9IGVsc2UKLSAgICAgICAgTlNMb2coQCJkZWxlZ2F0
ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKSk7CisgICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgc2VuZDogJUAiLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAog
ICAgIHsKQEAgLTI0OCwxMCArMjYxLDEwIEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3Nh
Z2UoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogICAgICAgICB3aGlsZSAoIWRlbGVnYXRlSGFu
ZGxlZCkgewogICAgICAgICAgICAgaWYgKCFkZWxlZ2F0ZUNvbmRpdGlvbi53YWl0Rm9yKGRlbGVn
YXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpKSB7CiAgICAgICAgICAgICAgICAgaWQgZGVs
ZWdhdGVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRp
b24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKQot
ICAgICAgICAgICAgICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3VtZW50OiZkZWxl
Z2F0ZUluZm9ybWF0aW9uIGF0SW5kZXg6MF07CisgICAgICAgICAgICAgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uKCkgdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRl
ciBjbGFzc11dKQorICAgICAgICAgICAgICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uKCkgZ2V0
QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmlu
Z0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9yXSk7CisgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKTsKICAgICAKICAgICAgICAgICAgICAgICBDRlN0
cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4o
KSk7CiAgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8g
cmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdElu
dGVydmFsLnNlY29uZHMoKSwgbW9kZSk7CkBAIC0yODIsMTkgKzI5NSw2IEBAIHZvaWQgV2ViVGhy
ZWFkUnVuT25NYWluVGhyZWFkKHZvaWQoXmRlbGVnYXRlQmxvY2spKCkpCiAgICAgX1dlYlRocmVh
ZExvY2soKTsKIH0KIAotc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBv
YmopCi17Ci0gICAgYXV0byBhZG9wdGVkT2JqID0gYWRvcHROUyhvYmopOwotICAgIGlmICghV2Vi
VGhyZWFkSXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFpbigpID09IENGUnVuTG9vcEdldEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotI2lmIExPR19SRUxFQVNFUwotICAgIE5TTG9nKEAi
UmVsZWFzZSBzZW5kIFt3ZWIgdGhyZWFkXSA6ICVAIiwgb2JqKTsKLSNlbmRpZgotICAgIC8vIFdl
IG93biBvYmogYXQgdGhpcyBwb2ludCwgc28gd2UgZG9uJ3QgbmVlZCB0aGUgYmxvY2sgdG8gaW1w
bGljaXRseQotICAgIC8vIHJldGFpbiBpdC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2Fkb3B0ZWRPYmogPSBXVEZNb3ZlKGFkb3B0ZWRPYmopXSB7IH0pOwotfQotCiB2b2lkIFdlYlRo
cmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1
cnJlbnQoKSk7CkBAIC00MjYsNyArNDI2LDcgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhyZWFk
UmVsZWFzZVNvdXJjZSh2b2lkKikKIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKE5TSW52b2Nh
dGlvbiogaW52b2NhdGlvbikKIHsKICAgICAvLyBOU0ludm9jYXRpb24gcmVsZWFzZWQgaW4gU2Vu
ZE1lc3NhZ2UoKQotICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoW2ludm9jYXRpb24gcmV0YWluXSk7
CisgICAgU2VuZERlbGVnYXRlTWVzc2FnZShpbnZvY2F0aW9uKTsKIH0KIAogdm9pZCBXZWJUaHJl
YWRQb3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nKiBuYW1lLCBpZCBvYmplY3QsIGlkIHVzZXJJbmZv
KQpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2tJbnRlcm5h
bChBdXRvcmVsZWFzZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlvbikKICAgICBBU1NFUlQoc0Fz
eW5jRGVsZWdhdGVzKCkpOwogICAgIGlmIChbc0FzeW5jRGVsZWdhdGVzKCkgY291bnRdKSB7CiAg
ICAgICAgIGZvciAoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uIGluIHNBc3luY0RlbGVnYXRlcygp
LmdldCgpKQotICAgICAgICAgICAgU2VuZERlbGVnYXRlTWVzc2FnZShbaW52b2NhdGlvbiByZXRh
aW5dKTsKKyAgICAgICAgICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoaW52b2NhdGlvbik7CiAgICAg
ICAgIFtzQXN5bmNEZWxlZ2F0ZXMoKSByZW1vdmVBbGxPYmplY3RzXTsKICAgICB9CiAKQEAgLTYz
Miw3ICs2MzIsNyBAQCBzdGF0aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogCiAgICAgd2Vi
VGhyZWFkQ29udGV4dCA9IEN1cnJlbnRUaHJlYWRDb250ZXh0KCk7CiAgICAgd2ViVGhyZWFkUnVu
TG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSAgICB3ZWJUaHJlYWROU1J1bkxvb3AgPSBb
W05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcmV0YWluXTsKKyAgICB3ZWJUaHJlYWROU1J1bkxv
b3AoKSA9IFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwogCiAgICAgQ0ZSdW5Mb29wT2JzZXJ2
ZXJSZWYgd2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRl
KG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMgfCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNl
cyB8IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywgMCwgV2ViUnVuTG9vcExvY2ssIG51bGxw
dHIpOwogICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxv
b3BMb2NrT2JzZXJ2ZXJSZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CkBAIC04OTgsOCArODk4
LDggQEAgQ0ZSdW5Mb29wUmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCkKIE5TUnVuTG9vcCogV2Vi
VGhyZWFkTlNSdW5Mb29wKHZvaWQpCiB7CiAgICAgaWYgKHdlYlRocmVhZFN0YXJ0ZWQpIHsKLSAg
ICAgICAgQVNTRVJUKHdlYlRocmVhZE5TUnVuTG9vcCk7Ci0gICAgICAgIHJldHVybiB3ZWJUaHJl
YWROU1J1bkxvb3A7CisgICAgICAgIEFTU0VSVCh3ZWJUaHJlYWROU1J1bkxvb3AoKSk7CisgICAg
ICAgIHJldHVybiB3ZWJUaHJlYWROU1J1bkxvb3AoKS5nZXQoKTsKICAgICB9CiAKICAgICByZXR1
cm4gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQpp
bmRleCA1Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyLi44Y2NlMjk1NTRj
MGI1NjIzY2M5N2RiOWQ0ODI3YzlhMTJjZWEwZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2Eu
bW0KQEAgLTUxLDE1ICs1MSwxNSBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
MzQ3NDUxNzE+LiBGaXhlZCBpbiBpT1MgMTMgYW5kIG1hY09TIDEwLjE1LCBidXQgd2Ugc3RpbGwg
bmVlZCB0byBzdXBwb3J0IG1hY09TIDEwLjE0IGZvciBub3cuCiAjaWYgVVNFKExFR0FDWV9DRk5F
VFdPUktfRE9XTkxPQURTKQotICAgIHN0YXRpYyBOU1NldDxDbGFzcz4gKnBsaXN0Q2xhc3NlcyA9
IG5pbDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0PENsYXNzPj4+
IHBsaXN0Q2xhc3NlczsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKIAog
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgcGxpc3RDbGFzc2VzID0g
W1tOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xh
c3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwg
W05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gcmV0YWluXTsKKyAgICAg
ICAgcGxpc3RDbGFzc2VzLmdldCgpID0gW05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25h
cnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBj
bGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNz
XSwgbmlsXTsKICAgICB9KTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6bnNEYXRhLmdldCgpIGVy
cm9yOm5pbF0pOwogICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0Rl
Y29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKLSAgICBhdXRvIGRpY3Rpb25hcnkg
PSBhZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVy
IGRlY29kZU9iamVjdE9mQ2xhc3NlczpwbGlzdENsYXNzZXMgZm9yS2V5OkAiTlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0g
YWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBk
ZWNvZGVPYmplY3RPZkNsYXNzZXM6cGxpc3RDbGFzc2VzLmdldCgpLmdldCgpIGZvcktleTpAIk5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOwogICAgIFt1bmFyY2hp
dmVyIGZpbmlzaERlY29kaW5nXTsKICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6c3RhdGljX2Nh
c3Q8TlNTdHJpbmcqPihwYXRoKSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQ
YXRoIl07CiAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxv
Y10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29j
b2EubW0KaW5kZXggMTAxNDViOTBhYTNiNGRhNjlhMDhjMDg4NzlkODUwNmVjNmE2YmRjMi4uYzg5
MTQ4NGJiZTdkNzVhMGI5NWI4MjQwM2VlZWIwNjY5NmZjYTJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzQ29jb2EubW0KQEAgLTQ1LDEyICs0NSwxMiBAQCBib29sIGlzRmVhdHVyZUZsYWdFbmFibGVk
KGNvbnN0IFN0cmluZyYgZmVhdHVyZU5hbWUpCiAgICAgaWYgKCFpc1dlYktpdEJ1bmRsZUZyb21T
dGFnZWRGcmFtZXdvcmspCiAgICAgICAgIHJldHVybiBfb3NfZmVhdHVyZV9lbmFibGVkX2ltcGwo
IldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJlTmFtZS51dGY4KCkuZGF0YSgpKTsKIAotICAg
IHN0YXRpYyBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBbW05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkvQXBwbGUvU3lzdGVtL0xpYnJhcnkvRmVh
dHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gZGljdGlvbmFyeSA9IFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5L0FwcGxlL1N5c3Rl
bS9MaWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il07CiAKLSAgICBpZiAo
IVtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVu
YWJsZWQiXSkKKyAgICBpZiAoIVtbZGljdGlvbmFyeS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVy
ZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKICAgICAgICAgcmV0dXJuIF9vc19mZWF0
dXJlX2VuYWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNoYXIqKWZlYXR1cmVOYW1lLmNoYXJh
Y3RlcnM4KCkpOwogCi0gICAgcmV0dXJuIFtbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1
cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIg
Y2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0
Rm9yS2V5OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CisgICAgcmV0dXJuIFtbW2RpY3Rpb25hcnku
Z2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0g
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5LmdldCgpIG9i
amVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGJvb2xWYWx1
ZV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVD
b2NvYS5tbQppbmRleCBkMmQ4YWU4ZmNkNTc3YzEzMjJhMTk0Y2NkNTU4YjBkOGM2ZWNlNGY3Li40
ZWQzNzc0YTA0ZjA4MThlNTU3NDExMWEyNzU0NmY1NmQyN2I3ZDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmVDb2NvYS5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIFdU
Rjo6U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKGJvb2wgbGVn
YWN5RmlsZW5hbWUpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0g
ICAgc3RhdGljIE5TVVJMICpjb250ZW50UnVsZUxpc3RTdG9yZVVSTDsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJMPj4gY29udGVudFJ1bGVMaXN0U3RvcmVVUkw7CiAK
ICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIE5TVVJMICp1cmwgPSBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xpYnJhcnlE
aXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxs
cHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTUzLDE1ICs1MywxNSBAQCBXVEY6OlN0
cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aChib29sIGxlZ2FjeUZp
bGVuYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVnYWN5RmlsZW5hbWUp
Ci0gICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIiBpc0RpcmVjdG9yeTpZRVNdIHJl
dGFpbl07CisgICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSA9IFt1cmwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbnMiIGlzRGlyZWN0
b3J5OllFU107CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRSdWxlTGlzdFN0b3Jl
VVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29udGVudFJ1bGVMaXN0
cyIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0
U3RvcmVVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRl
bnRSdWxlTGlzdHMiIGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7CiAKLSAgICBpZiAoIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6Y29udGVudFJ1
bGVMaXN0U3RvcmVVUkwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVz
Om5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGRpcmVjdG9yeSAlQCIsIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMKTsKKyAgICBpZiAoIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6Y29udGVudFJ1
bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllF
UyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgp
LmdldCgpKTsKIAotICAgIHJldHVybiBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5hYnNvbHV0ZVVS
TC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gW2NvbnRlbnRSdWxl
TGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRlVVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA1NWI1ZmM5
NTUxNjhlNDg0NTJjZmI3MTBjZWJiNmFkZmU5ZDA1YTk0Li40MGQ3Zjg1YmY5YmY4NDI2NWQwNmQ0
OTcyZGM0ZDA2ZWUwY2U5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTIzMSw3ICsyMzEsNyBAQCBA
aW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiArIChOU1NldDxO
U1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQogewogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1NldCAqYWxs
V2Vic2l0ZURhdGFUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
U2V0Pj4gYWxsV2Vic2l0ZURhdGFUeXBlczsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF4gewogICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMgPSBAWwogICAgICAgICAgICAgX1dLV2Vi
c2l0ZURhdGFUeXBlSFNUU0NhY2hlLApAQCAtMjQ3LDEwICsyNDcsMTAgQEAgKyAoTlNTZXQ8TlNT
dHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGUKICNlbmRpZgog
ICAgICAgICBdOwogCi0gICAgICAgIGFsbFdlYnNpdGVEYXRhVHlwZXMgPSBbW1tzZWxmIGFsbFdl
YnNpdGVEYXRhVHlwZXNdIHNldEJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpwcml2YXRlVHlwZXNd
IHJldGFpbl07CisgICAgICAgIGFsbFdlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgPSBbW3NlbGYgYWxs
V2Vic2l0ZURhdGFUeXBlc10gc2V0QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OnByaXZhdGVUeXBl
c107CiAgICAgfSk7CiAKLSAgICByZXR1cm4gYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAgICByZXR1
cm4gYWxsV2Vic2l0ZURhdGFUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQk9PTClfZGVmYXVs
dERhdGFTdG9yZUV4aXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4
IDA4Y2I4ZWQwNjM2YmY0MDY3ZDc0ZDViMzlkMTlkNWU4ZjY0NGJmM2QuLmZjYTk2YzJmOWNlMmMy
OTZlZmY0OTZlZWYxZWJlYmFhZjU5ZDYxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KQEAgLTMzMiw3ICszMzIsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNo
b3VsZENyZWF0ZURpcmVjdG9yeSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU1VSTD4+IHRlbXBVUkw7CiAgICAgCiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeewogICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CkBAIC0zNDYsMTAgKzM0
NiwxMCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6UwogICAgICAgICAgICAgdXJsID0gW3VybCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZ
RVNdOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB0ZW1wVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07
CisgICAgICAgIHRlbXBVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICB9KTsKICAgICAKLSAgICBOU1VSTCAq
dXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUg
aXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqdXJsID0gW3RlbXBVUkwuZ2V0KCkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKIAog
ICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3RvcnkgPT0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpZ
ZXMKICAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURp
cmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKQEAgLTM2MSw3ICszNjEsNyBAQCBXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFdURjo6UwogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUs
IFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCiB7CiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICpjYWNoZVVS
TDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJMPj4gY2FjaGVVUkw7
CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIE5TVVJMICp1cmwg
PSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0NhY2hl
c0RpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51
bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOwpAQCAtMzc1LDEwICszNzUsMTAgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgV1RGOjoKICAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICAg
ICAgfQogCi0gICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgICAgIGNhY2hlVVJM
LmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGly
ZWN0b3J5OllFU107CiAgICAgfSk7CiAKLSAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTC5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIGlmIChzaG91bGRDcmVhdGVE
aXJlY3RvcnkgPT0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpZZXMKICAgICAgICAgJiYgIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJ
bnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0p
CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwp
OwpAQCAtMzg5LDcgKzM4OSw3IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6CiBXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRh
VVJMOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiB3ZWJzaXRl
RGF0YVVSTDsKIAogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNV
UkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5
Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRl
Rm9yVVJMOm51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOwpAQCAtNDA1LDEwICs0MDUs
MTAgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QKICAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKICAgICAgICAgfQogCi0gICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0YWlu
XTsKKyAgICAgICAgd2Vic2l0ZURhdGFVUkwuZ2V0KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0g
ICAgTlNVUkwgKnVybCA9IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp1cmwgPSBbd2Vi
c2l0ZURhdGFVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5h
bWUgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rvcmll
czpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCA2NjE2MmUzZmEyOTNlYjc0ZWJlZjNjMGQ1MGFjMTdlYWNmYmRjODAyLi4yMjBiNzY5YzAxYjRh
NjNlYzk3NGIzOTlhNTE4NmMxOGE0MzQ4NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQ1MDMsMTEg
KzQ1MDMsMTEgQEAgLSAoTlNBcnJheSAqKWtleUNvbW1hbmRzCiAgICAgaWYgKCFfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IHN0YXRpYyBOU0FycmF5KiBlZGl0YWJsZUtleUNvbW1hbmRzID0gW0BbCisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gZWRpdGFibGVLZXlDb21tYW5kcyA9IEBb
CiAgICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmll
ckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfbmV4dEFjY2Vzc29yeVRhYjopXSwKICAgICAgICAg
W1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6VUlL
ZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3IoX3ByZXZpb3VzQWNjZXNzb3J5VGFiOild
Ci0gICAgXSByZXRhaW5dOwotICAgIHJldHVybiBlZGl0YWJsZUtleUNvbW1hbmRzOworICAgIF07
CisgICAgcmV0dXJuIGVkaXRhYmxlS2V5Q29tbWFuZHMuZ2V0KCkuZ2V0KCk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KaW5kZXggYTJjOGJiMWE0NzE3OGNjMGMzNDdhZGM0N2JkMDY0OThkYjU3YzFjNy4uMmE1YjE4
MzI2NzY3YzJhN2Q0OWU1OWViZTNlOGEyYzEwYjBkM2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTMsMjUgKzI1Mywy
MCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAoTlNBcnJheSAq
KWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcwogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmF0dHJpYnV0ZU5hbWVzID0gMDsKLQot
ICAgIGlmICghYXR0cmlidXRlTmFtZXMpIHsKLSAgICAgICAgYXR0cmlidXRlTmFtZXMgPSBAWwot
ICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxp
dHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlT
aXplQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0
ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAotICAgICAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIC8vIFBE
RkxheWVyQ29udHJvbGxlciBoYXMgaXRzIG93biBhY2Nlc3NpYmlsaXR5Q2hpbGRyZW4uCi0gICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZQotICAgICAgICAgICAgXTsK
LSAgICAgICAgW2F0dHJpYnV0ZU5hbWVzIHJldGFpbl07Ci0gICAgfQotCi0gICAgcmV0dXJuIGF0
dHJpYnV0ZU5hbWVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IGF0dHJpYnV0ZU5hbWVzID0gQFsKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0
cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCisgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAorICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVNpemVBdHRyaWJ1dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1
dGUsCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlLAorICAgICAgICAvLyBQREZMYXllckNvbnRy
b2xsZXIgaGFzIGl0cyBvd24gYWNjZXNzaWJpbGl0eUNoaWxkcmVuLgorICAgICAgICBOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZQorICAgIF07CisKKyAgICByZXR1cm4gYXR0cmlidXRl
TmFtZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bQppbmRleCA4NzUzNjI0MmI3OTAzNGViOTM0Y2I1ZjcyYTg5NzM2ZjcxMWE5NTBmLi4xZWMwNGVh
YWY1YjQ2NDc2ZDg5OWRmZTg1NWVlZjI2Y2MyOTM1ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTI3NiwxNyArMjc2LDE2IEBAIC0o
TlNSYW5nZSlfd2Via2l0X3JhbmdlT2ZVUkxTY2hlbWUKICAgICBOU1JhbmdlIGNvbG9uID0gW3Nl
bGYgcmFuZ2VPZlN0cmluZzpAIjoiXTsKICAgICBpZiAoY29sb24ubG9jYXRpb24gIT0gTlNOb3RG
b3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKICAgICAgICAgTlNSYW5nZSBzY2hlbWUgPSB7
MCwgY29sb24ubG9jYXRpb259OwotICAgICAgICBzdGF0aWMgTlNDaGFyYWN0ZXJTZXQgKkludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBuaWw7Ci0gICAgICAgIGlmICghSW52ZXJzZVNjaGVtZUNo
YXJhY3RlclNldCkgeworICAgICAgICBzdGF0aWMgYXV0byBpbnZlcnNlU2NoZW1lQ2hhcmFjdGVy
U2V0ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAg
ICAgVGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdI
ei4gIElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCiAgICAgICAgICAgICAgZXZlcnl0aGluZyBlbHNl
IHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25k
ZXIgaWYgd2UKICAgICAgICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVy
IHNldCBoZXJlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIE5TU3RyaW5nICphY2NlcHRh
YmxlQ2hhcmFjdGVycyA9IEAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLi0iOwotICAgICAgICAgICAgSW52ZXJzZVNjaGVtZUNo
YXJhY3RlclNldCA9IFtbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVkU2V0XSByZXRhaW5dOwotICAg
ICAgICB9Ci0gICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc2VsZiByYW5nZU9mQ2hhcmFjdGVy
RnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0IG9wdGlvbnM6MCByYW5nZTpzY2hlbWVd
OworICAgICAgICAgICAgcmV0dXJuIHJldGFpblB0cihbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVk
U2V0XSk7CisgICAgICAgIH0oKSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc2VsZiBy
YW5nZU9mQ2hhcmFjdGVyRnJvbVNldDppbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdl
dCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOwogICAgICAgICBpZiAoaWxsZWdhbHMubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBzY2hlbWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tbQpp
bmRleCA5OGVjYWE5NDM1NjQ2ZjYwZWFmMTVjMzQ1MTU2OGM5MjA3MDYzZTEyLi4zZWVjODBhYzI5
NzNkMmI1ZjZmZjYzZDM1ZTM2ZDBlYTI2YjFiY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tbQpAQCAtNTgsMTMgKzU4LDEzIEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogCiArIChOU1N0cmluZyAqKWNlbnRlclRydW5jYXRlU3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyB0b1dpZHRoOihmbG9hdCltYXhXaWR0aAogewotICAgIHN0YXRp
YyBOU0ZvbnQgKm1lbnVGb250ID0gW1tOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF0gcmV0YWluXTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRm9udD4+IG1lbnVGb250ID0g
W05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKIAotICAgIEFTU0VSVChtZW51Rm9udCk7Ci0gICAg
aWYgKCFtZW51Rm9udCkKKyAgICBBU1NFUlQobWVudUZvbnQuZ2V0KCkpOworICAgIGlmICghbWVu
dUZvbnQuZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6
U3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIG1heFdpZHRoLCBmb250RnJv
bU5TRm9udChtZW51Rm9udCkpOworICAgIHJldHVybiBXZWJDb3JlOjpTdHJpbmdUcnVuY2F0b3I6
OmNlbnRlclRydW5jYXRlKHN0cmluZywgbWF4V2lkdGgsIGZvbnRGcm9tTlNGb250KG1lbnVGb250
LmdldCgpLmdldCgpKSk7CiB9CiAKICsgKE5TU3RyaW5nICopY2VudGVyVHJ1bmNhdGVTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIHRvV2lkdGg6KGZsb2F0KW1heFdpZHRoIHdpdGhGb250OihOU0Zv
bnQgKilmb250CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YlN0b3JhZ2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJT
dG9yYWdlTWFuYWdlci5tbQppbmRleCBiYmZmZGM0NTQ4MDcwOGJlOTkyMTdkOGQwNDAyMGE5YThi
YzI3MzY1Li4zMzk0YWE0ZTFlZmQyMGRhODdlNDdjNTFiYjJjZGRiYzIxZDUyNGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIu
bW0KQEAgLTk3LDE5ICs5NywxOSBAQCAtICh2b2lkKXN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRh
dGFiYXNlCiAKICsgKE5TU3RyaW5nICopX3N0b3JhZ2VEaXJlY3RvcnlQYXRoCiB7Ci0gICAgc3Rh
dGljIE5TU3RyaW5nICpzTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gc0xvY2FsU3RvcmFnZVBhdGg7CiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBmbGFnOwogICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CiAgICAgICAg
IE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c107Ci0gICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2RlZmF1bHRzIG9iamVjdEZv
cktleTpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgICAgICBpZiAoIXNMb2Nh
bFN0b3JhZ2VQYXRoIHx8ICFbc0xvY2FsU3RvcmFnZVBhdGggaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkgeworICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGxvY2FsU3RvcmFnZVBh
dGggPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tl
eV07CisgICAgICAgIGlmICghbG9jYWxTdG9yYWdlUGF0aCB8fCAhW2xvY2FsU3RvcmFnZVBhdGgg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICAgICAgTlNBcnJheSAq
cGF0aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJl
Y3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7CiAgICAgICAgICAgICBOU1N0cmluZyAqbGli
cmFyeURpcmVjdG9yeSA9IFtwYXRocyBvYmplY3RBdEluZGV4OjBdOwotICAgICAgICAgICAgc0xv
Y2FsU3RvcmFnZVBhdGggPSBbbGlicmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJXZWJLaXQvTG9jYWxTdG9yYWdlIl07CisgICAgICAgICAgICBsb2NhbFN0b3Jh
Z2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOwogICAgICAgICB9Ci0gICAgICAgIHNMb2NhbFN0b3Jh
Z2VQYXRoID0gW1tzTG9jYWxTdG9yYWdlUGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSBy
ZXRhaW5dOworICAgICAgICBzTG9jYWxTdG9yYWdlUGF0aC5nZXQoKSA9IFtsb2NhbFN0b3JhZ2VQ
YXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogICAgIH0pOwotICAgIHJldHVybiBzTG9j
YWxTdG9yYWdlUGF0aDsKKyAgICByZXR1cm4gc0xvY2FsU3RvcmFnZVBhdGguZ2V0KCkuZ2V0KCk7
CiB9CiAKICsgKHZvaWQpc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsOihkb3VibGUpaW50
ZXJ2YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA5MWFmYzVkNzQ0OTE0MzRmNGUxMjNmMThhNTA0
MTczODliMzRiM2I5Li4wZGZhZTg0OWYwZDc3NDRlODdmZDI4OWRkNjYxYTUwZjE0MGM0Mjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00NTksMTAgKzQ1OSwxMCBAQCBzdGF0aWMgTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogCiB2b2lkIF9X
ZWJDcmVhdGVGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nLCBGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KQogewotICAgIHN0YXRpYyBOU0Rp
Y3Rpb25hcnkgKmRvY3VtZW50QXR0cmlidXRlcyA9IFthdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0
cmluZ0NvbnZlcnNpb24oKSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5Pj4gZG9jdW1lbnRBdHRyaWJ1dGVzID0gYXR0cmlidXRlc0ZvckF0
dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCk7CiAgICAgTlNBcnJheSAqc3VicmVzb3VyY2VzOwog
ICAgIERPTURvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50ID0gW3N0cmluZyBfZG9jdW1lbnRGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKQotICAgICAgICBkb2N1bWVudDpr
aXQoJmRvY3VtZW50KSBkb2N1bWVudEF0dHJpYnV0ZXM6ZG9jdW1lbnRBdHRyaWJ1dGVzIHN1YnJl
c291cmNlczomc3VicmVzb3VyY2VzXTsKKyAgICAgICAgZG9jdW1lbnQ6a2l0KCZkb2N1bWVudCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOmRvY3VtZW50QXR0cmlidXRlcy5nZXQoKS5nZXQoKSBzdWJyZXNv
dXJjZXM6JnN1YnJlc291cmNlc107CiAgICAgcmVzdWx0LmZyYWdtZW50ID0gY29yZShmcmFnbWVu
dCk7CiAgICAgZm9yIChXZWJSZXNvdXJjZSogcmVzb3VyY2UgaW4gc3VicmVzb3VyY2VzKQogICAg
ICAgICByZXN1bHQucmVzb3VyY2VzLmFwcGVuZChbcmVzb3VyY2UgX2NvcmVSZXNvdXJjZV0uZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA0N2EzZDUzMDVlNzYxZjZjNmE0MWJjYWRjZDYzYTVj
MzIyNjE4MTI5Li44ZTZlZWE2OGFmNTM3ZTcxOTEyZjUyMjA2ZDlkM2ZiMjBjZDQ4YjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQpAQCAtOTcsMzQgKzk3LDMzIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJh
eT4gbmV3QXJyYXlXaXRoU3RyaW5ncyhjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzID0gW1tbW3NlbGYgc3VwcG9ydGVkTm9uSW1hZ2VN
SU1FVHlwZXNdIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OgotICAgICAgICBbc2VsZiBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlc11dIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5Ogot
ICAgICAgICBbc2VsZiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc11dIHJldGFpbl07Ci0gICAgcmV0
dXJuIHN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMgPSBbW1tzZWxmIHN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheToK
KyAgICAgICAgW3NlbGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdXSBhcnJheUJ5QWRkaW5nT2Jq
ZWN0c0Zyb21BcnJheTpbc2VsZiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc11dOworICAgIHJldHVy
biBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkg
KilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNT
dXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdp
c3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOwotICAgIHJldHVybiBz
dGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0Fy
cmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMo
KSk7CisgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzLmdldCgpLmdldCgp
OwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMKIHsKLSAgICBz
dGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJh
eVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGlj
U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBl
UmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0
aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJh
eSAqKXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0YXRp
Y1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJl
Z2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJu
IHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3
QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cygpKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuZ2V0
KCk7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMKIHsKLSAgICBz
dGF0aWMgTlNBcnJheSAqc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3QXJyYXlX
aXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKSku
bGVha1JlZigpOwotICAgIHJldHVybiBzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljVW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5
Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKSk7CisgICAgcmV0dXJuIHN0YXRpY1Vuc3VwcG9y
dGVkVGV4dE1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaWQpaW5pdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRW
YWx1ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5tbQppbmRleCBjZjlkYmNhYjE4NGM1Yzg1OTUzZDc1YmZlMGNkNWE0Zjli
ZmM0NmIyLi44OTBlMmIxNWE0NThiY2U5ZDk1ZjVlNjU3MTFlNDE1YTIwMWEzZGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5tbQpAQCAtNTIsMTIgKzUyLDEyIEBAIGJvb2wgaXNGZWF0dXJl
RmxhZ0VuYWJsZWQoY29uc3QgU3RyaW5nJiBmZWF0dXJlTmFtZSkKICAgICBpZiAoIWlzV2ViS2l0
QnVuZGxlRnJvbVN0YWdlZEZyYW1ld29yaykKICAgICAgICAgcmV0dXJuIF9vc19mZWF0dXJlX2Vu
YWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNoYXIqKWZlYXR1cmVOYW1lLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgc3RhdGljIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IFtbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGlicmFyeS9BcHBsZS9TeXN0ZW0v
TGlicmFyeS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdCJdIHJldGFpbl07CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBkaWN0aW9uYXJ5
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkv
QXBwbGUvU3lzdGVtL0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXTsK
IAotICAgIGlmICghW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0
Rm9yS2V5OkAiRW5hYmxlZCJdKQorICAgIGlmICghW1tkaWN0aW9uYXJ5LmdldCgpIG9iamVjdEZv
cktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdKQogICAgICAgICByZXR1
cm4gX29zX2ZlYXR1cmVfZW5hYmxlZF9pbXBsKCJXZWJLaXQiLCAoY29uc3QgY2hhciopZmVhdHVy
ZU5hbWUuY2hhcmFjdGVyczgoKSk7CiAKLSAgICByZXR1cm4gW1tbZGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dICYmIFtbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVO
YW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gYm9vbFZhbHVlXTsKKyAgICByZXR1cm4gW1tb
ZGljdGlvbmFyeS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpA
IkVuYWJsZWQiXSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dICYmIFtbW2RpY3Rpb25h
cnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVk
Il0gYm9vbFZhbHVlXTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggOTE3YTA1ZDg5MTA3MjlmNDJkYWUwNmY1OWZiNTFhMzZiNzgx
ZWNiYS4uNjk2MDZiZjZlZTM5ODliMGIxZDlhMjM2ZmM2NjhhMGU5NWM2ZWZkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQzOCwxMSArMTQzOCwx
MSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5n
ICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogICAgIFdlYlByZWZlcmVuY2VzICpzdGFuZGFy
ZFByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogICAg
IFtzdGFuZGFyZFByZWZlcmVuY2VzIHdpbGxBZGRUb1dlYlZpZXddOwogCi0gICAgX3ByaXZhdGUt
PnByZWZlcmVuY2VzID0gW3N0YW5kYXJkUHJlZmVyZW5jZXMgcmV0YWluXTsKKyAgICBfcHJpdmF0
ZS0+cHJlZmVyZW5jZXMgPSBzdGFuZGFyZFByZWZlcmVuY2VzOwogICAgIF9wcml2YXRlLT5tYWlu
RnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9
IFlFUzsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3Vu
ZENvbG9yID0gYWRvcHROUyhbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYTox
XSByZXRhaW5dKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW05TQ29sb3IgY29s
b3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYToxXTsKICNlbHNlCiAgICAgX3ByaXZhdGUtPmJhY2tn
cm91bmRDb2xvciA9IFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRl
KTsKICNlbmRpZgpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QK
ICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CiAKLSAgICBf
cHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3By
aXZhdGUtPnByZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIF9wcml2
YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBbX3ByaXZh
dGUtPnByZWZlcmVuY2VzIF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKICAgICBfcHJpdmF0
ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKICAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9
IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKQEAgLTE3ODAsNyArMTc4MCw3
IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5
bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgICAgIHByZWZlcmVuY2VzID0gW1dlYlBy
ZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogICAgIFtwcmVmZXJlbmNlcyB3aWxsQWRk
VG9XZWJWaWV3XTsKIAotICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IFtwcmVmZXJlbmNlcyBy
ZXRhaW5dOworICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IHByZWZlcmVuY2VzOwogICAgIF9w
cml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAgICAgX3ByaXZhdGUtPmRyYXdz
QmFja2dyb3VuZCA9IFlFUzsKICAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29y
ZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwpAQCAtMTc4OSw3ICsxNzg5
LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilz
dHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBbZnJhbWVWaWV3IHNldEF1dG9yZXNp
emluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZV07CiAgICAg
W3NlbGYgYWRkU3VidmlldzpmcmFtZVZpZXcuZ2V0KCldOwogCi0gICAgX3ByaXZhdGUtPmdyb3Vw
ID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJl
bmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBX
ZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgW19wcml2YXRlLT5wcmVmZXJlbmNl
cyBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRX
ZWJWaWV3KHNlbGYpOwogCiAgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNl
c3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CkBAIC0yNTA2LDcgKzI1MDYsNyBAQCAtICh2b2lkKV9j
bG9zZQogCiAgICAgW1dlYlByZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVy
OltzZWxmIHByZWZlcmVuY2VzSWRlbnRpZmllcl1dOwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9
IGFkb3B0TlMoc3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+cHJlZmVyZW5jZXMsIG5pbCkpOworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSBzdGQ6OmV4Y2hhbmdlKF9wcml2YXRlLT5wcmVmZXJlbmNlcywg
bmlsKTsKICAgICBbcHJlZmVyZW5jZXMgZGlkUmVtb3ZlRnJvbVdlYlZpZXddOwogCiAgICAgW3Nl
bGYgX2Nsb3NlUGx1Z2luRGF0YWJhc2VzXTsKQEAgLTMzNzUsOCArMzM3NSw4IEBAIC0gKHZvaWQp
X2NoZWNrRGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbgogCiAgICAgX3ByaXZhdGUtPl9kaWRQZXJm
b3JtRmlyc3ROYXZpZ2F0aW9uID0gWUVTOwogCi0gICAgaWYgKF9wcml2YXRlLT5wcmVmZXJlbmNl
cy5hdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwgJiYgX3ByaXZhdGUtPnByZWZlcmVuY2Vz
LmNhY2hlTW9kZWwgPCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyKQotICAgICAgICBfcHJp
dmF0ZS0+cHJlZmVyZW5jZXMuY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dz
ZXI7CisgICAgaWYgKFtfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgYXV0b21hdGljYWxseURldGVjdHND
YWNoZU1vZGVsXSAmJiBbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGNhY2hlTW9kZWxdIDwgV2ViQ2Fj
aGVNb2RlbERvY3VtZW50QnJvd3NlcikKKyAgICAgICAgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBz
ZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXJdOwogfQogCiAtICh2b2lk
KV9kaWRDb21taXRMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKQEAgLTU3ODMsMTIgKzU3
ODMsMTIgQEAgLSAodm9pZClzZXRQcmVmZXJlbmNlczooV2ViUHJlZmVyZW5jZXMgKilwcmVmcwog
CiAgICAgW3ByZWZzIHdpbGxBZGRUb1dlYlZpZXddOwogCi0gICAgYXV0byBvbGRQcmVmcyA9IGFk
b3B0TlMoX3ByaXZhdGUtPnByZWZlcmVuY2VzKTsKKyAgICBhdXRvIG9sZFByZWZzID0gc3RkOjpl
eGNoYW5nZShfcHJpdmF0ZS0+cHJlZmVyZW5jZXMsIG51bGxwdHIpOwogCiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6V2Vi
UHJlZmVyZW5jZXNDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gb2JqZWN0OltzZWxmIHByZWZl
cmVuY2VzXV07CiAgICAgW1dlYlByZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlm
aWVyOltvbGRQcmVmcyBpZGVudGlmaWVyXV07CiAKLSAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMg
PSBbcHJlZnMgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBwcmVmczsKIAog
ICAgIC8vIEFmdGVyIHJlZ2lzdGVyaW5nIGZvciB0aGUgbm90aWZpY2F0aW9uLCBwb3N0IGl0IHNv
IHRoZSBXZWJDb3JlIHNldHRpbmdzIHVwZGF0ZS4KICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9wcmVm
ZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246KQpAQCAtNTgwMSw3ICs1ODAxLDcgQEAgLSAodm9p
ZClzZXRQcmVmZXJlbmNlczooV2ViUHJlZmVyZW5jZXMgKilwcmVmcwogCiAtIChXZWJQcmVmZXJl
bmNlcyAqKXByZWZlcmVuY2VzCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wcmVmZXJlbmNlczsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPnByZWZlcmVuY2VzLmdldCgpOwogfQogCiAtICh2b2lkKXNl
dFByZWZlcmVuY2VzSWRlbnRpZmllcjooTlNTdHJpbmcgKilhbklkZW50aWZpZXIKQEAgLTY1NTks
NyArNjU1OSw3IEBAIC0gKHZvaWQpc2V0R3JvdXBOYW1lOihOU1N0cmluZyAqKWdyb3VwTmFtZQog
ICAgIGlmIChfcHJpdmF0ZS0+Z3JvdXApCiAgICAgICAgIF9wcml2YXRlLT5ncm91cC0+cmVtb3Zl
V2ViVmlldyhzZWxmKTsKIAotICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0
T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCk7CisgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNy
ZWF0ZShncm91cE5hbWUsIFtfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgX2xvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAogICAg
IGlmICghX3ByaXZhdGUtPnBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKaW5kZXggODNjNmQ3ODA1MDJlZjJiMThiNTUzYThlODlkNGMxZWU1MDhh
ZTg4Ny4uMTVjMzkxNjhlMDEyZGI1NGJiNmU1MDk0ZWU2MTNiMDBmNjcxNTgzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMjI2LDcgKzIy
Niw3IEBAIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50OwogICAgIEJPT0wgdXNl
ckFnZW50T3ZlcnJpZGRlbjsKICAgICAKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXM7
CisgICAgUmV0YWluUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIE5TVVJMICp1c2VyU3R5bGVTaGVldExvY2F0aW9uOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Jj
ZTNiODg5ZThhMmM3MzNjNDk0MmE1Y2Y4ZWZmOTlmOTllNWY5MS4uMmMxMTY4NWUxODc3ZjMwOTk1
NDM2MjNiNWYyNjdhNzQwZmEzMzI4MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTAyLTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9m
IFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI0MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBp
biBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChhbGxvd2VkRm9udEZhbWlseVNldCk6
CisgICAgICAgICgtW0RSVE1vY2tTY3JvbGxlciBkcmF3S25vYl0pOgorICAgICAgICAoLVtEUlRN
b2NrU2Nyb2xsZXIgZHJhd1JlY3Q6XSk6CisgICAgICAgIChwcmVwYXJlQ29uc2lzdGVudFRlc3Rp
bmdFbnZpcm9ubWVudCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9RdWlja0xvb2subW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc2VsZWN0
aW9uUmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZV0pOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjphbGxvd2Vk
Rm9udEZhbWlseVNldCk6CisgICAgICAgIChXVFI6OnN5c3RlbUhpZGRlbkZvbnRGYW1pbHlTZXQp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRl
c3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW06CisgICAgICAg
IChkaXNhYmxlQXBwTmFwSW5VSVByb2Nlc3MpOgorCiAyMDIxLTAyLTI1ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBpbnRlcm5hbCBD
b250ZW50RmlsdGVyaW5nIHRlc3RzIG5vdCB0aW1lIG91dCBhZnRlciByMjcyMjkzCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2YzYmQ1MTlmZTg4MmU4
NGZmZjAxY2E0ZjVmZDU2Yjg3ZWJjZmJlYi4uMzZlYzJjNTI2MzgzYzBlMmFjNjE1YjJjOTcxMjVi
N2NjMTNiOGI0OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2Rl
TGVha3MoY29uc3Qgc3RkOjpzdHJpbmcmIHVybFN0cmluZykKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIHN0YXRpYyBOU1NldCAqYWxsb3dlZEZvbnRGYW1pbHlTZXQoKQogewotICAgIHN0YXRp
YyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6CisgICAgc3Rh
dGljIFJldGFpblB0cjxOU1NldD4gZm9udEZhbWlseVNldCA9IFtOU1NldCBzZXRXaXRoT2JqZWN0
czoKICAgICAgICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBCYXlhbiIsCiAgICAgICAgIEAiQW1l
cmljYW4gVHlwZXdyaXRlciIsCkBAIC00MTAsOSArNDEwLDkgQEAgc3RhdGljIE5TU2V0ICphbGxv
d2VkRm9udEZhbWlseVNldCgpCiAgICAgICAgIEAiV2luZ2RpbmdzIiwKICAgICAgICAgQCJaYXBm
IERpbmdiYXRzIiwKICAgICAgICAgQCJaYXBmaW5vIiwKLSAgICAgICAgbmlsXSByZXRhaW5dOwor
ICAgICAgICBuaWxdOwogCi0gICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQ7CisgICAgcmV0dXJuIGZv
bnRGYW1pbHlTZXQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkK
QEAgLTY0Myw3ICs2NDMsNyBAQCAtICh2b2lkKWRyYXdLbm9iCiAKICAgICBOU1JlY3Qga25vYlJl
Y3QgPSBbc2VsZiByZWN0Rm9yUGFydDpOU1Njcm9sbGVyS25vYl07CiAKLSAgICBzdGF0aWMgTlND
b2xvciAqa25vYkNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweDgwIC8gMjU1
LjAgZ3JlZW46MHg4MCAvIDI1NS4wIGJsdWU6MHg4MCAvIDI1NS4wIGFscGhhOjFdIHJldGFpbl07
CisgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBrbm9iQ29sb3IgPSBbTlNDb2xvciBjb2xv
cldpdGhEZXZpY2VSZWQ6MHg4MCAvIDI1NS4wIGdyZWVuOjB4ODAgLyAyNTUuMCBibHVlOjB4ODAg
LyAyNTUuMCBhbHBoYToxXTsKICAgICBba25vYkNvbG9yIHNldF07CiAKICAgICBOU1JlY3RGaWxs
KGtub2JSZWN0KTsKQEAgLTY1MSw4ICs2NTEsOCBAQCAtICh2b2lkKWRyYXdLbm9iCiAKIC0gKHZv
aWQpZHJhd1JlY3Q6KE5TUmVjdClkaXJ0eVJlY3QKIHsKLSAgICBzdGF0aWMgTlNDb2xvciAqdHJh
Y2tDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VSZWQ6MHhDMCAvIDI1NS4wIGdyZWVu
OjB4QzAgLyAyNTUuMCBibHVlOjB4QzAgLyAyNTUuMCBhbHBoYToxXSByZXRhaW5dOwotICAgIHN0
YXRpYyBOU0NvbG9yICpkaXNhYmxlZFRyYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2
aWNlUmVkOjB4RTAgLyAyNTUuMCBncmVlbjoweEUwIC8gMjU1LjAgYmx1ZToweEUwIC8gMjU1LjAg
YWxwaGE6MV0gcmV0YWluXTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IHRyYWNrQ29s
b3IgPSBbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VSZWQ6MHhDMCAvIDI1NS4wIGdyZWVuOjB4QzAg
LyAyNTUuMCBibHVlOjB4QzAgLyAyNTUuMCBhbHBoYToxXTsKKyAgICBzdGF0aWMgUmV0YWluUHRy
PE5TQ29sb3I+IGRpc2FibGVkVHJhY2tDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aERldmljZVJl
ZDoweEUwIC8gMjU1LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhFMCAvIDI1NS4wIGFscGhh
OjFdOwogCiAgICAgaWYgKFtzZWxmIGlzRW5hYmxlZF0pCiAgICAgICAgIFt0cmFja0NvbG9yIHNl
dF07CkBAIC0xMTQ3LDcgKzExNDcsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlQ29uc2lzdGVudFRl
c3RpbmdFbnZpcm9ubWVudCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNBY3Rpdml0eU9w
dGlvbnMgb3B0aW9ucyA9IChOU0FjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRsZVN5c3Rl
bVNsZWVwIHwgTlNBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCkgJiB+KE5TQWN0aXZpdHlTdWRkZW5U
ZXJtaW5hdGlvbkRpc2FibGVkIHwgTlNBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJs
ZWQpOwotICAgIHN0YXRpYyBpZCBhc3NlcnRpb24gPSBbW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246QCJEdW1wUmVuZGVy
VHJlZSBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBwcmVzc2lvbiJdIHJldGFp
bl07CisgICAgc3RhdGljIFJldGFpblB0cjxpZD4gYXNzZXJ0aW9uID0gW1tOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246QCJE
dW1wUmVuZGVyVHJlZSBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBwcmVzc2lv
biJdOwogICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRpb24pOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNr
TG9vay5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29r
Lm1tCmluZGV4IDFmOTdkMjk0MjIwMmU4MGNkZjMwNjAwZjU2NWJlNGIwZTEzMmVmMDguLjQ1NGNh
M2FkODVjOTNjYjlmYzliM2YyMDJhODVlMTIzZGMzNzRhODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC01MSw3ICs1MSw3
IEBAIHN0YXRpYyBib29sIGlzRG9uZTsKIHN0YXRpYyBib29sIGRvd25sb2FkSXNEb25lOwogCiBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlID0gQCJh
cHBsaWNhdGlvbi9wZGYiOwotc3RhdGljIE5TVVJMICogY29uc3QgcGFnZXNEb2N1bWVudFVSTCA9
IFtbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5z
aW9uOkAicGFnZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl0gcmV0
YWluXTsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHBhZ2VzRG9jdW1lbnRVUkwgPSBbTlNCdW5k
bGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInBhZ2VzIiB3aXRoRXh0ZW5zaW9uOkAicGFn
ZXMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKIEBpbnRlcmZh
Y2UgUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLCBfV0tEb3dubG9hZERlbGVnYXRlPgogLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJ
TEFCTEU7CkBAIC0yODAsOCArMjgwLDggQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHJ1
blRlc3REZWNpZGVBZnRlckxvYWRpbmcoUXVpY2tMb29rRGVsZWdhdGUgKmRlbGVnYXQKIAogVEVT
VChRdWlja0xvb2ssIEFsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGlu
ZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3Vt
ZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSBy
ZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVu
VGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9GQUxTRShb
ZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUg
ZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hRdWlja0xvb2tMb2FkXSk7CkBAIC0yOTAsOCArMjkwLDggQEAgVEVTVChRdWlja0xvb2ssIEFs
bG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIEFsbG93
UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBh
Z2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwotICAg
IHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJM
OnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2
aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
d10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVY
UEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJV
RShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxl
Z2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zMTksOCArMzE5LDggQEAgQGVuZAog
I2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAx
MzA0MDAKIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJl
dmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVz
cG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwotICAgIHJ1blRl
c3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJM
OnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRl
LmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0
KCldKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9uXSk7CiAg
ICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBF
Q1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzI5LDggKzMy
OSw4IEBAIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJl
dmlldykKIAogVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1By
ZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tBc3luY0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHBy
ZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5
OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBydW5UZXN0RGVjaWRlQWZ0
ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBh
Z2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9v
a0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1l
bnRVUkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUg
cmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1
blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9GQUxTRShb
ZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUg
ZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zNDAsOCArMzQwLDggQEAgVEVTVChRdWlja0xvb2ssIEFz
eW5jQWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBD
YW5jZWxSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lDYW5jZWxdKTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5n
ZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25zZVBvbGlj
eTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbF0pOworICAgIHJ1blRlc3REZWNpZGVC
ZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9y
XS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25d
KTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsK
QEAgLTM1Miw4ICszNTIsOCBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VCZWZvcmVM
b2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRl
ckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tM
b29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRV
UkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQ
b2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsKLSAgICBydW5UZXN0RGVj
aWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1
aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3Vt
ZW50VVJMLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBl
IHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAg
cnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0VRKFdl
YktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5h
dmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0
aW9uXSk7CkBAIC0zNjQsOCArMzY0LDggQEAgVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNl
QWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VC
ZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1
aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3Vt
ZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWRd
KTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3Rl
ZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRp
bmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1
bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVy
cnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwog
ICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVY
UEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzc5LDgg
KzM3OSw4IEBAIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1By
ZXZpZXcpCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VBZnRlckxvYWRp
bmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJl
dmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOwotICAgIHJ1blRlc3REZWNpZGVB
ZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tM
b29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRV
UkwuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVz
cG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOworICAgIHJ1
blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9FUShXZWJL
aXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZp
Z2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNo
TmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlv
bl0pOwpAQCAtNDMwLDggKzQzMCw4IEBAIFRFU1QoUXVpY2tMb29rLCBSZXF1ZXN0UGFzc3dvcmRB
ZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgUmVsb2FkQW5kU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbikKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9v
a0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJM
IHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBh
dXRvIHdlYlZpZXcgPSBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKSByZXNwb25zZVBvbGljeTpXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gcnVuVGVz
dERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVs
ZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
RmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hR
dWlja0xvb2tMb2FkXSk7CkBAIC00OTEsNyArNDkxLDcgQEAgVEVTVChRdWlja0xvb2ssIExlZ2Fj
eVF1aWNrTG9va0NvbnRlbnQpCiAKICAgICBXZWJGcmFtZSAqbWFpbkZyYW1lID0gW3dlYlZpZXcg
bWFpbkZyYW1lXTsKIAotICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXV07CisgICAgW21haW5GcmFtZSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCld
XTsKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogCkBAIC01
MDAsNyArNTAwLDcgQEAgVEVTVChRdWlja0xvb2ssIExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZEZpbGVOYW1lOwogICAgIFJldGFpblB0cjxO
U1N0cmluZz4gZXhwZWN0ZWRGaWxlVHlwZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVj
dGVkTUlNRVR5cGU7Ci0gICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTCwgZXhwZWN0ZWRGaWxl
U2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhwZWN0ZWRNSU1FVHlw
ZSwgZXhwZWN0ZWRGaWxlRGF0YSk7CisgICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTC5nZXQo
KSwgZXhwZWN0ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwg
ZXhwZWN0ZWRNSU1FVHlwZSwgZXhwZWN0ZWRGaWxlRGF0YSk7CiAKICAgICBOU0RpY3Rpb25hcnkg
KnF1aWNrTG9va0NvbnRlbnQgPSBtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tMb29rQ29udGVu
dDsKICAgICBOU1N0cmluZyAqZmlsZVBhdGggPSBxdWlja0xvb2tDb250ZW50W1dlYlF1aWNrTG9v
a0ZpbGVOYW1lS2V5XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5t
bQppbmRleCAyZTliMTM0MzllMjg1ZmQyMjdjZmMxOWM1MTczNjUzYzExYjY0N2UyLi42N2E2Njcy
MjIwNWUyZDZmY2M5ZmQ5ZTE5ZjA0MmQ4NTQ3NThmYTgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC02NjksNyArNjY5LDcgQEAgLSAoUmV0YWluUHRy
PE5TQXJyYXk+KXNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUKICAgICBfX2Js
b2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheT4g
c2VsZWN0aW9uUmVjdHM7CiAgICAgW3NlbGYgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRl
Ol4oKSB7Ci0gICAgICAgIHNlbGVjdGlvblJlY3RzID0gYWRvcHROUyhbW3JldGFpbmVkU2VsZiBf
dWlUZXh0U2VsZWN0aW9uUmVjdHNdIHJldGFpbl0pOworICAgICAgICBzZWxlY3Rpb25SZWN0cyA9
IFtyZXRhaW5lZFNlbGYgX3VpVGV4dFNlbGVjdGlvblJlY3RzXTsKICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICB9XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29u
dHJvbGxlcklPUy5tbQppbmRleCBmZGUyZWE5ZWFiY2ViYTYyNGM1ZjhjM2ZiODk3N2NkM2Y3MDA1
OTBkLi44YWUxZmI3M2ZiNjI4YmZiZmNkN2QyY2Y4NzRhMTkxNmIyY2ZlMjljIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMzE2LDEy
ICszMTYsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCgpCiAKIGNvbnN0IGNo
YXIqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpCiB7Ci0g
ICAgc3RhdGljIE5TU3RyaW5nICpwbGF0Zm9ybUxpYnJhcnlQYXRoID0gbmlsOworICAgIHN0YXRp
YyBSZXRhaW5QdHI8TlNTdHJpbmc+IHBsYXRmb3JtTGlicmFyeVBhdGg7CiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewotICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW1tAIn4vTGlicmFyeS9BcHBsaWNhdGlv
biBTdXBwb3J0L1dlYktpdFRlc3RSdW5uZXIiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhd
IHJldGFpbl07CisgICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbQCJ+L0xpYnJhcnkvQXBw
bGljYXRpb24gU3VwcG9ydC9XZWJLaXRUZXN0UnVubmVyIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRl
SW5QYXRoXTsKICAgICB9KTsKLSAgICByZXR1cm4gcGxhdGZvcm1MaWJyYXJ5UGF0aC5VVEY4U3Ry
aW5nOworICAgIHJldHVybiBbcGxhdGZvcm1MaWJyYXJ5UGF0aCBVVEY4U3RyaW5nXTsKIH0KIAog
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKGJvb2wpCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDg1YTJjNzRkMmQ4YjcwYWNl
YjhlMWYxMjdhZmVlYThkNTJlMjc3YTkuLjhhYzY0YjM3ZTI1MmQ1OGVhYzk0M2RlNGMzMTg4ZjRh
N2E0OWFkZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1Db25maWd1cmVWaWV3Rm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIAogc3Rh
dGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpm
b250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAgICBzdGF0aWMgUmV0YWlu
UHRyPE5TU2V0PiBmb250RmFtaWx5U2V0ID0gW05TU2V0IHNldFdpdGhPYmplY3RzOgogICAgICAg
ICBAIkFoZW0iLAogICAgICAgICBAIkFsIEJheWFuIiwKICAgICAgICAgQCJBbWVyaWNhbiBUeXBl
d3JpdGVyIiwKQEAgLTM1NSwxOCArMzU1LDE4IEBAIHN0YXRpYyBOU1NldCAqYWxsb3dlZEZvbnRG
YW1pbHlTZXQoKQogICAgICAgICBAIldpbmdkaW5ncyIsCiAgICAgICAgIEAiWmFwZiBEaW5nYmF0
cyIsCiAgICAgICAgIEAiWmFwZmlubyIsCi0gICAgICAgIG5pbF0gcmV0YWluXTsKKyAgICAgICAg
bmlsXTsKIAotICAgIHJldHVybiBmb250RmFtaWx5U2V0OworICAgIHJldHVybiBmb250RmFtaWx5
U2V0LmdldCgpOwogfQogCiBzdGF0aWMgTlNTZXQgKnN5c3RlbUhpZGRlbkZvbnRGYW1pbHlTZXQo
KQogewotICAgIHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0V2l0aE9i
amVjdHM6CisgICAgc3RhdGljIFJldGFpblB0cjxOU1NldD4gZm9udEZhbWlseVNldCA9IFtOU1Nl
dCBzZXRXaXRoT2JqZWN0czoKICAgICAgICAgQCIuTHVjaWRhR3JhbmRlVUkiLAotICAgICAgICBu
aWxdIHJldGFpbl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZhbWlseVNldDsK
KyAgICByZXR1cm4gZm9udEZhbWlseVNldC5nZXQoKTsKIH0KIAogc3RhdGljIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IGdlbmVyYXRlRm9udEFsbG93TGlzdCgpCkBAIC00MzAsMTIgKzQzMCwxMiBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIAogY29uc3QgY2hhciogVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKIHsKLSAgICBzdGF0aWMg
TlNTdHJpbmcgKnBsYXRmb3JtTGlicmFyeVBhdGggPSBuaWw7CisgICAgc3RhdGljIFJldGFpblB0
cjxOU1N0cmluZz4gcGxhdGZvcm1MaWJyYXJ5UGF0aDsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAg
IHBsYXRmb3JtTGlicmFyeVBhdGggPSBbW0Aifi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv
RHVtcFJlbmRlclRyZWUiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIHJldGFpbl07Cisg
ICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbQCJ+L0xpYnJhcnkvQXBwbGljYXRpb24gU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZSIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CiAgICAg
fSk7Ci0gICAgcmV0dXJuIHBsYXRmb3JtTGlicmFyeVBhdGguVVRGOFN0cmluZzsKKyAgICByZXR1
cm4gW3BsYXRmb3JtTGlicmFyeVBhdGggVVRGOFN0cmluZ107CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0KaW5kZXggNDkxNDMxM2IxODliYzg1ZTFi
OTc4ZGMzNTY5YjdkYmVmNzU0NjUwMy4uZWRkMTI2OTcyODE5M2M4OWQ4YjI5ZDQyNjczMGZlNTE1
OGIwMWExMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tCkBAIC01NCw3ICs1NCw3IEBA
IHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiBz
dGF0aWMgdm9pZCBkaXNhYmxlQXBwTmFwSW5VSVByb2Nlc3MoKQogewogICAgIE5TQWN0aXZpdHlP
cHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0
ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVu
VGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2Fi
bGVkKTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiV2ViS2l0VGVz
dFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBwcmVzc2lvbiJdIHJl
dGFpbl07CisgICAgc3RhdGljIFJldGFpblB0cjxpZD4gYXNzZXJ0aW9uID0gW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6b3B0aW9ucyByZWFzb246
QCJXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHBy
ZXNzaW9uIl07CiAgICAgQVNTRVJUX1VOVVNFRChhc3NlcnRpb24sIGFzc2VydGlvbik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421599</attachid>
            <date>2021-02-25 19:22:19 -0800</date>
            <delta_ts>2021-02-26 15:31:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222439-20210225192218.patch</filename>
            <type>text/plain</type>
            <size>76609</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTA0OGRiN2M3ZGE2ODdkN2MxZjk2NDI2OTIxNDJiNDhmZDBiNjViLi5kMzYyYjUzNDhkYzE2MDgz
ZTYwY2FlYzY0MjM0NTZkZWI0M2RmMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKCtbSlNDb250
ZXh0IGN1cnJlbnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGJlZ2luQ2FsbGJh
Y2tXaXRoRGF0YTpjYWxsZWVWYWx1ZTp0aGlzVmFsdWU6YXJndW1lbnRDb3VudDphcmd1bWVudHM6
XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBlbmRDYWxsYmFja1dpdGhEYXRhOl0pOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBp
Lm1tOgorICAgICAgICAoLVtUaW55RE9NTm9kZSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgor
CiAyMDIxLTAyLTI1ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBMaXN0IG9mIGdyaWQgbm9kZXMgaXMgaW5jb21wbGV0ZSBpbiBM
YXlvdXQgc2lkZWJhciBwYW5lbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNWYxMTIxYTg1ZjJhY2JkOWRhMzAz
MWQ3ODc3Y2Q5ZmRkMzIzYjEuLjlhNTI2NzdkNzc5NDZhMTE2ODAyYjQ1YjMyNTM2ZDQxN2E5YTZh
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4g
V2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORF0pOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc3VsdElzVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChXZWJEZWZhdWx0Rm9udCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlRGVjb2RlckFzc2V0T3B0aW9ucyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjp0ZW1wb3JhcnlE
aXJlY3RvcnlBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlv
bk1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIGNoZWNrQ2xpZW50
U3RhdHVzXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoU2VuZE1lc3NhZ2UpOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRDYWxsRGVs
ZWdhdGUpOgorICAgICAgICAoV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKToKKyAgICAgICAgKFJ1
bldlYlRocmVhZCk6CisgICAgICAgIChXZWJUaHJlYWROU1J1bkxvb3ApOgorCiAyMDIxLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWFrZSBpbnRlcm5hbCBDb250ZW50RmlsdGVyaW5nIHRlc3RzIG5vdCB0aW1lIG91dCBhZnRlciBy
MjcyMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGRhNjM2YmRjMzUyNTc3NmE0OGI1MzIxY2RjYjRlZmFhMGE0NGI0
YzkuLjJmYzAwZGFjNmMyMmFmM2Y3MDY3MDQyZTA2ZjJiOGUxMmIwOGM5YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdCBieSB1c2luZyBS
ZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9E
b3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmlzRmVhdHVyZUZsYWdFbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAg
IChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
LVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5EXSk6CisKIDIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViQ29udGVudCBzYW5kYm94IHRvIGFsbG93IGl0IHRv
IGNhbGwgdGFza19jcmVhdGVfaWRlbnRpdHlfdG9rZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGM0NmYyNDY3ODQ5OWJmZWMxOWZiNTMwNWZlYTY2YTQ3NWY3YzFjZmEuLjFhYzU1
ZWQ1MTBiYTY5OWJhM2FiOWM1N2UyZjkyNGYwNmU4MDQ4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBy
ZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0
IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lXSk6CisgICAg
ICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dlYlN0cmluZ1Ry
dW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5hZ2VyIF9z
dG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKF9XZWJDcmVhdGVGcmFnbWVudCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOgorICAgICAgICAoK1tXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKyAgICAgICAgKCtb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tOgorICAgICAgICAoV2Vi
S2l0Ojppc0ZlYXR1cmVGbGFnRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jaGVja0RpZFBlcmZvcm1GaXJzdE5h
dmlnYXRpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQcmVmZXJlbmNlczpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBwcmVmZXJlbmNlc10pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEdyb3Vw
TmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMjEtMDItMjUg
IFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MzQ2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
aW5kZXggZTNhZjBiMTQxZGU4MTdkMjg3NThiMzAzODAxMWMyZDFlY2NhMzYyYi4uMGJhNzk5MWVm
N2IyN2RhZTI1NTFkNjA0ZWZjM2RjN2IzMzJjM2JkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KQEAgLTI0MiwxMyArMjQyLDEzIEBAICsgKE5TQXJyYXkgKiljdXJyZW50
QXJndW1lbnRzCiAgICAgaWYgKCFlbnRyeS0+Y3VycmVudEFyZ3VtZW50cykgewogICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICAgICAg
c2l6ZV90IGNvdW50ID0gZW50cnktPmFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIE5TTXV0YWJsZUFy
cmF5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNvdW50XTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6
W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+YXJndW1lbnRzW2ldIGluQ29udGV4
dDpjb250ZXh0XSBhdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIGVudHJ5LT5jdXJyZW50
QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICBlbnRyeS0+Y3VycmVudEFyZ3VtZW50cyA9
IFdURk1vdmUoYXJndW1lbnRzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZW50cnktPmN1cnJlbnRB
cmd1bWVudHM7CisgICAgcmV0dXJuIGVudHJ5LT5jdXJyZW50QXJndW1lbnRzLmdldCgpOwogfQog
CiAtIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTM3MSw3ICszNzEsNyBA
QCAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tE
YXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUgogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFj
ayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwotICAgICpjYWxsYmFja0RhdGEg
PSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWlu
XSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwg
fTsKKyAgICAqY2FsbGJhY2tEYXRhID0gQ2FsbGJhY2tEYXRhIHsgcHJldlN0YWNrLCBzZWxmLCBz
ZWxmLmV4Y2VwdGlvbiwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJn
dW1lbnRzLCBuaWwgfTsKICAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOwogICAg
IHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQpAQCAtMzc5LDkgKzM3OSw3IEBAIC0gKHZvaWQpYmVn
aW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEgY2FsbGVlVmFs
dWU6KEpTVmFsdWVSCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxiYWNrRGF0YSAq
KWNhbGxiYWNrRGF0YQogewogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
Ci0gICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsK
LSAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07Ci0gICAgW2Nh
bGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKKyAgICBzZWxmLmV4Y2VwdGlv
biA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhjZXB0aW9uLmdldCgpOwogICAgIHRocmVhZC5t
X2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKaW5kZXggOTU4
YzQ3OWY0MWNlODQxM2ZjNjk0YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uNDRjNWY1OGUzYWMxMTA0MDRl
MDM3YjU2OTM4NjFjYzIyZDE4MDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0SW50ZXJuYWwuaApAQCAtMzIsMTIgKzMyLDEyIEBACiBzdHJ1Y3QgQ2FsbGJhY2tE
YXRhIHsKICAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpjb250ZXh0Owot
ICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8SlNWYWx1ZT4g
cHJlc2VydmVkRXhjZXB0aW9uOwogICAgIEpTVmFsdWVSZWYgY2FsbGVlVmFsdWU7CiAgICAgSlNW
YWx1ZVJlZiB0aGlzVmFsdWU7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQ7CiAgICAgY29uc3Qg
SlNWYWx1ZVJlZiAqYXJndW1lbnRzOwotICAgIE5TQXJyYXkgKmN1cnJlbnRBcmd1bWVudHM7Cisg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGN1cnJlbnRBcmd1bWVudHM7CiB9OwogCiBAY2xhc3MgSlNX
cmFwcGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmlu
ZGV4IGI3OWFiMmJjM2FmMWJjNTNlOGM4MThhMjMzZGIwNzM2ODRiZWIxZDEuLmZmNDdkNjE0MjI4
YWNhMDk3YTViNDViNTc5YWZlYzUyOTNiMjcyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9NZW1v
cnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL0Rh
dGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJDIiB2b2lkIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwogZXh0
ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRl
eHRSZWYpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRpbnlE
T01Ob2RlIHsKICAgICBOU011dGFibGVBcnJheSAqbV9jaGlsZHJlbjsKLSAgICBKU1ZpcnR1YWxN
YWNoaW5lICptX3NoYXJlZFZpcnR1YWxNYWNoaW5lOworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxN
YWNoaW5lPiBtX3NoYXJlZFZpcnR1YWxNYWNoaW5lOwogfQogCiAtIChpZClpbml0V2l0aFZpcnR1
YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTIyOCw5ICsy
MjksNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICop
dmlydHVhbE1hY2hpbmUKIAogICAgIG1fY2hpbGRyZW4gPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OjBdOwogICAgIG1fc2hhcmVkVmlydHVhbE1hY2hpbmUgPSB2aXJ0
dWFsTWFjaGluZTsKLSNpZiAhX19oYXNfZmVhdHVyZShvYmpjX2FyYykKLSAgICBbbV9zaGFyZWRW
aXJ0dWFsTWFjaGluZSByZXRhaW5dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODFhODljZTRhMjJiNmRm
ZTM1ZjMyMTQxMjAyNWJlMTZkZmRlMGY1MS4uM2U3NGU4ZjRhMGEwNGNiZDJlMTY3Y2VmZjViNjJh
Njc5NzJhM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTExNTQsMjkgKzExNTQsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQgU2Nyb2xsVG9W
aXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZlcnNpb25zIGRv
IG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMgdGhlbSB0byBz
ZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRFbGVtZW50QWN0
aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlT
Y3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gQFtOU0FjY2Vzc2li
aWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlQWN0aW9u
XTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAvLyBUaGUgb3Jk
ZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUgJ2RlZmF1bHQn
IGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQg
YWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0aW9uRWxlbWVu
dEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5
U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFjdGlvbl0gcmV0
YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBhY3Rp
b25FbGVtZW50QWN0aW9ucyA9IEBbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNz
aWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rp
b25dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2FuY2VsLgotICAg
IHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVsZW1lbnRBY3Rp
b25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0aW9uXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IG1lbnVF
bGVtZW50QWN0aW9ucyA9IFthY3Rpb25FbGVtZW50QWN0aW9ucy5nZXQoKSBhcnJheUJ5QWRkaW5n
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl07CiAKICAgICAvLyBTbGlkZXIgZWxl
bWVudHMgYWxsb3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNBcnJheSAqc2xp
ZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Rz
RnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNBcnJheT4+IHNsaWRlckFjdGlvbnMgPSBbZGVmYXVsdEVsZW1lbnRBY3Rpb25z
LmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5j
cmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXTsKIAogICAgIE5T
QXJyYXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRzUHJlc3NBY3Rp
b24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRBY3Rpb25zOworICAgICAgICBh
Y3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNNZW51UmVsYXRlZCgpKQotICAgICAgICBhY3Rpb25zID0gbWVudUVs
ZW1lbnRBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gbWVudUVsZW1lbnRBY3Rpb25zLmdldCgp
LmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAg
IGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gc2xpZGVyQWN0aW9u
cy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQo
KSkKICAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUFjdGlvbk5hbWVzXTsKICAgICBlbHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVu
dEFjdGlvbnM7CisgICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlvbnMuZ2V0KCku
Z2V0KCk7CiAKICAgICByZXR1cm4gYWN0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA4NjMzZTE2ZTU0MjQ3OGVlN2I0NTA2OGI0
NWRmNGFiZWFhM2Q0MzdkLi41NDc5NzQ0MTk2YWY5OGI3NmY0MTc5MDM2ZWU1M2NjMTJiYzAwOWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBA
IC0yMTUsOCArMjE1LDEzIEBAIHN0YXRpYyBCT09MIHJlc3VsdElzVVJMKEREUmVzdWx0UmVmIHJl
c3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHN0
YXRpYyBOU1NldCAqdXJsVHlwZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOiAoTlNTdHJpbmcg
KilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJIdHRwVVJMS2V5KCksIChOU1N0cmluZyAq
KWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlcldlYlVSTEtleSgpLCAoTlNTdHJpbmcgKiln
ZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJNYWlsVVJMS2V5KCksIChOU1N0cmluZyAqKWdl
dF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckdlbmVyaWNVUkxLZXkoKSwgKE5TU3RyaW5nICop
Z2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyRW1haWxLZXkoKSwgbmlsXSByZXRhaW5dOwot
ICAgIHJldHVybiBbdXJsVHlwZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRUeXBlKHJlc3VsdCldOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiB1cmxUeXBlcyA9IFtOU1NldCBzZXRXaXRo
T2JqZWN0czoKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmlu
ZGVySHR0cFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0Nv
cmVfRERCaW5kZXJXZWJVUkxLZXkoKSwKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRl
Y3RvcnNDb3JlX0REQmluZGVyTWFpbFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRf
RGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJHZW5lcmljVVJMS2V5KCksCisgICAgICAgIChOU1N0
cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckVtYWlsS2V5KCksIG5pbF07Cisg
ICAgcmV0dXJuIFt1cmxUeXBlcy5nZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07CiB9CiAKIHN0
YXRpYyBOU1N0cmluZyAqY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KEREUmVzdWx0UmVmIGN1
cnJlbnRSZXN1bHQsIE5TU3RyaW5nICpyZXN1bHRJZGVudGlmaWVyLCBOU0RhdGUgKnJlZmVyZW5j
ZURhdGUsIE5TVGltZVpvbmUgKnJlZmVyZW5jZVRpbWVab25lLCBPcHRpb25TZXQ8RGF0YURldGVj
dG9yVHlwZT4gZGV0ZWN0aW9uVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDNiZDJkNmViYTNiMzVmZTZkYzM5NTMyMjZmYmQ4ZDU2
MGJlY2ZlOS4uMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNDE1LDE2
ICs0MTUsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIC8v
IFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUgTlNGb250QXR0cmlidXRlTmFtZSBk
b2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiB7Ci0gICAgc3Rh
dGljIE5TRm9udCAqZGVmYXVsdEZvbnQgPSBuaWw7Ci0gICAgaWYgKGRlZmF1bHRGb250KQotICAg
ICAgICByZXR1cm4gZGVmYXVsdEZvbnQ7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZv
bnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07Ci0gICAgaWYgKCFmb250KQotICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLQotICAgIGRlZmF1bHRGb250
ID0gW2ZvbnQgcmV0YWluXTsKLSAgICByZXR1cm4gZGVmYXVsdEZvbnQ7CisgICAgc3RhdGljIGF1
dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBOU0ZvbnQg
KmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07CisgICAg
ICAgIGlmICghZm9udCkKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNp
emU6MTJdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZvbnQpOworICAgIH0oKSk7CisgICAg
cmV0dXJuIGRlZmF1bHRGb250LmdldCgpLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU3ZjIxYzU4ODg5YjY3
NjM4Y2RjMjhhNDExNTQyZmFjZmU1MjAyNjMuLmYzNjljZjBjMjlmNjY5ZGNmMmZhZGY4YTVkY2E5
YzI4MTJiZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjI1LDEzICsyMjUsMTEgQEAgc3RhdGljIE5TVVJMICpjdXN0b21TY2hlbWVV
UkwoKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICppbWFnZURlY29kZXJBc3NldE9wdGlvbnMoKQog
ewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbXSB7Ci0gICAgICAgIHJldHVy
biBbQHsKLSAgICAgICAgICAgIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXk6IEAo
QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkQWxsKSwKLSAgICAgICAgICAgIEFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXk6IEBZRVMsCi0gICAgICAgIH0gcmV0YWluXTsK
LSAgICB9KCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBvcHRpb25zID0gQHsKKyAgICAgICAgQVZVUkxBc3Nl
dFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25G
b3JiaWRBbGwpLAorICAgICAgICBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5OiBA
WUVTLAorICAgIH07CisgICAgcmV0dXJuIG9wdGlvbnMuZ2V0KCkuZ2V0KCk7CiB9CiAKIGNsYXNz
IEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUgOiBwdWJsaWMgTWVkaWFTYW1wbGVBVkZPYmpDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpp
bmRleCBkOTMxZDZjYWVhZDAwZjdhYzdiMDg4YjM4OWEwNGE4YjUzMTMwZjJmLi5kNDQ5YzQ4MjQ5
NTg1MTY0MGRhOTNkNWNiOWVhYjY2Mzc2MTg4MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBO
U0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAoY29sb3IuaXNJbmxp
bmUoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgY29sb3IuYXNJbmxp
bmUoKSB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgTlNDb2xvciAq
Y2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAg
YWxwaGE6MF0gcmV0YWluXTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOworICAgICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gY2xlYXJDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYTowXTsK
KyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52YWx1ZTogewot
ICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JX
aXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0gICAgICAgICAg
ICByZXR1cm4gYmxhY2tDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVk
OjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV07CisgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3
aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYToxXSByZXRhaW5dOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7CisgICAgICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ29sb3I+PiB3aGl0ZUNvbG9y
ID0gW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdOwor
ICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmlu
ZGV4IDJlMjQ3YTZlNTNkZDA1YWIxOTBlZDk2ZGRhMmExYWU2ZGFkYzk4YWYuLmE1ZDJmNzM2YzJl
ZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQpAQCAtNDEsOCArNDEsOCBAQCBjb25zdCBjaGFyKiBRTFByZXZpZXdQ
cm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKIAogTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpzZXQgPSBbUEFMOjpzb2Z0TGlu
a19RdWlja0xvb2tfUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzKCkgcmV0YWluXTsKLSAg
ICByZXR1cm4gc2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+
PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1F
VHlwZXMoKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgTG9jayBx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jazsKQEAgLTEwMiwyMSArMTAyLDIxIEBAIGJv
b2wgaXNRdWlja0xvb2tQcmV2aWV3VVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcygpCiB7Ci0gICAgc3RhdGljIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IFtAeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5Pj4gYXR0cmlidXRlcyA9IEB7CiAgICAgICAgIE5TRmlsZU93bmVyQWNj
b3VudE5hbWUgOiBOU1VzZXJOYW1lKCksCiAgICAgICAgIE5TRmlsZVBvc2l4UGVybWlzc2lvbnMg
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6KFdFQl9VUkVBRCB8IFdFQl9VV1JJVEUpXSwK
LSAgICAgICAgfSByZXRhaW5dOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMgPSBbQHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICBOU0ZpbGVPd25lckFjY291
bnROYW1lIDogTlNVc2VyTmFtZSgpLAogICAgICAgICBOU0ZpbGVQb3NpeFBlcm1pc3Npb25zIDog
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOihXRUJfVVJFQUQgfCBXRUJfVVdSSVRFIHwgV0VC
X1VFWEVDKV0sCiAgICAgICAgIE5TRmlsZVByb3RlY3Rpb25LZXkgOiBOU0ZpbGVQcm90ZWN0aW9u
Q29tcGxldGVVbmxlc3NPcGVuLAotICAgICAgICB9IHJldGFpbl07Ci0gICAgcmV0dXJuIGF0dHJp
YnV0ZXM7CisgICAgfTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAog
TlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJpbmcgKmZpbGVO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rp
b25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25N
YW5hZ2VyLm1tCmluZGV4IDI3YjQyNDhjNjc5N2IyYzdmNjIzNWViZTFlYjRiZTZjYzMzZjUxODMu
LmVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0KQEAgLTE3
OCwxMyArMTc4LDggQEAgLSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAgICBpZiAobV9o
ZWFkaW5nQXZhaWxhYmxlKQogICAgICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2VyIHN0YXJ0VXBk
YXRpbmdIZWFkaW5nXTsKIAotICAgICAgICBpZiAoIW1fdXBkYXRlVGltZXIpIHsKLSAgICAgICAg
ICAgIG1fdXBkYXRlVGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVy
dmFsOmtNb3Rpb25VcGRhdGVJbnRlcnZhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6c2VsZgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6
QHNlbGVjdG9yKHVwZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6WUVTXSByZXRh
aW5dOwotICAgICAgICB9CisgICAgICAgIGlmICghbV91cGRhdGVUaW1lcikKKyAgICAgICAgICAg
IG1fdXBkYXRlVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6
a01vdGlvblVwZGF0ZUludGVydmFsIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRh
dGUpIHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU107CiAgICAgfSBlbHNlIHsKICAgICAgICAgW21f
dXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5k
ZXggMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MC4uNjYwMDc2YWRmNzY2
Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9y
dCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
I2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CkBAIC0xMTEsNyArMTEyLDYgQEAgc3RhdGlj
IFJlY3Vyc2l2ZUxvY2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCiBzdGF0aWMgdm9pZCogYXV0b3Jl
bGVhc2VQb29sTWFyazsKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgd2ViVGhyZWFkUnVuTG9vcDsKLXN0
YXRpYyBOU1J1bkxvb3AqIHdlYlRocmVhZE5TUnVuTG9vcDsKIHN0YXRpYyBwdGhyZWFkX3Qgd2Vi
VGhyZWFkOwogc3RhdGljIEJPT0wgaXNXZWJUaHJlYWRMb2NrZWQ7CiBzdGF0aWMgQk9PTCB3ZWJU
aHJlYWRTdGFydGVkOwpAQCAtMTI3LDExICsxMjcsOCBAQCB0eXBlZGVmIGVudW0gewogc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwogc3RhdGljIENGTXV0
YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKIAotc3RhdGljIHZvaWQgTWFp
blRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopOwotCiBzdGF0aWMgTG9jayBkZWxlZ2F0ZUxv
Y2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwotc3RhdGljIE5T
SW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOwogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJl
ZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7
CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKQEAgLTE2MSwxNCArMTU4LDMwIEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBzQXN5bmNEZWxlZ2F0ZXMoKQogICAgIHJldHVy
biBhc3luY0RlbGVnYXRlczsKIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1J1bkxvb3A+JiB3ZWJU
aHJlYWROU1J1bkxvb3AoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNSdW5Mb29wPj4gd2ViVGhyZWFkTlNSdW5Mb29wOworICAgIHJldHVybiB3ZWJUaHJlYWROU1J1
bkxvb3A7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYgZGVsZWdhdGVJbnZv
Y2F0aW9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TSW52b2Nh
dGlvbj4+IGRlbGVnYXRlSW52b2NhdGlvbjsKKyAgICByZXR1cm4gZGVsZWdhdGVJbnZvY2F0aW9u
OworfQorCiBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSB1bnNpZ25lZCB3ZWJUaHJlYWREZWxlZ2F0
ZU1lc3NhZ2VTY29wZUNvdW50ID0gMDsKIAogc3RhdGljIGJvb2wgcGVyQ2FsbG91dEF1dG9yZWxl
YXNlcG9vbEVuYWJsZWQ7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShOU0ludm9j
YXRpb24qIGludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2UoUmV0YWlu
UHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9uIGludm9r
ZV07Ci0gICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKKworICAgIGlm
ICghV2ViVGhyZWFkSXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFpbigpID09IENGUnVuTG9v
cEdldEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtpbnZvY2F0aW9uID0gV1RGTW92ZShpbnZvY2F0aW9uKV0geyB9KTsKIH0KIAogc3Rh
dGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCopCkBAIC0xODUsMTUgKzE5OCwxNSBA
QCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkKikKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOwogCiAjaWYgTE9HX01FU1NBR0VTCi0gICAg
ICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90
aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKKyAgICAgICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0
aW9uKCkgdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11d
KSB7CiAgICAgICAgICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgICAgICBbZGVsZWdhdGVJbnZv
Y2F0aW9uIGdldEFyZ3VtZW50OiZhcmd1bWVudDAgYXRJbmRleDowXTsKKyAgICAgICAgICAgIFtk
ZWxlZ2F0ZUludm9jYXRpb24oKSBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CiAg
ICAgICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAl
QCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7
CisgICAgICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVAIiwgTlNTdHJpbmdGcm9t
U2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSkpOwogI2VuZGlmCiAKLSAg
ICAgICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsKKyAgICAgICAgU2VuZE1lc3Nh
Z2UoV1RGTW92ZShkZWxlZ2F0ZUludm9jYXRpb24oKSkpOwogCiAgICAgICAgIGRlbGVnYXRlSGFu
ZGxlZCA9IFlFUzsKICAgICAgICAgZGVsZWdhdGVDb25kaXRpb24ubm90aWZ5T25lKCk7CkBAIC0y
MTQsMjYgKzIyNywyNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotc3RhdGljIHZvaWQgU2VuZERl
bGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCitzdGF0aWMgdm9pZCBTZW5k
RGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKIHsK
ICAgICBpZiAoIVdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFNlbmRNZXNzYWdlKGlu
dm9jYXRpb24pOworICAgICAgICBTZW5kTWVzc2FnZShXVEZNb3ZlKGludm9jYXRpb24pKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSk7CiAgICAg
ZGVsZWdhdGVMb2NrLmxvY2soKTsKIAotICAgIGRlbGVnYXRlSW52b2NhdGlvbiA9IGludm9jYXRp
b247CisgICAgZGVsZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGludm9jYXRpb24pOwogICAg
IGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAjaWYgTE9HX01FU1NBR0VTCi0gICAgaWYgKFtbZGVs
ZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50
ZXIgY2xhc3NdXSkgeworICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbigpIHRhcmdldF0gaXNL
aW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBh
cmd1bWVudDA7Ci0gICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3Vt
ZW50MCBhdEluZGV4OjBdOworICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uKCkgZ2V0QXJndW1l
bnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiBz
ZW5kOiAlQCIsIGFyZ3VtZW50MCk7CiAgICAgfSBlbHNlCi0gICAgICAgIE5TTG9nKEAiZGVsZWdh
dGUgc2VuZDogJUAiLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNl
bGVjdG9yXSkpOworICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHNlbmQ6ICVAIiwgTlNTdHJpbmdG
cm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSkpOwogI2VuZGlmCiAK
ICAgICB7CkBAIC0yNDgsMTAgKzI2MSwxMCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNz
YWdlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhh
bmRsZWQpIHsKICAgICAgICAgICAgIGlmICghZGVsZWdhdGVDb25kaXRpb24ud2FpdEZvcihkZWxl
Z2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgewogICAgICAgICAgICAgICAgIGlkIGRl
bGVnYXRlSW5mb3JtYXRpb247Ci0gICAgICAgICAgICAgICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0
aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkK
LSAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1bWVudDomZGVs
ZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAgICAgICAgIGlmIChbW2RlbGVn
YXRlSW52b2NhdGlvbigpIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50
ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbigpIGdl
dEFyZ3VtZW50OiZkZWxlZ2F0ZUluZm9ybWF0aW9uIGF0SW5kZXg6MF07CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJp
bmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pOworICAgICAgICAg
ICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2Rl
bGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSk7CiAgICAgCiAgICAgICAgICAgICAgICAgQ0ZT
dHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxvb3BHZXRNYWlu
KCkpOwogICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkgZmFpbGVkIHRv
IHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4gcnVuIGxvb3AgbW9kZTogJUAi
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdhaXRJ
bnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwpAQCAtMjgyLDE5ICsyOTUsNiBAQCB2b2lkIFdlYlRo
cmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAgIF9XZWJUaHJl
YWRMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQg
b2JqKQotewotICAgIGF1dG8gYWRvcHRlZE9iaiA9IGFkb3B0TlMob2JqKTsKLSAgICBpZiAoIVdl
YlRocmVhZElzRW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4oKSA9PSBDRlJ1bkxvb3BHZXRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLSNpZiBMT0dfUkVMRUFTRVMKLSAgICBOU0xvZyhA
IlJlbGVhc2Ugc2VuZCBbd2ViIHRocmVhZF0gOiAlQCIsIG9iaik7Ci0jZW5kaWYKLSAgICAvLyBX
ZSBvd24gb2JqIGF0IHRoaXMgcG9pbnQsIHNvIHdlIGRvbid0IG5lZWQgdGhlIGJsb2NrIHRvIGlt
cGxpY2l0bHkKLSAgICAvLyByZXRhaW4gaXQuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFthZG9wdGVkT2JqID0gV1RGTW92ZShhZG9wdGVkT2JqKV0geyB9KTsKLX0KLQogdm9pZCBXZWJU
aHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFTU0VSVCghV2ViVGhyZWFkSXND
dXJyZW50KCkpOwpAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVh
ZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB2b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0ZShOU0ludm9j
YXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgLy8gTlNJbnZvY2F0aW9uIHJlbGVhc2VkIGluIFNl
bmRNZXNzYWdlKCkKLSAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKFtpbnZvY2F0aW9uIHJldGFpbl0p
OworICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoaW52b2NhdGlvbik7CiB9CiAKIHZvaWQgV2ViVGhy
ZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyogbmFtZSwgaWQgb2JqZWN0LCBpZCB1c2VySW5m
bykKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5sb2NrSW50ZXJu
YWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBvb2xPcGVyYXRpb24pCiAgICAgQVNTRVJUKHNB
c3luY0RlbGVnYXRlcygpKTsKICAgICBpZiAoW3NBc3luY0RlbGVnYXRlcygpIGNvdW50XSkgewog
ICAgICAgICBmb3IgKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbiBpbiBzQXN5bmNEZWxlZ2F0ZXMo
KS5nZXQoKSkKLSAgICAgICAgICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoW2ludm9jYXRpb24gcmV0
YWluXSk7CisgICAgICAgICAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKGludm9jYXRpb24pOwogICAg
ICAgICBbc0FzeW5jRGVsZWdhdGVzKCkgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAgfQogCkBAIC02
MzIsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKIAogICAgIHdl
YlRocmVhZENvbnRleHQgPSBDdXJyZW50VGhyZWFkQ29udGV4dCgpOwogICAgIHdlYlRocmVhZFJ1
bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgd2ViVGhyZWFkTlNSdW5Mb29wID0g
W1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJldGFpbl07CisgICAgd2ViVGhyZWFkTlNSdW5M
b29wKCkgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKIAogICAgIENGUnVuTG9vcE9ic2Vy
dmVyUmVmIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0
ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJj
ZXMgfCBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxs
cHRyKTsKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5M
b29wTG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtODk4LDggKzg5
OCw4IEBAIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpCiBOU1J1bkxvb3AqIFdl
YlRocmVhZE5TUnVuTG9vcCh2b2lkKQogewogICAgIGlmICh3ZWJUaHJlYWRTdGFydGVkKSB7Ci0g
ICAgICAgIEFTU0VSVCh3ZWJUaHJlYWROU1J1bkxvb3ApOwotICAgICAgICByZXR1cm4gd2ViVGhy
ZWFkTlNSdW5Mb29wOworICAgICAgICBBU1NFUlQod2ViVGhyZWFkTlNSdW5Mb29wKCkpOworICAg
ICAgICByZXR1cm4gd2ViVGhyZWFkTlNSdW5Mb29wKCkuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0
dXJuIFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0K
aW5kZXggNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2Mi4uOGNjZTI5NTU0
YzBiNTYyM2NjOTdkYjlkNDgyN2M5YTEyY2VhMGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCkBAIC01MSwxNSArNTEsMTUgQEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAogCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzM0NzQ1MTcxPi4gRml4ZWQgaW4gaU9TIDEzIGFuZCBtYWNPUyAxMC4xNSwgYnV0IHdlIHN0aWxs
IG5lZWQgdG8gc3VwcG9ydCBtYWNPUyAxMC4xNCBmb3Igbm93LgogI2lmIFVTRShMRUdBQ1lfQ0ZO
RVRXT1JLX0RPV05MT0FEUykKLSAgICBzdGF0aWMgTlNTZXQ8Q2xhc3M+ICpwbGlzdENsYXNzZXMg
PSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1NldDxDbGFzcz4+
PiBwbGlzdENsYXNzZXM7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAK
ICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHBsaXN0Q2xhc3NlcyA9
IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNs
YXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10s
IFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIHJldGFpbl07CisgICAg
ICAgIHBsaXN0Q2xhc3Nlcy5nZXQoKSA9IFtOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9u
YXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIg
Y2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFz
c10sIG5pbF07CiAgICAgfSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOm5zRGF0YS5nZXQoKSBl
cnJvcjpuaWxdKTsKICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNE
ZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07Ci0gICAgYXV0byBkaWN0aW9uYXJ5
ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZl
ciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6cGxpc3RDbGFzc2VzIGZvcktleTpAIk5TS2V5ZWRBcmNo
aXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgIGF1dG8gZGljdGlvbmFyeSA9
IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIg
ZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOnBsaXN0Q2xhc3Nlcy5nZXQoKS5nZXQoKSBmb3JLZXk6QCJO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKICAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CiAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnN0YXRpY19j
YXN0PE5TU3RyaW5nKj4ocGF0aCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2Fs
UGF0aCJdOwogICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxs
b2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0Nv
Y29hLm1tCmluZGV4IDEwMTQ1YjkwYWEzYjRkYTY5YTA4YzA4ODc5ZDg1MDZlYzZhNmJkYzIuLmM4
OTE0ODRiYmU3ZDc1YTBiOTViODI0MDNlZWViMDY2OTZmY2EyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZh
bHVlc0NvY29hLm1tCkBAIC00NSwxMiArNDUsMTIgQEAgYm9vbCBpc0ZlYXR1cmVGbGFnRW5hYmxl
ZChjb25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogICAgIGlmICghaXNXZWJLaXRCdW5kbGVGcm9t
U3RhZ2VkRnJhbWV3b3JrKQogICAgICAgICByZXR1cm4gX29zX2ZlYXR1cmVfZW5hYmxlZF9pbXBs
KCJXZWJLaXQiLCAoY29uc3QgY2hhciopZmVhdHVyZU5hbWUudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gW1tOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5L0FwcGxlL1N5c3RlbS9MaWJyYXJ5L0Zl
YXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il0gcmV0YWluXTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGRpY3Rpb25hcnkgPSBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGlicmFyeS9BcHBsZS9TeXN0
ZW0vTGlicmFyeS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdCJdOwogCi0gICAgaWYg
KCFbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJF
bmFibGVkIl0pCisgICAgaWYgKCFbW2RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1
cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0pCiAgICAgICAgIHJldHVybiBfb3NfZmVh
dHVyZV9lbmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJlTmFtZS5jaGFy
YWN0ZXJzOCgpKTsKIAotICAgIHJldHVybiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0
dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXV0gJiYgW1tbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVj
dEZvcktleTpAIkVuYWJsZWQiXSBib29sVmFsdWVdOworICAgIHJldHVybiBbW1tkaWN0aW9uYXJ5
LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJd
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGljdGlvbmFyeS5nZXQoKSBv
YmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBib29sVmFs
dWVdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
Q29jb2EubW0KaW5kZXggZDJkOGFlOGZjZDU3N2MxMzIyYTE5NGNjZDU1OGIwZDhjNmVjZTRmNy4u
NGVkMzc3NGEwNGYwODE4ZTU1NzQxMTFhMjc1NDZmNTZkMjdiN2Q5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlQ29jb2EubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBX
VEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aChib29sIGxl
Z2FjeUZpbGVuYW1lKQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwot
ICAgIHN0YXRpYyBOU1VSTCAqY29udGVudFJ1bGVMaXN0U3RvcmVVUkw7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IGNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMOwog
CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBOU1VSTCAqdXJsID0g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5
RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVs
bHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CkBAIC01MywxNSArNTMsMTUgQEAgV1RGOjpT
dHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgoYm9vbCBsZWdhY3lG
aWxlbmFtZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlZ2FjeUZpbGVuYW1l
KQotICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwgPSBbW3VybCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50RXh0ZW5zaW9ucyIgaXNEaXJlY3Rvcnk6WUVTXSBy
ZXRhaW5dOworICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgPSBbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIiBpc0RpcmVj
dG9yeTpZRVNdOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50UnVsZUxpc3RTdG9y
ZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlz
dHMiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICAgICAgICAgIGNvbnRlbnRSdWxlTGlz
dFN0b3JlVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250
ZW50UnVsZUxpc3RzIiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmNvbnRlbnRS
dWxlTGlzdFN0b3JlVVJMIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRl
czpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0
ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9yZVVSTCk7CisgICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmNvbnRlbnRS
dWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZ
RVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQo
KS5nZXQoKSk7CiAKLSAgICByZXR1cm4gY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuYWJzb2x1dGVV
UkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFtjb250ZW50UnVs
ZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNTViNWZj
OTU1MTY4ZTQ4NDUyY2ZiNzEwY2ViYjZhZGZlOWQwNWE5NC4uNDBkN2Y4NWJmOWJmODQyNjVkMDZk
NDk3MmRjNGQwNmVlMGNlOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yMzEsNyArMjMxLDcgQEAg
QGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQogKyAoTlNTZXQ8
TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGUKIHsKICAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNTZXQgKmFs
bFdlYnNpdGVEYXRhVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxO
U1NldD4+IGFsbFdlYnNpdGVEYXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2Vu
LCBeIHsKICAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFsKICAgICAgICAgICAgIF9XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwKQEAgLTI0NywxMCArMjQ3LDEwIEBAICsgKE5TU2V0PE5T
U3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlCiAjZW5kaWYK
ICAgICAgICAgXTsKIAotICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzID0gW1tbc2VsZiBhbGxX
ZWJzaXRlRGF0YVR5cGVzXSBzZXRCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6cHJpdmF0ZVR5cGVz
XSByZXRhaW5dOworICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzLmdldCgpID0gW1tzZWxmIGFs
bFdlYnNpdGVEYXRhVHlwZXNdIHNldEJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpwcml2YXRlVHlw
ZXNdOwogICAgIH0pOwogCi0gICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7CisgICAgcmV0
dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKEJPT0wpX2RlZmF1
bHREYXRhU3RvcmVFeGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRl
eCAwOGNiOGVkMDYzNmJmNDA2N2Q3NGQ1YjM5ZDE5ZDVlOGY2NDRiZjNkLi5mY2E5NmMyZjljZTJj
Mjk2ZWZmNDk2ZWVmMWViZWJhYWY1OWQ2MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC0zMzIsNyArMzMyLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBz
aG91bGRDcmVhdGVEaXJlY3RvcnkpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNVUkw+PiB0ZW1wVVJMOwogICAgIAogICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6TlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAtMzQ2LDEwICsz
NDYsMTAgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlMKICAgICAgICAgICAgIHVybCA9IFt1cmwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6
WUVTXTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5d
OworICAgICAgICB0ZW1wVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7CiAgICAgCi0gICAgTlNVUkwg
KnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1l
IGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMLmdldCgpIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CiAK
ICAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6
WWVzCiAgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCkBAIC0zNjEsNyArMzYxLDcgQEAgV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBXVEY6OlMKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1l
LCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQogewogICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqY2FjaGVV
Ukw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IGNhY2hlVVJM
OwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBOU1VSTCAqdXJs
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNo
ZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpu
dWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTM3NSwxMCArMzc1LDEwIEBAIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6CiAgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CiAgICAg
ICAgIH0KIAotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgICAgICBjYWNoZVVS
TC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0Rp
cmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0gICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwor
ICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBpZiAoc2hvdWxkQ3JlYXRl
RGlyZWN0b3J5ID09IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6WWVzCiAgICAgICAgICYmICFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKQEAgLTM4OSw3ICszODksNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OgogV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICp3ZWJzaXRlRGF0
YVVSTDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJMPj4gd2Vic2l0
ZURhdGFVUkw7CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIE5T
VVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9y
eTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0
ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTQwNSwxMCArNDA1
LDEwIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0CiAgICAgICAgICAgICB1cmwgPSBbdXJsIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllF
U107CiAgICAgICAgIH0KIAotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFp
bl07CisgICAgICAgIHdlYnNpdGVEYXRhVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICB9KTsKIAot
ICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqdXJsID0gW3dl
YnNpdGVEYXRhVVJMLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlO
YW1lIGlzRGlyZWN0b3J5OllFU107CiAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3Jp
ZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggNjYxNjJlM2ZhMjkzZWI3NGViZWYzYzBkNTBhYzE3ZWFjZmJkYzgwMi4uMjIwYjc2OWMwMWI0
YTYzZWM5NzRiMzk5YTUxODZjMThhNDM0ODYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00NTAzLDEx
ICs0NTAzLDExIEBAIC0gKE5TQXJyYXkgKilrZXlDb21tYW5kcwogICAgIGlmICghX3BhZ2UtPmVk
aXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBzdGF0aWMgTlNBcnJheSogZWRpdGFibGVLZXlDb21tYW5kcyA9IFtAWworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGVkaXRhYmxlS2V5Q29tbWFuZHMgPSBA
WwogICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZp
ZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX25leHRBY2Nlc3NvcnlUYWI6KV0sCiAgICAgICAg
IFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmllckZsYWdzOlVJ
S2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9wcmV2aW91c0FjY2Vzc29yeVRhYjop
XQotICAgIF0gcmV0YWluXTsKLSAgICByZXR1cm4gZWRpdGFibGVLZXlDb21tYW5kczsKKyAgICBd
OworICAgIHJldHVybiBlZGl0YWJsZUtleUNvbW1hbmRzLmdldCgpLmdldCgpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IGEyYzhiYjFhNDcxNzhjYzBjMzQ3YWRjNDdiZDA2NDk4ZGI1N2MxYzcuLjJhNWIx
ODMyNjc2N2MyYTdkNDllNTllYmUzZThhMmMxMGIwZDNlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjUzLDI1ICsyNTMs
MjAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKE5TQXJyYXkg
KilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogewotICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVOYW1lcyA9IDA7Ci0K
LSAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7Ci0gICAgICAgIGF0dHJpYnV0ZU5hbWVzID0gQFsK
LSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5
U2l6ZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1
dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKLSAgICAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAvLyBQ
REZMYXllckNvbnRyb2xsZXIgaGFzIGl0cyBvd24gYWNjZXNzaWJpbGl0eUNoaWxkcmVuLgotICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUKLSAgICAgICAgICAgIF07
Ci0gICAgICAgIFthdHRyaWJ1dGVOYW1lcyByZXRhaW5dOwotICAgIH0KLQotICAgIHJldHVybiBh
dHRyaWJ1dGVOYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJy
YXk+PiBhdHRyaWJ1dGVOYW1lcyA9IEBbCisgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0
dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAorICAgICAg
ICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2li
aWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmli
dXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAgICAgLy8gUERGTGF5ZXJDb250
cm9sbGVyIGhhcyBpdHMgb3duIGFjY2Vzc2liaWxpdHlDaGlsZHJlbi4KKyAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUKKyAgICBdOworCisgICAgcmV0dXJuIGF0dHJpYnV0
ZU5hbWVzLmdldCgpLmdldCgpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VS
TEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMu
bW0KaW5kZXggODc1MzYyNDJiNzkwMzRlYjkzNGNiNWY3MmE4OTczNmY3MTFhOTUwZi4uMWVjMDRl
YWFmNWI0NjQ3NmQ4OTlkZmU4NTVlZWYyNmNjMjkzNTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0yNzYsMTcgKzI3NiwxNiBAQCAt
KE5TUmFuZ2UpX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lCiAgICAgTlNSYW5nZSBjb2xvbiA9IFtz
ZWxmIHJhbmdlT2ZTdHJpbmc6QCI6Il07CiAgICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5TTm90
Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7CiAgICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0g
ezAsIGNvbG9uLmxvY2F0aW9ufTsKLSAgICAgICAgc3RhdGljIE5TQ2hhcmFjdGVyU2V0ICpJbnZl
cnNlU2NoZW1lQ2hhcmFjdGVyU2V0ID0gbmlsOwotICAgICAgICBpZiAoIUludmVyc2VTY2hlbWVD
aGFyYWN0ZXJTZXQpIHsKKyAgICAgICAgc3RhdGljIGF1dG8gaW52ZXJzZVNjaGVtZUNoYXJhY3Rl
clNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAg
ICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2VjIG9uIGEgMngxLjJH
SHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcwogICAgICAgICAgICAgIGV2ZXJ5dGhpbmcgZWxz
ZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUgd29u
ZGVyIGlmIHdlCiAgICAgICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3Rl
ciBzZXQgaGVyZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgICBOU1N0cmluZyAqYWNjZXB0
YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgICAgIEludmVyc2VTY2hlbWVD
aGFyYWN0ZXJTZXQgPSBbW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0gcmV0YWluXTsKLSAg
ICAgICAgfQotICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VPZkNoYXJhY3Rl
ckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCBvcHRpb25zOjAgcmFuZ2U6c2NoZW1l
XTsKKyAgICAgICAgICAgIHJldHVybiByZXRhaW5QdHIoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0
ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRl
ZFNldF0pOworICAgICAgICB9KCkpOworICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3NlbGYg
cmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5n
ZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKICAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc2NoZW1lOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9y
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0K
aW5kZXggOThlY2FhOTQzNTY0NmY2MGVhZjE1YzM0NTE1NjhjOTIwNzA2M2UxMi4uM2VlYzgwYWMy
OTczZDJiNWY2ZmY2M2QzNWUzNmQwZWEyNmIxYmNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0KQEAgLTU4LDEzICs1OCwxMyBA
QCArICh2b2lkKWluaXRpYWxpemUKIAogKyAoTlNTdHJpbmcgKiljZW50ZXJUcnVuY2F0ZVN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgdG9XaWR0aDooZmxvYXQpbWF4V2lkdGgKIHsKLSAgICBzdGF0
aWMgTlNGb250ICptZW51Rm9udCA9IFtbTlNGb250IG1lbnVGb250T2ZTaXplOjBdIHJldGFpbl07
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0ZvbnQ+PiBtZW51Rm9udCA9
IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CiAKLSAgICBBU1NFUlQobWVudUZvbnQpOwotICAg
IGlmICghbWVudUZvbnQpCisgICAgQVNTRVJUKG1lbnVGb250LmdldCgpKTsKKyAgICBpZiAoIW1l
bnVGb250LmdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6
OlN0cmluZ1RydW5jYXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyaW5nLCBtYXhXaWR0aCwgZm9udEZy
b21OU0ZvbnQobWVudUZvbnQpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U3RyaW5nVHJ1bmNhdG9y
OjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIG1heFdpZHRoLCBmb250RnJvbU5TRm9udChtZW51Rm9u
dC5nZXQoKS5nZXQoKSkpOwogfQogCiArIChOU1N0cmluZyAqKWNlbnRlclRydW5jYXRlU3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyB0b1dpZHRoOihmbG9hdCltYXhXaWR0aCB3aXRoRm9udDooTlNG
b250ICopZm9udApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJTdG9yYWdlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2Vi
U3RvcmFnZU1hbmFnZXIubW0KaW5kZXggYmJmZmRjNDU0ODA3MDhiZTk5MjE3ZDhkMDQwMjBhOWE4
YmMyNzM2NS4uMzM5NGFhNGUxZWZkMjBkYTg3ZTQ3YzUxYmIyY2RkYmMyMWQ1MjRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2Vy
Lm1tCkBAIC05NywxOSArOTcsMTkgQEAgLSAodm9pZClzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJE
YXRhYmFzZQogCiArIChOU1N0cmluZyAqKV9zdG9yYWdlRGlyZWN0b3J5UGF0aAogewotICAgIHN0
YXRpYyBOU1N0cmluZyAqc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU1N0cmluZz4+IHNMb2NhbFN0b3JhZ2VQYXRoOwogICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3QgZmxhZzsKICAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeewogICAgICAg
ICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdOwotICAgICAgICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtkZWZhdWx0cyBvYmplY3RG
b3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKLSAgICAgICAgaWYgKCFzTG9j
YWxTdG9yYWdlUGF0aCB8fCAhW3NMb2NhbFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pIHsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBsb2NhbFN0b3JhZ2VQ
YXRoID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNL
ZXldOworICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZVBhdGggfHwgIVtsb2NhbFN0b3JhZ2VQYXRo
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgICAgIE5TQXJyYXkg
KnBhdGhzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGly
ZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOwogICAgICAgICAgICAgTlNTdHJpbmcgKmxp
YnJhcnlEaXJlY3RvcnkgPSBbcGF0aHMgb2JqZWN0QXRJbmRleDowXTsKLSAgICAgICAgICAgIHNM
b2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOworICAgICAgICAgICAgbG9jYWxTdG9y
YWdlUGF0aCA9IFtsaWJyYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIldlYktpdC9Mb2NhbFN0b3JhZ2UiXTsKICAgICAgICAgfQotICAgICAgICBzTG9jYWxTdG9y
YWdlUGF0aCA9IFtbc0xvY2FsU3RvcmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0g
cmV0YWluXTsKKyAgICAgICAgc0xvY2FsU3RvcmFnZVBhdGguZ2V0KCkgPSBbbG9jYWxTdG9yYWdl
UGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKICAgICB9KTsKLSAgICByZXR1cm4gc0xv
Y2FsU3RvcmFnZVBhdGg7CisgICAgcmV0dXJuIHNMb2NhbFN0b3JhZ2VQYXRoLmdldCgpLmdldCgp
OwogfQogCiArICh2b2lkKXNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbDooZG91YmxlKWlu
dGVydmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOTFhZmM1ZDc0NDkxNDM0ZjRlMTIzZjE4YTUw
NDE3Mzg5YjM0YjNiOS4uMGRmYWU4NDlmMGQ3NzQ0ZTg3ZmQyODlkZDY2MWE1MGYxNDBjNDI5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDU5LDEwICs0NTksMTAgQEAgc3RhdGljIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIAogdm9pZCBf
V2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZywgRnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJlc3VsdCkKIHsKLSAgICBzdGF0aWMgTlNE
aWN0aW9uYXJ5ICpkb2N1bWVudEF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKCkgcmV0YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TRGljdGlvbmFyeT4+IGRvY3VtZW50QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNGb3JB
dHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpOwogICAgIE5TQXJyYXkgKnN1YnJlc291cmNlczsK
ICAgICBET01Eb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCA9IFtzdHJpbmcgX2RvY3VtZW50RnJv
bVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkKLSAgICAgICAgZG9jdW1lbnQ6
a2l0KCZkb2N1bWVudCkgZG9jdW1lbnRBdHRyaWJ1dGVzOmRvY3VtZW50QXR0cmlidXRlcyBzdWJy
ZXNvdXJjZXM6JnN1YnJlc291cmNlc107CisgICAgICAgIGRvY3VtZW50OmtpdCgmZG9jdW1lbnQp
IGRvY3VtZW50QXR0cmlidXRlczpkb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCkgc3VicmVz
b3VyY2VzOiZzdWJyZXNvdXJjZXNdOwogICAgIHJlc3VsdC5mcmFnbWVudCA9IGNvcmUoZnJhZ21l
bnQpOwogICAgIGZvciAoV2ViUmVzb3VyY2UqIHJlc291cmNlIGluIHN1YnJlc291cmNlcykKICAg
ICAgICAgcmVzdWx0LnJlc291cmNlcy5hcHBlbmQoW3Jlc291cmNlIF9jb3JlUmVzb3VyY2VdLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggNDdhM2Q1MzA1ZTc2MWY2YzZhNDFiY2FkY2Q2M2E1
YzMyMjYxODEyOS4uOGU2ZWVhNjhhZjUzN2U3MTkxMmY1MjIwNmQ5ZDNmYjIwY2Q0OGI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KQEAgLTk3LDM0ICs5NywzMyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJy
YXk+IG5ld0FycmF5V2l0aFN0cmluZ3MoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
cwogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJy
YXkgKnN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9IFtbW1tzZWxmIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheToKLSAgICAgICAgW3NlbGYg
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheToK
LSAgICAgICAgW3NlbGYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdXSByZXRhaW5dOwotICAgIHJl
dHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzID0gW1tbc2VsZiBz
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10gYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6
CisgICAgICAgIFtzZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXV0gYXJyYXlCeUFkZGluZ09i
amVjdHNGcm9tQXJyYXk6W3NlbGYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdXTsKKyAgICByZXR1
cm4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiArIChOU0FycmF5
ICopc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGlj
U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVn
aXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4g
c3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBuZXdB
cnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KCkpOworICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcy5nZXQoKS5nZXQo
KTsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzCiB7Ci0gICAg
c3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJy
YXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cygpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRp
Y1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlw
ZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKTsKKyAgICByZXR1cm4gc3Rh
dGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJy
YXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0
aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVS
ZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSkubGVha1JlZigpOwotICAgIHJldHVy
biBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IG5l
d0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMoKSk7CisgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdldCgpLmdl
dCgpOwogfQogCiArIChOU0FycmF5ICopdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzCiB7Ci0gICAg
c3RhdGljIE5TQXJyYXkgKnN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9IG5ld0FycmF5
V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkp
LmxlYWtSZWYoKTsKLSAgICByZXR1cm4gc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1Vuc3Vw
cG9ydGVkVGV4dE1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3Ry
eTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0aWNVbnN1cHBv
cnRlZFRleHRNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkKWluaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0
VmFsdWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMubW0KaW5kZXggY2Y5ZGJjYWIxODRjNWM4NTk1M2Q3NWJmZTBjZDVhNGY5
YmZjNDZiMi4uODkwZTJiMTVhNDU4YmNlOWQ5NWY1ZTY1NzExZTQxNWEyMDFhM2RjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KQEAgLTUyLDEyICs1MiwxMiBAQCBib29sIGlzRmVhdHVy
ZUZsYWdFbmFibGVkKGNvbnN0IFN0cmluZyYgZmVhdHVyZU5hbWUpCiAgICAgaWYgKCFpc1dlYktp
dEJ1bmRsZUZyb21TdGFnZWRGcmFtZXdvcmspCiAgICAgICAgIHJldHVybiBfb3NfZmVhdHVyZV9l
bmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJlTmFtZS51dGY4KCkuZGF0
YSgpKTsKIAotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBbW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkvQXBwbGUvU3lzdGVt
L0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXSByZXRhaW5dOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gZGljdGlvbmFy
eSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5
L0FwcGxlL1N5c3RlbS9MaWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il07
CiAKLSAgICBpZiAoIVtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVj
dEZvcktleTpAIkVuYWJsZWQiXSkKKyAgICBpZiAoIVtbZGljdGlvbmFyeS5nZXQoKSBvYmplY3RG
b3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKICAgICAgICAgcmV0
dXJuIF9vc19mZWF0dXJlX2VuYWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNoYXIqKWZlYXR1
cmVOYW1lLmNoYXJhY3RlcnM4KCkpOwogCi0gICAgcmV0dXJuIFtbW2RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpmZWF0dXJl
TmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CisgICAgcmV0dXJuIFtb
W2RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6
QCJFbmFibGVkIl0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9u
YXJ5LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxl
ZCJdIGJvb2xWYWx1ZV07CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IDkxN2EwNWQ4OTEwNzI5ZjQyZGFlMDZmNTlmYjUxYTM2Yjc4
MWVjYmEuLjY5NjA2YmY2ZWUzOTg5YjBiMWQ5YTIzNmZjNjY4YTBlOTVjNmVmZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0MzgsMTEgKzE0Mzgs
MTEgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmlu
ZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBXZWJQcmVmZXJlbmNlcyAqc3RhbmRh
cmRQcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAg
ICBbc3RhbmRhcmRQcmVmZXJlbmNlcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAotICAgIF9wcml2YXRl
LT5wcmVmZXJlbmNlcyA9IFtzdGFuZGFyZFByZWZlcmVuY2VzIHJldGFpbl07CisgICAgX3ByaXZh
dGUtPnByZWZlcmVuY2VzID0gc3RhbmRhcmRQcmVmZXJlbmNlczsKICAgICBfcHJpdmF0ZS0+bWFp
bkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2YXRlLT5kcmF3c0JhY2tncm91bmQg
PSBZRVM7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgX3ByaXZhdGUtPmJhY2tncm91
bmRDb2xvciA9IGFkb3B0TlMoW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6
MV0gcmV0YWluXSk7CisgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IFtOU0NvbG9yIGNv
bG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6MV07CiAjZWxzZQogICAgIF9wcml2YXRlLT5iYWNr
Z3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0
ZSk7CiAjZW5kaWYKQEAgLTE1MTQsNyArMTUxNCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0
CiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQogCi0gICAg
X3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9w
cml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBfcHJp
dmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgW19wcml2
YXRlLT5wcmVmZXJlbmNlcyBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZh
dGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCiAgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIg
PSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CkBAIC0xNzgwLDcgKzE3ODAs
NyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0
eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgICAgICBwcmVmZXJlbmNlcyA9IFtXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBbcHJlZmVyZW5jZXMgd2lsbEFk
ZFRvV2ViVmlld107CiAKLSAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJlZmVyZW5jZXMg
cmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlczsKICAgICBf
cHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2YXRlLT5kcmF3
c0JhY2tncm91bmQgPSBZRVM7CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IFdlYkNv
cmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKQEAgLTE3ODksNyArMTc4
OSw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICop
c3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgW2ZyYW1lVmlldyBzZXRBdXRvcmVz
aXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwogICAg
IFtzZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAotICAgIF9wcml2YXRlLT5ncm91
cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVy
ZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgX3ByaXZhdGUtPmdyb3VwID0g
V2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFtfcHJpdmF0ZS0+cHJlZmVyZW5j
ZXMgX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRk
V2ViVmlldyhzZWxmKTsKIAogICAgIGF1dG8gc3RvcmFnZVByb3ZpZGVyID0gUGFnZVN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAgLSAodm9pZClf
Y2xvc2UKIAogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNlRm9ySWRlbnRpZmll
cjpbc2VsZiBwcmVmZXJlbmNlc0lkZW50aWZpZXJdXTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMg
PSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVuY2VzLCBuaWwpKTsKKyAg
ICBhdXRvIHByZWZlcmVuY2VzID0gc3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+cHJlZmVyZW5jZXMs
IG5pbCk7CiAgICAgW3ByZWZlcmVuY2VzIGRpZFJlbW92ZUZyb21XZWJWaWV3XTsKIAogICAgIFtz
ZWxmIF9jbG9zZVBsdWdpbkRhdGFiYXNlc107CkBAIC0zMzc1LDggKzMzNzUsOCBAQCAtICh2b2lk
KV9jaGVja0RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24KIAogICAgIF9wcml2YXRlLT5fZGlkUGVy
Zm9ybUZpcnN0TmF2aWdhdGlvbiA9IFlFUzsKIAotICAgIGlmIChfcHJpdmF0ZS0+cHJlZmVyZW5j
ZXMuYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsICYmIF9wcml2YXRlLT5wcmVmZXJlbmNl
cy5jYWNoZU1vZGVsIDwgV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcikKLSAgICAgICAgX3By
aXZhdGUtPnByZWZlcmVuY2VzLmNhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93
c2VyOworICAgIGlmIChbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGF1dG9tYXRpY2FsbHlEZXRlY3Rz
Q2FjaGVNb2RlbF0gJiYgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBjYWNoZU1vZGVsXSA8IFdlYkNh
Y2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpCisgICAgICAgIFtfcHJpdmF0ZS0+cHJlZmVyZW5jZXMg
c2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyXTsKIH0KIAogLSAodm9p
ZClfZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBAIC01NzgzLDEyICs1
NzgzLDEyIEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2VzICopcHJlZnMK
IAogICAgIFtwcmVmcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAotICAgIGF1dG8gb2xkUHJlZnMgPSBh
ZG9wdE5TKF9wcml2YXRlLT5wcmVmZXJlbmNlcyk7CisgICAgYXV0byBvbGRQcmVmcyA9IHN0ZDo6
ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVuY2VzLCBudWxscHRyKTsKIAogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOldl
YlByZWZlcmVuY2VzQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIG9iamVjdDpbc2VsZiBwcmVm
ZXJlbmNlc11dOwogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNlRm9ySWRlbnRp
Zmllcjpbb2xkUHJlZnMgaWRlbnRpZmllcl1dOwogCi0gICAgX3ByaXZhdGUtPnByZWZlcmVuY2Vz
ID0gW3ByZWZzIHJldGFpbl07CisgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gcHJlZnM7CiAK
ICAgICAvLyBBZnRlciByZWdpc3RlcmluZyBmb3IgdGhlIG5vdGlmaWNhdGlvbiwgcG9zdCBpdCBz
byB0aGUgV2ViQ29yZSBzZXR0aW5ncyB1cGRhdGUuCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfcHJl
ZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOikKQEAgLTU4MDEsNyArNTgwMSw3IEBAIC0gKHZv
aWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2VzICopcHJlZnMKIAogLSAoV2ViUHJlZmVy
ZW5jZXMgKilwcmVmZXJlbmNlcwogewotICAgIHJldHVybiBfcHJpdmF0ZS0+cHJlZmVyZW5jZXM7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5nZXQoKTsKIH0KIAogLSAodm9pZClz
ZXRQcmVmZXJlbmNlc0lkZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVudGlmaWVyCkBAIC02NTU5
LDcgKzY1NTksNyBAQCAtICh2b2lkKXNldEdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUK
ICAgICBpZiAoX3ByaXZhdGUtPmdyb3VwKQogICAgICAgICBfcHJpdmF0ZS0+Z3JvdXAtPnJlbW92
ZVdlYlZpZXcoc2VsZik7CiAKLSAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpOworICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JD
cmVhdGUoZ3JvdXBOYW1lLCBbX3ByaXZhdGUtPnByZWZlcmVuY2VzIF9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGhdKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKICAg
ICBpZiAoIV9wcml2YXRlLT5wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5oCmluZGV4IDgzYzZkNzgwNTAyZWYyYjE4YjU1M2E4ZTg5ZDRjMWVlNTA4
YWU4ODcuLjE1YzM5MTY4ZTAxMmRiNTRiYjZlNTA5NGVlNjEzYjAwZjY3MTU4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTIyNiw3ICsy
MjYsNyBAQCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudDsKICAgICBCT09MIHVz
ZXJBZ2VudE92ZXJyaWRkZW47CiAgICAgCi0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2Vz
OworICAgIFJldGFpblB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBOU1VSTCAqdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNi
Y2UzYjg4OWU4YTJjNzMzYzQ5NDJhNWNmOGVmZjk5Zjk5ZTVmOTEuLjJjMTE2ODVlMTg3N2YzMDk5
NTQzNjIzYjVmMjY3YTc0MGZhMzMyODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBv
ZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0g
aW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoYWxsb3dlZEZvbnRGYW1pbHlTZXQp
OgorICAgICAgICAoLVtEUlRNb2NrU2Nyb2xsZXIgZHJhd0tub2JdKToKKyAgICAgICAgKC1bRFJU
TW9ja1Njcm9sbGVyIGRyYXdSZWN0Ol0pOgorICAgICAgICAocHJlcGFyZUNvbnNpc3RlbnRUZXN0
aW5nRW52aXJvbm1lbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUXVpY2tMb29rLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHNlbGVj
dGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGVdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6YWxsb3dl
ZEZvbnRGYW1pbHlTZXQpOgorICAgICAgICAoV1RSOjpzeXN0ZW1IaWRkZW5Gb250RmFtaWx5U2V0
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tOgorICAgICAg
ICAoZGlzYWJsZUFwcE5hcEluVUlQcm9jZXNzKToKKwogMjAyMS0wMi0yNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgaW50ZXJuYWwg
Q29udGVudEZpbHRlcmluZyB0ZXN0cyBub3QgdGltZSBvdXQgYWZ0ZXIgcjI3MjI5MwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDNmM2JkNTE5ZmU4ODJl
ODRmZmYwMWNhNGY1ZmQ1NmI4N2ViY2ZiZWIuLjM2ZWMyYzUyNjM4M2MwZTJhYzYxNWIyYzk3MTI1
YjdjYzEzYjhiNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVXZWJDb3JlTm9k
ZUxlYWtzKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmxTdHJpbmcpCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKIHsKLSAgICBzdGF0
aWMgTlNTZXQgKmZvbnRGYW1pbHlTZXQgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOgorICAgIHN0
YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IGZvbnRGYW1pbHlTZXQgPSBbTlNTZXQgc2V0V2l0aE9iamVj
dHM6CiAgICAgICAgIEAiQWhlbSIsCiAgICAgICAgIEAiQWwgQmF5YW4iLAogICAgICAgICBAIkFt
ZXJpY2FuIFR5cGV3cml0ZXIiLApAQCAtNDEwLDkgKzQxMCw5IEBAIHN0YXRpYyBOU1NldCAqYWxs
b3dlZEZvbnRGYW1pbHlTZXQoKQogICAgICAgICBAIldpbmdkaW5ncyIsCiAgICAgICAgIEAiWmFw
ZiBEaW5nYmF0cyIsCiAgICAgICAgIEAiWmFwZmlubyIsCi0gICAgICAgIG5pbF0gcmV0YWluXTsK
KyAgICAgICAgbmlsXTsKIAotICAgIHJldHVybiBmb250RmFtaWx5U2V0OworICAgIHJldHVybiBm
b250RmFtaWx5U2V0LmdldCgpOwogfQogCiBzdGF0aWMgTlNBcnJheSAqZm9udEFsbG93TGlzdCgp
CkBAIC02NDMsNyArNjQzLDcgQEAgLSAodm9pZClkcmF3S25vYgogCiAgICAgTlNSZWN0IGtub2JS
ZWN0ID0gW3NlbGYgcmVjdEZvclBhcnQ6TlNTY3JvbGxlcktub2JdOwogCi0gICAgc3RhdGljIE5T
Q29sb3IgKmtub2JDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VSZWQ6MHg4MCAvIDI1
NS4wIGdyZWVuOjB4ODAgLyAyNTUuMCBibHVlOjB4ODAgLyAyNTUuMCBhbHBoYToxXSByZXRhaW5d
OworICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNDb2xvcj4ga25vYkNvbG9yID0gW05TQ29sb3IgY29s
b3JXaXRoRGV2aWNlUmVkOjB4ODAgLyAyNTUuMCBncmVlbjoweDgwIC8gMjU1LjAgYmx1ZToweDgw
IC8gMjU1LjAgYWxwaGE6MV07CiAgICAgW2tub2JDb2xvciBzZXRdOwogCiAgICAgTlNSZWN0Rmls
bChrbm9iUmVjdCk7CkBAIC02NTEsOCArNjUxLDggQEAgLSAodm9pZClkcmF3S25vYgogCiAtICh2
b2lkKWRyYXdSZWN0OihOU1JlY3QpZGlydHlSZWN0CiB7Ci0gICAgc3RhdGljIE5TQ29sb3IgKnRy
YWNrQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOjB4QzAgLyAyNTUuMCBncmVl
bjoweEMwIC8gMjU1LjAgYmx1ZToweEMwIC8gMjU1LjAgYWxwaGE6MV0gcmV0YWluXTsKLSAgICBz
dGF0aWMgTlNDb2xvciAqZGlzYWJsZWRUcmFja0NvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERl
dmljZVJlZDoweEUwIC8gMjU1LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhFMCAvIDI1NS4w
IGFscGhhOjFdIHJldGFpbl07CisgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiB0cmFja0Nv
bG9yID0gW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOjB4QzAgLyAyNTUuMCBncmVlbjoweEMw
IC8gMjU1LjAgYmx1ZToweEMwIC8gMjU1LjAgYWxwaGE6MV07CisgICAgc3RhdGljIFJldGFpblB0
cjxOU0NvbG9yPiBkaXNhYmxlZFRyYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VS
ZWQ6MHhFMCAvIDI1NS4wIGdyZWVuOjB4RTAgLyAyNTUuMCBibHVlOjB4RTAgLyAyNTUuMCBhbHBo
YToxXTsKIAogICAgIGlmIChbc2VsZiBpc0VuYWJsZWRdKQogICAgICAgICBbdHJhY2tDb2xvciBz
ZXRdOwpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRU
ZXN0aW5nRW52aXJvbm1lbnQoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TQWN0aXZpdHlP
cHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0
ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVu
VGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2Fi
bGVkKTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiRHVtcFJlbmRl
clRyZWUgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Npb24iXSByZXRh
aW5dOworICAgIHN0YXRpYyBSZXRhaW5QdHI8aWQ+IGFzc2VydGlvbiA9IFtbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAi
RHVtcFJlbmRlclRyZWUgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Np
b24iXTsKICAgICBBU1NFUlRfVU5VU0VEKGFzc2VydGlvbiwgYXNzZXJ0aW9uKTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9v
ay5tbQppbmRleCAxZjk3ZDI5NDIyMDJlODBjZGYzMDYwMGY1NjViZTRiMGUxMzJlZjA4Li40NTRj
YTNhZDg1YzkzY2I5ZmM5YjNmMjAyYTg1ZTEyM2RjMzc0YTgwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQpAQCAtNTEsNyArNTEs
NyBAQCBzdGF0aWMgYm9vbCBpc0RvbmU7CiBzdGF0aWMgYm9vbCBkb3dubG9hZElzRG9uZTsKIAog
c3RhdGljIE5TU3RyaW5nICogY29uc3QgcGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSA9IEAi
YXBwbGljYXRpb24vcGRmIjsKLXN0YXRpYyBOU1VSTCAqIGNvbnN0IHBhZ2VzRG9jdW1lbnRVUkwg
PSBbW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYWdlcyIgd2l0aEV4dGVu
c2lvbjpAInBhZ2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdIHJl
dGFpbl07CitzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiBwYWdlc0RvY3VtZW50VVJMID0gW05TQnVu
ZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYWdlcyIgd2l0aEV4dGVuc2lvbjpAInBh
Z2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCiBAaW50ZXJm
YWNlIFF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZSwgX1dLRG93bmxvYWREZWxlZ2F0ZT4KIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZB
SUxBQkxFOwpAQCAtMjgwLDggKzI4MCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBy
dW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKFF1aWNrTG9va0RlbGVnYXRlICpkZWxlZ2F0CiAKIFRF
U1QoUXVpY2tMb29rLCBBbGxvd1Jlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRp
bmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1
bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkg
cmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1
blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRkFMU0Uo
W2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRl
IGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmlu
aXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMjkwLDggKzI5MCw4IEBAIFRFU1QoUXVpY2tMb29rLCBB
bGxvd1Jlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBBbGxv
d1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpw
YWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVU
eXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAg
ICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVS
TDpwYWdlc0RvY3VtZW50VVJMLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJl
dmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxs
b3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBF
WFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RS
VUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVs
ZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzE5LDggKzMxOSw4IEBAIEBlbmQK
ICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4g
MTMwNDAwCiBURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3BvbnNlQmVmb3JlTG9hZGluZ1By
ZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tBc3luY0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJl
c3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBydW5U
ZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tRdWlja0xvb2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVS
TDpwYWdlc0RvY3VtZW50VVJMLmdldCgpIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0
ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdl
dCgpXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwog
ICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQ
RUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTMyOSw4ICsz
MjksOCBAQCBURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3BvbnNlQmVmb3JlTG9hZGluZ1By
ZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VBZnRlckxvYWRpbmdQ
cmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rQXN5bmNE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBw
cmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGlj
eTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAgcnVuVGVzdERlY2lkZUFm
dGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpw
YWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3Vt
ZW50VVJMLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBl
IHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKKyAgICBy
dW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRkFMU0Uo
W2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRl
IGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmlu
aXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzQwLDggKzM0MCw4IEBAIFRFU1QoUXVpY2tMb29rLCBB
c3luY0FsbG93UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywg
Q2FuY2VsUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmls
ZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5Q2FuY2VsXSk7Ci0gICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUu
Z2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcmVzcG9uc2VQb2xp
Y3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsKKyAgICBydW5UZXN0RGVjaWRl
QmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpwYWdlc0RvY3VtZW50VVJMLmdldCgpXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJh
bWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJv
cl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9u
XSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7
CkBAIC0zNTIsOCArMzUyLDggQEAgVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQmVmb3Jl
TG9hZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0
ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNr
TG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50
VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNl
UG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7Ci0gICAgcnVuVGVzdERl
Y2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTC5nZXQoKSBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlw
ZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbF0pOworICAg
IHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTC5nZXQoKV0pOwogICAgIEVYUEVDVF9FUShX
ZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBu
YXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmlu
aXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdh
dGlvbl0pOwpAQCAtMzY0LDggKzM2NCw4IEBAIFRFU1QoUXVpY2tMb29rLCBDYW5jZWxSZXNwb25z
ZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNl
QmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2Fk
XSk7Ci0gICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2Fk
aW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9j
dW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRl
cnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsK
ICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBF
WFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTM3OSw4
ICszNzksOCBAQCBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQ
cmV2aWV3KQogI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQWZ0ZXJMb2Fk
aW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHBy
ZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5
OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWRdKTsKLSAgICBydW5UZXN0RGVjaWRl
QWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNr
TG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50
VVJMLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJl
c3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWRdKTsKKyAgICBy
dW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRVEoV2Vi
S2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2
aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlz
aE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRp
b25dKTsKQEAgLTQzMCw4ICs0MzAsOCBAQCBURVNUKFF1aWNrTG9vaywgUmVxdWVzdFBhc3N3b3Jk
QWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIFJlbG9hZEFuZFNhbWVEb2N1
bWVudE5hdmlnYXRpb24pCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVS
TCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCks
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
RXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIGF1dG8gd2ViVmlldyA9IHJ1blRl
c3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwuZ2V0KCldKTsKICAgICBFWFBFQ1RfRkFMU0UoW2Rl
bGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRp
ZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNo
UXVpY2tMb29rTG9hZF0pOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIFRFU1QoUXVpY2tMb29rLCBMZWdh
Y3lRdWlja0xvb2tDb250ZW50KQogCiAgICAgV2ViRnJhbWUgKm1haW5GcmFtZSA9IFt3ZWJWaWV3
IG1haW5GcmFtZV07CiAKLSAgICBbbWFpbkZyYW1lIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF1dOworICAgIFttYWluRnJhbWUgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMLmdldCgp
XV07CiAgICAgVXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIFdlYlRocmVhZExvY2soKTsKIApAQCAt
NTAwLDcgKzUwMCw3IEBAIFRFU1QoUXVpY2tMb29rLCBMZWdhY3lRdWlja0xvb2tDb250ZW50KQog
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlTmFtZTsKICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IGV4cGVjdGVkRmlsZVR5cGU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBl
Y3RlZE1JTUVUeXBlOwotICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1lbnRVUkwsIGV4cGVjdGVkRmls
ZVNpemUsIGV4cGVjdGVkRmlsZU5hbWUsIGV4cGVjdGVkRmlsZVR5cGUsIGV4cGVjdGVkTUlNRVR5
cGUsIGV4cGVjdGVkRmlsZURhdGEpOworICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1lbnRVUkwuZ2V0
KCksIGV4cGVjdGVkRmlsZVNpemUsIGV4cGVjdGVkRmlsZU5hbWUsIGV4cGVjdGVkRmlsZVR5cGUs
IGV4cGVjdGVkTUlNRVR5cGUsIGV4cGVjdGVkRmlsZURhdGEpOwogCiAgICAgTlNEaWN0aW9uYXJ5
ICpxdWlja0xvb2tDb250ZW50ID0gbWFpbkZyYW1lLmRhdGFTb3VyY2UuX3F1aWNrTG9va0NvbnRl
bnQ7CiAgICAgTlNTdHJpbmcgKmZpbGVQYXRoID0gcXVpY2tMb29rQ29udGVudFtXZWJRdWlja0xv
b2tGaWxlTmFtZUtleV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KaW5kZXggMmU5YjEzNDM5ZTI4NWZkMjI3Y2ZjMTljNTE3MzY1M2MxMWI2NDdlMi4uNjdhNjY3
MjIyMDVlMmQ2ZmNjOWZkOWUxOWYwNDJkODU0NzU4ZmE4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtNjY5LDcgKzY2OSw3IEBAIC0gKFJldGFpblB0
cjxOU0FycmF5PilzZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlCiAgICAgX19i
bG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk+
IHNlbGVjdGlvblJlY3RzOwogICAgIFtzZWxmIF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZTpeKCkgewotICAgICAgICBzZWxlY3Rpb25SZWN0cyA9IGFkb3B0TlMoW1tyZXRhaW5lZFNlbGYg
X3VpVGV4dFNlbGVjdGlvblJlY3RzXSByZXRhaW5dKTsKKyAgICAgICAgc2VsZWN0aW9uUmVjdHMg
PSBbcmV0YWluZWRTZWxmIF91aVRleHRTZWxlY3Rpb25SZWN0c107CiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CiAgICAgfV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENv
bnRyb2xsZXJJT1MubW0KaW5kZXggZmRlMmVhOWVhYmNlYmE2MjRjNWY4YzNmYjg5NzdjZDNmNzAw
NTkwZC4uOGFlMWZiNzNmYjYyOGJmYmZjZDdkMmNmODc0YTE5MTZiMmNmZTI5YyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KQEAgLTMxNiwx
MiArMzE2LDEyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogCiBjb25zdCBj
aGFyKiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQogewot
ICAgIHN0YXRpYyBOU1N0cmluZyAqcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IG5pbDsKKyAgICBzdGF0
aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBwbGF0Zm9ybUxpYnJhcnlQYXRoOwogICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKLSAgICAgICAgcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IFtbQCJ+L0xpYnJhcnkvQXBwbGljYXRp
b24gU3VwcG9ydC9XZWJLaXRUZXN0UnVubmVyIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRo
XSByZXRhaW5dOworICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW0Aifi9MaWJyYXJ5L0Fw
cGxpY2F0aW9uIFN1cHBvcnQvV2ViS2l0VGVzdFJ1bm5lciIgc3RyaW5nQnlFeHBhbmRpbmdUaWxk
ZUluUGF0aF07CiAgICAgfSk7Ci0gICAgcmV0dXJuIHBsYXRmb3JtTGlicmFyeVBhdGguVVRGOFN0
cmluZzsKKyAgICByZXR1cm4gW3BsYXRmb3JtTGlicmFyeVBhdGggVVRGOFN0cmluZ107CiB9CiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA4NWEyYzc0ZDJkOGI3MGFj
ZWI4ZTFmMTI3YWZlZWE4ZDUyZTI3N2E5Li44YWM2NGIzN2UyNTJkNThlYWM5NDNkZTRjMzE4OGY0
YTdhNDlhZGQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJv
bGxlck1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiAKIHN0
YXRpYyBOU1NldCAqYWxsb3dlZEZvbnRGYW1pbHlTZXQoKQogewotICAgIHN0YXRpYyBOU1NldCAq
Zm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6CisgICAgc3RhdGljIFJldGFp
blB0cjxOU1NldD4gZm9udEZhbWlseVNldCA9IFtOU1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAg
ICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBCYXlhbiIsCiAgICAgICAgIEAiQW1lcmljYW4gVHlw
ZXdyaXRlciIsCkBAIC0zNTUsMTggKzM1NSwxOCBAQCBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250
RmFtaWx5U2V0KCkKICAgICAgICAgQCJXaW5nZGluZ3MiLAogICAgICAgICBAIlphcGYgRGluZ2Jh
dHMiLAogICAgICAgICBAIlphcGZpbm8iLAotICAgICAgICBuaWxdIHJldGFpbl07CisgICAgICAg
IG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZhbWlseVNldDsKKyAgICByZXR1cm4gZm9udEZhbWls
eVNldC5nZXQoKTsKIH0KIAogc3RhdGljIE5TU2V0ICpzeXN0ZW1IaWRkZW5Gb250RmFtaWx5U2V0
KCkKIHsKLSAgICBzdGF0aWMgTlNTZXQgKmZvbnRGYW1pbHlTZXQgPSBbW05TU2V0IHNldFdpdGhP
YmplY3RzOgorICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IGZvbnRGYW1pbHlTZXQgPSBbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6CiAgICAgICAgIEAiLkx1Y2lkYUdyYW5kZVVJIiwKLSAgICAgICAg
bmlsXSByZXRhaW5dOworICAgICAgICBuaWxdOwogCi0gICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQ7
CisgICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBXS1JldGFpblB0
cjxXS0FycmF5UmVmPiBnZW5lcmF0ZUZvbnRBbGxvd0xpc3QoKQpAQCAtNDMwLDEyICs0MzAsMTIg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCgpCiAKIGNvbnN0IGNoYXIqIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpCiB7Ci0gICAgc3RhdGlj
IE5TU3RyaW5nICpwbGF0Zm9ybUxpYnJhcnlQYXRoID0gbmlsOworICAgIHN0YXRpYyBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHBsYXRmb3JtTGlicmFyeVBhdGg7CiAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAg
ICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW1tAIn4vTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSByZXRhaW5dOwor
ICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW0Aifi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1
cHBvcnQvRHVtcFJlbmRlclRyZWUiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwogICAg
IH0pOwotICAgIHJldHVybiBwbGF0Zm9ybUxpYnJhcnlQYXRoLlVURjhTdHJpbmc7CisgICAgcmV0
dXJuIFtwbGF0Zm9ybUxpYnJhcnlQYXRoIFVURjhTdHJpbmddOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tCmluZGV4IDQ5MTQzMTNiMTg5YmM4NWUx
Yjk3OGRjMzU2OWI3ZGJlZjc1NDY1MDMuLmVkZDEyNjk3MjgxOTNjODlkOGIyOWQ0MjY3MzBmZTUx
NThiMDFhMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQpAQCAtNTQsNyArNTQsNyBA
QCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQog
c3RhdGljIHZvaWQgZGlzYWJsZUFwcE5hcEluVUlQcm9jZXNzKCkKIHsKICAgICBOU0FjdGl2aXR5
T3B0aW9ucyBvcHRpb25zID0gKE5TQWN0aXZpdHlVc2VySW5pdGlhdGVkQWxsb3dpbmdJZGxlU3lz
dGVtU2xlZXAgfCBOU0FjdGl2aXR5TGF0ZW5jeUNyaXRpY2FsKSAmIH4oTlNBY3Rpdml0eVN1ZGRl
blRlcm1pbmF0aW9uRGlzYWJsZWQgfCBOU0FjdGl2aXR5QXV0b21hdGljVGVybWluYXRpb25EaXNh
YmxlZCk7Ci0gICAgc3RhdGljIGlkIGFzc2VydGlvbiA9IFtbW05TUHJvY2Vzc0luZm8gcHJvY2Vz
c0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjpAIldlYktpdFRl
c3RSdW5uZXIgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Npb24iXSBy
ZXRhaW5dOworICAgIHN0YXRpYyBSZXRhaW5QdHI8aWQ+IGFzc2VydGlvbiA9IFtbTlNQcm9jZXNz
SW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29u
OkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBw
cmVzc2lvbiJdOwogICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRpb24pOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421714</attachid>
            <date>2021-02-26 15:31:58 -0800</date>
            <delta_ts>2021-02-26 16:18:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222439-20210226153157.patch</filename>
            <type>text/plain</type>
            <size>85717</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NjIwODMyNGMwNjAwZjQ2MzZiYWY1YWJlYTA0ZjllOWRkNmNmNjc3Li5hZDE5YWRlNTI4YTQyYmU2
YTM4NTlhMDVkODc3YjgwMGZlOGFjNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIGV4
cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0
cjw+LgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKCtbSlNDb250ZXh0
IGN1cnJlbnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGJlZ2luQ2FsbGJhY2tX
aXRoRGF0YTpjYWxsZWVWYWx1ZTp0aGlzVmFsdWU6YXJndW1lbnRDb3VudDphcmd1bWVudHM6XSk6
CisgICAgICAgICgtW0pTQ29udGV4dCBlbmRDYWxsYmFja1dpdGhEYXRhOl0pOgorICAgICAgICAq
IEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1t
OgorICAgICAgICAoLVtUaW55RE9NTm9kZSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgorCiAy
MDIxLTAyLTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rmxha3kgSlNDIHRlc3Q6IHN0cmVzcy9hdG9taWMtaW5jcmVtZW50LWJpZ2ludDY0LmpzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWFmYmI4YWMwMzAwMGFiZTkzZmQ1NTcxYmM3YTQwNDQ0YjkwZGEzMC4uM2NiYjRj
Y2QxNmFiOTIwODQ2MTI5NDM2NzkxMmRmMTFlMmVkYWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDIxLTAyLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI0MzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWR1Y2UgZXhwbGlj
aXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4u
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EXSk6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVzdWx0SXNVUkwpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKFdlYkRl
ZmF1bHRGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VEZWNvZGVy
QXNzZXRPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpuc0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAoV2ViQ29yZTo6UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlN
RVR5cGVzU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnRlbXBvcmFyeUZpbGVBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZU1vdGlvbk1hbmFnZXIgY2hlY2tDbGllbnRTdGF0dXNdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChTZW5kTWVzc2FnZSk6CisgICAg
ICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlRocmVhZENhbGxEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJSdW5Mb29w
VW5sb2NrSW50ZXJuYWwpOgorICAgICAgICAoUnVuV2ViVGhyZWFkKToKKyAgICAgICAgKFdlYlRo
cmVhZE5TUnVuTG9vcCk6CisKIDIwMjEtMDItMjYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2df
MjJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2Ug
YXR0cmlidXRlIHNvIHRoYXQgTWFjIGNsaWVudHMgY2FuIGFjY2VzcyB0aGlzIGZ1bmN0aW9uYWxp
dHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDU2YzI2NTNkNzY0YTE1MzNlYTAwZGY1NmNhMjExNjI5MTRiM2JkMTQu
LjkxOThmMjZlYTZmNDQ5OTAyMzRjNzA5NTUxMGQxYWU5OWNiMGI3Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjQz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZHVjZSBl
eHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5Q
dHI8Pi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9h
ZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OmlzRmVhdHVyZUZsYWdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6
OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJz
aXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoLVtXS1BE
RlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EXSk6CisKIDIwMjEtMDItMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CiAKICAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIg
NyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0NmYyNDY3ODQ5OWJmZWMxOWZiNTMwNWZlYTY2YTQ3NWY3
YzFjZmEuLmI0YzEwNGYwNTcwMDFhZTczZTk4NDAwZWI1OGNmZjE1NWQwNWJmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0g
aW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJOU1VS
TEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1l
XSk6CisgICAgICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dl
YlN0cmluZ1RydW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOgorICAgICAg
ICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VN
YW5hZ2VyIF9zdG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKF9XZWJDcmVhdGVGcmFnbWVudCk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhU
TUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRN
TFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dl
YkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOgorICAgICAg
ICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKyAg
ICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tOgorICAg
ICAgICAoV2ViS2l0Ojppc0ZlYXR1cmVGbGFnRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1M
RG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jaGVja0RpZFBlcmZv
cm1GaXJzdE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQcmVmZXJlbmNlczpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBwcmVmZXJlbmNlc10pOgorICAgICAgICAoLVtXZWJWaWV3
IHNldEdyb3VwTmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIw
MjEtMDItMjUgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzQ2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KaW5kZXggZTNhZjBiMTQxZGU4MTdkMjg3NThiMzAzODAxMWMyZDFlY2NhMzYyYi4u
MGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0ZWZjM2RjN2IzMzJjM2JkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI0MiwxMyArMjQyLDEzIEBAICsgKE5TQXJyYXkg
KiljdXJyZW50QXJndW1lbnRzCiAgICAgaWYgKCFlbnRyeS0+Y3VycmVudEFyZ3VtZW50cykgewog
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsK
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gZW50cnktPmFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OmNvdW50XTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgW2FyZ3VtZW50cyBz
ZXRPYmplY3Q6W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+YXJndW1lbnRzW2ld
IGluQ29udGV4dDpjb250ZXh0XSBhdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIGVudHJ5
LT5jdXJyZW50QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICBlbnRyeS0+Y3VycmVudEFy
Z3VtZW50cyA9IFdURk1vdmUoYXJndW1lbnRzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZW50cnkt
PmN1cnJlbnRBcmd1bWVudHM7CisgICAgcmV0dXJuIGVudHJ5LT5jdXJyZW50QXJndW1lbnRzLmdl
dCgpOwogfQogCiAtIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTM3MSw3
ICszNzEsNyBAQCAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICop
Y2FsbGJhY2tEYXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUgogICAgIFRocmVhZCYgdGhyZWFkID0g
VGhyZWFkOjpjdXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBDYWxsYmFja0RhdGEg
KnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwotICAgICpjYWxs
YmFja0RhdGEgPSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRp
b24gcmV0YWluXSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1l
bnRzLCBuaWwgfTsKKyAgICAqY2FsbGJhY2tEYXRhID0gQ2FsbGJhY2tEYXRhIHsgcHJldlN0YWNr
LCBzZWxmLCBzZWxmLmV4Y2VwdGlvbiwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLCBuaWwgfTsKICAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tE
YXRhOwogICAgIHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQpAQCAtMzc5LDkgKzM3OSw3IEBAIC0g
KHZvaWQpYmVnaW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEg
Y2FsbGVlVmFsdWU6KEpTVmFsdWVSCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxi
YWNrRGF0YSAqKWNhbGxiYWNrRGF0YQogewogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7Ci0gICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4
Y2VwdGlvbjsKLSAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07
Ci0gICAgW2NhbGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKKyAgICBzZWxm
LmV4Y2VwdGlvbiA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhjZXB0aW9uLmdldCgpOwogICAg
IHRocmVhZC5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFz
ZV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dElu
dGVybmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgK
aW5kZXggOTU4YzQ3OWY0MWNlODQxM2ZjNjk0YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uNDRjNWY1OGUz
YWMxMTA0MDRlMDM3YjU2OTM4NjFjYzIyZDE4MDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwuaApAQCAtMzIsMTIgKzMyLDEyIEBACiBzdHJ1Y3Qg
Q2FsbGJhY2tEYXRhIHsKICAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpj
b250ZXh0OwotICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8
SlNWYWx1ZT4gcHJlc2VydmVkRXhjZXB0aW9uOwogICAgIEpTVmFsdWVSZWYgY2FsbGVlVmFsdWU7
CiAgICAgSlNWYWx1ZVJlZiB0aGlzVmFsdWU7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQ7CiAg
ICAgY29uc3QgSlNWYWx1ZVJlZiAqYXJndW1lbnRzOwotICAgIE5TQXJyYXkgKmN1cnJlbnRBcmd1
bWVudHM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IGN1cnJlbnRBcmd1bWVudHM7CiB9OwogCiBA
Y2xhc3MgSlNXcmFwcGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCmluZGV4IGI3OWFiMmJjM2FmMWJjNTNlOGM4MThhMjMzZGIwNzM2ODRiZWIxZDEuLmZm
NDdkNjE0MjI4YWNhMDk3YTViNDViNTc5YWZlYzUyOTNiMjcyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQg
PHd0Zi9NZW1vcnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9y
dCA8d3RmL0RhdGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJD
IiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRS
ZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2lu
ZyhKU0NvbnRleHRSZWYpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFRpbnlET01Ob2RlIHsKICAgICBOU011dGFibGVBcnJheSAqbV9jaGlsZHJlbjsKLSAgICBK
U1ZpcnR1YWxNYWNoaW5lICptX3NoYXJlZFZpcnR1YWxNYWNoaW5lOworICAgIFJldGFpblB0cjxK
U1ZpcnR1YWxNYWNoaW5lPiBtX3NoYXJlZFZpcnR1YWxNYWNoaW5lOwogfQogCiAtIChpZClpbml0
V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAg
LTIyOCw5ICsyMjksNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxN
YWNoaW5lICopdmlydHVhbE1hY2hpbmUKIAogICAgIG1fY2hpbGRyZW4gPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjBdOwogICAgIG1fc2hhcmVkVmlydHVhbE1hY2hp
bmUgPSB2aXJ0dWFsTWFjaGluZTsKLSNpZiAhX19oYXNfZmVhdHVyZShvYmpjX2FyYykKLSAgICBb
bV9zaGFyZWRWaXJ0dWFsTWFjaGluZSByZXRhaW5dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNTE3MTM4
YjRlZGYzMzU1YWI5MGY4ODc5ZTU1NmM5Yzg2ZDU3MWMzNC4uODNlZjI0YzE1OGFlNzBjMzYyNGY5
MzUzYzc2OWZkZTBjYzI3NTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KQEAgLTExNTQsMjkgKzExNTQsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQg
U2Nyb2xsVG9WaXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZl
cnNpb25zIGRvIG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMg
dGhlbSB0byBzZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRF
bGVtZW50QWN0aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vz
c2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gQFtO
U0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNp
YmxlQWN0aW9uXTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAv
LyBUaGUgb3JkZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUg
J2RlZmF1bHQnIGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhl
IGRlZmF1bHQgYWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0
aW9uRWxlbWVudEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nl
c3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFj
dGlvbl0gcmV0YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJy
YXk+PiBhY3Rpb25FbGVtZW50QWN0aW9ucyA9IEBbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24s
IE5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zp
c2libGVBY3Rpb25dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2Fu
Y2VsLgotICAgIHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVs
ZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0
aW9uXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IG1lbnVFbGVtZW50QWN0aW9ucyA9IFthY3Rpb25FbGVtZW50QWN0aW9ucy5nZXQoKSBhcnJh
eUJ5QWRkaW5nT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl07CiAKICAgICAvLyBT
bGlkZXIgZWxlbWVudHMgYWxsb3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNB
cnJheSAqc2xpZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRp
bmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0Fj
Y2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHNsaWRlckFjdGlvbnMgPSBbZGVmYXVsdEVsZW1l
bnRBY3Rpb25zLmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3Np
YmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXTsK
IAogICAgIE5TQXJyYXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRz
UHJlc3NBY3Rpb24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRBY3Rpb25zOwor
ICAgICAgICBhY3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnMuZ2V0KCkuZ2V0KCk7CiAgICAg
ZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNNZW51UmVsYXRlZCgpKQotICAgICAgICBhY3Rpb25z
ID0gbWVudUVsZW1lbnRBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gbWVudUVsZW1lbnRBY3Rp
b25zLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkp
Ci0gICAgICAgIGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gc2xp
ZGVyQWN0aW9ucy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkKICAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNj
ZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKICAgICBlbHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZh
dWx0RWxlbWVudEFjdGlvbnM7CisgICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlv
bnMuZ2V0KCkuZ2V0KCk7CiAKICAgICByZXR1cm4gYWN0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA4NjMzZTE2ZTU0MjQ3OGVl
N2I0NTA2OGI0NWRmNGFiZWFhM2Q0MzdkLi41NDc5NzQ0MTk2YWY5OGI3NmY0MTc5MDM2ZWU1M2Nj
MTJiYzAwOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCkBAIC0yMTUsOCArMjE1LDEzIEBAIHN0YXRpYyBCT09MIHJlc3VsdElzVVJMKEREUmVz
dWx0UmVmIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5POwogICAg
IAotICAgIHN0YXRpYyBOU1NldCAqdXJsVHlwZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOiAo
TlNTdHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJIdHRwVVJMS2V5KCksIChO
U1N0cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlcldlYlVSTEtleSgpLCAoTlNT
dHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJNYWlsVVJMS2V5KCksIChOU1N0
cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckdlbmVyaWNVUkxLZXkoKSwgKE5T
U3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyRW1haWxLZXkoKSwgbmlsXSBy
ZXRhaW5dOwotICAgIHJldHVybiBbdXJsVHlwZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICop
c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRUeXBlKHJlc3VsdCldOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiB1cmxUeXBlcyA9IFtOU1Nl
dCBzZXRXaXRoT2JqZWN0czoKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnND
b3JlX0REQmluZGVySHR0cFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRfRGF0YURl
dGVjdG9yc0NvcmVfRERCaW5kZXJXZWJVUkxLZXkoKSwKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyTWFpbFVSTEtleSgpLAorICAgICAgICAoTlNTdHJp
bmcgKilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJHZW5lcmljVVJMS2V5KCksCisgICAg
ICAgIChOU1N0cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckVtYWlsS2V5KCks
IG5pbF07CisgICAgcmV0dXJuIFt1cmxUeXBlcy5nZXQoKSBjb250YWluc09iamVjdDooTlNTdHJp
bmcgKilzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07
CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KEREUmVz
dWx0UmVmIGN1cnJlbnRSZXN1bHQsIE5TU3RyaW5nICpyZXN1bHRJZGVudGlmaWVyLCBOU0RhdGUg
KnJlZmVyZW5jZURhdGUsIE5TVGltZVpvbmUgKnJlZmVyZW5jZVRpbWVab25lLCBPcHRpb25TZXQ8
RGF0YURldGVjdG9yVHlwZT4gZGV0ZWN0aW9uVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDNiZDJkNmViYTNiMzVmZTZkYzM5NTMy
MjZmYmQ4ZDU2MGJlY2ZlOS4uMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpA
QCAtNDE1LDE2ICs0MTUsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29udmVydGVyOjpjb252
ZXJ0KCkKIC8vIFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUgTlNGb250QXR0cmli
dXRlTmFtZSBkb2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiB7
Ci0gICAgc3RhdGljIE5TRm9udCAqZGVmYXVsdEZvbnQgPSBuaWw7Ci0gICAgaWYgKGRlZmF1bHRG
b250KQotICAgICAgICByZXR1cm4gZGVmYXVsdEZvbnQ7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBb
TlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07Ci0gICAgaWYgKCFmb250
KQotICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLQotICAgIGRl
ZmF1bHRGb250ID0gW2ZvbnQgcmV0YWluXTsKLSAgICByZXR1cm4gZGVmYXVsdEZvbnQ7CisgICAg
c3RhdGljIGF1dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZTox
Ml07CisgICAgICAgIGlmICghZm9udCkKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3Rl
bUZvbnRPZlNpemU6MTJdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZvbnQpOworICAgIH0o
KSk7CisgICAgcmV0dXJuIGRlZmF1bHRGb250LmdldCgpLmdldCgpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU3ZjIx
YzU4ODg5YjY3NjM4Y2RjMjhhNDExNTQyZmFjZmU1MjAyNjMuLmYzNjljZjBjMjlmNjY5ZGNmMmZh
ZGY4YTVkY2E5YzI4MTJiZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjI1LDEzICsyMjUsMTEgQEAgc3RhdGljIE5TVVJMICpjdXN0
b21TY2hlbWVVUkwoKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICppbWFnZURlY29kZXJBc3NldE9w
dGlvbnMoKQogewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbXSB7Ci0gICAg
ICAgIHJldHVybiBbQHsKLSAgICAgICAgICAgIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlv
bnNLZXk6IEAoQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkQWxsKSwKLSAgICAgICAg
ICAgIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXk6IEBZRVMsCi0gICAgICAgIH0g
cmV0YWluXTsKLSAgICB9KCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBvcHRpb25zID0gQHsKKyAgICAgICAg
QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVz
dHJpY3Rpb25Gb3JiaWRBbGwpLAorICAgICAgICBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENh
Y2hlS2V5OiBAWUVTLAorICAgIH07CisgICAgcmV0dXJuIG9wdGlvbnMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUgOiBwdWJsaWMgTWVkaWFTYW1wbGVB
VkZPYmpDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db2xvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbQppbmRleCBkOTMxZDZjYWVhZDAwZjdhYzdiMDg4YjM4OWEwNGE4YjUzMTMwZjJmLi5k
NDQ5YzQ4MjQ5NTg1MTY0MGRhOTNkNWNiOWVhYjY2Mzc2MTg4MTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMTYsMTYgKzEx
NiwxNiBAQCBOU0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAoY29s
b3IuaXNJbmxpbmUoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgY29s
b3IuYXNJbmxpbmUoKSB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEg
eyBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMg
TlNDb2xvciAqY2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46
MCBibHVlOjAgYWxwaGE6MF0gcmV0YWluXTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9y
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4g
Y2xlYXJDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBh
bHBoYTowXTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpLmdldCgpOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52
YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29s
b3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0g
ICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldp
dGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV07CisgICAgICAgICAgICByZXR1cm4g
YmxhY2tDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENv
bG9yOjpSR0JBIHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBO
U0NvbG9yICp3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjox
IGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7
CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ29sb3I+PiB3
aGl0ZUNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFs
cGhhOjFdOworICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCmluZGV4IDJlMjQ3YTZlNTNkZDA1YWIxOTBlZDk2ZGRhMmExYWU2ZGFkYzk4YWYuLmE1
ZDJmNzM2YzJlZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtNDEsOCArNDEsOCBAQCBjb25zdCBjaGFyKiBR
TFByZXZpZXdQcm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKIAogTlNTZXQgKlFMUHJldmlld0dl
dFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpzZXQgPSBbUEFM
Ojpzb2Z0TGlua19RdWlja0xvb2tfUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzKCkgcmV0
YWluXTsKLSAgICByZXR1cm4gc2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNTZXQ+PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFByZXZpZXdHZXRTdXBw
b3J0ZWRNSU1FVHlwZXMoKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0
aWMgTG9jayBxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jazsKQEAgLTEwMiwyMSArMTAy
LDIxIEBAIGJvb2wgaXNRdWlja0xvb2tQcmV2aWV3VVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0
aWMgTlNEaWN0aW9uYXJ5ICp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcygpCiB7Ci0gICAgc3RhdGlj
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtAeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gYXR0cmlidXRlcyA9IEB7CiAgICAgICAgIE5TRmls
ZU93bmVyQWNjb3VudE5hbWUgOiBOU1VzZXJOYW1lKCksCiAgICAgICAgIE5TRmlsZVBvc2l4UGVy
bWlzc2lvbnMgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6KFdFQl9VUkVBRCB8IFdFQl9V
V1JJVEUpXSwKLSAgICAgICAgfSByZXRhaW5dOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAg
IH07CisgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0Rp
Y3Rpb25hcnkgKnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbQHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICBOU0ZpbGVP
d25lckFjY291bnROYW1lIDogTlNVc2VyTmFtZSgpLAogICAgICAgICBOU0ZpbGVQb3NpeFBlcm1p
c3Npb25zIDogW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOihXRUJfVVJFQUQgfCBXRUJfVVdS
SVRFIHwgV0VCX1VFWEVDKV0sCiAgICAgICAgIE5TRmlsZVByb3RlY3Rpb25LZXkgOiBOU0ZpbGVQ
cm90ZWN0aW9uQ29tcGxldGVVbmxlc3NPcGVuLAotICAgICAgICB9IHJldGFpbl07Ci0gICAgcmV0
dXJuIGF0dHJpYnV0ZXM7CisgICAgfTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoKS5nZXQo
KTsKIH0KIAogTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJp
bmcgKmZpbGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNv
cmVNb3Rpb25NYW5hZ2VyLm1tCmluZGV4IDI3YjQyNDhjNjc5N2IyYzdmNjIzNWViZTFlYjRiZTZj
YzMzZjUxODMuLmVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIu
bW0KQEAgLTE3OCwxMyArMTc4LDggQEAgLSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAg
ICBpZiAobV9oZWFkaW5nQXZhaWxhYmxlKQogICAgICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2Vy
IHN0YXJ0VXBkYXRpbmdIZWFkaW5nXTsKIAotICAgICAgICBpZiAoIW1fdXBkYXRlVGltZXIpIHsK
LSAgICAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRo
VGltZUludGVydmFsOmtNb3Rpb25VcGRhdGVJbnRlcnZhbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6c2VsZgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6
WUVTXSByZXRhaW5dOwotICAgICAgICB9CisgICAgICAgIGlmICghbV91cGRhdGVUaW1lcikKKyAg
ICAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1l
SW50ZXJ2YWw6a01vdGlvblVwZGF0ZUludGVydmFsIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3Rvcih1cGRhdGUpIHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU107CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgW21fdXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIg
PSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KaW5kZXggMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MC4uNjYw
MDc2YWRmNzY2Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2RkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNDcsNiArNDcsNyBA
QAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgogI2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CkBAIC0xMTEsNyArMTEyLDYg
QEAgc3RhdGljIFJlY3Vyc2l2ZUxvY2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCiBzdGF0aWMgdm9p
ZCogYXV0b3JlbGVhc2VQb29sTWFyazsKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgd2ViVGhyZWFkUnVu
TG9vcDsKLXN0YXRpYyBOU1J1bkxvb3AqIHdlYlRocmVhZE5TUnVuTG9vcDsKIHN0YXRpYyBwdGhy
ZWFkX3Qgd2ViVGhyZWFkOwogc3RhdGljIEJPT0wgaXNXZWJUaHJlYWRMb2NrZWQ7CiBzdGF0aWMg
Qk9PTCB3ZWJUaHJlYWRTdGFydGVkOwpAQCAtMTI3LDExICsxMjcsOCBAQCB0eXBlZGVmIGVudW0g
ewogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwogc3Rh
dGljIENGTXV0YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKIAotc3RhdGlj
IHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopOwotCiBzdGF0aWMgTG9jayBk
ZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwot
c3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOwogc3RhdGljIENGUnVuTG9v
cFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBkZWxlZ2F0
ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKQEAgLTE2MSwxNCArMTU4LDMw
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBzQXN5bmNEZWxlZ2F0ZXMoKQog
ICAgIHJldHVybiBhc3luY0RlbGVnYXRlczsKIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1J1bkxv
b3A+JiB3ZWJUaHJlYWROU1J1bkxvb3AoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNSdW5Mb29wPj4gd2ViVGhyZWFkTlNSdW5Mb29wOworICAgIHJldHVybiB3ZWJU
aHJlYWROU1J1bkxvb3A7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYgZGVs
ZWdhdGVJbnZvY2F0aW9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TSW52b2NhdGlvbj4+IGRlbGVnYXRlSW52b2NhdGlvbjsKKyAgICByZXR1cm4gZGVsZWdhdGVJ
bnZvY2F0aW9uOworfQorCiBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSB1bnNpZ25lZCB3ZWJUaHJl
YWREZWxlZ2F0ZU1lc3NhZ2VTY29wZUNvdW50ID0gMDsKIAogc3RhdGljIGJvb2wgcGVyQ2FsbG91
dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQ7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2Fn
ZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3Nh
Z2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0
aW9uIGludm9rZV07Ci0gICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsK
KworICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFpbigpID09
IENGUnVuTG9vcEdldEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtpbnZvY2F0aW9uID0gV1RGTW92ZShpbnZvY2F0aW9uKV0geyB9KTsK
IH0KIAogc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCopCkBAIC0xODUsMTUg
KzE5OCwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkKikKICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOwogCiAjaWYgTE9HX01FU1NB
R0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xh
c3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKKyAgICAgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uKCkgdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRl
ciBjbGFzc11dKSB7CiAgICAgICAgICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgICAgICBbZGVs
ZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3VtZW50OiZhcmd1bWVudDAgYXRJbmRleDowXTsKKyAgICAg
ICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24oKSBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5k
ZXg6MF07CiAgICAgICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFy
Z3VtZW50MCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSBy
ZWNlaXZlOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKSk7CisgICAgICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVAIiwgTlNT
dHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSkpOwogI2Vu
ZGlmCiAKLSAgICAgICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsKKyAgICAgICAg
U2VuZE1lc3NhZ2UoV1RGTW92ZShkZWxlZ2F0ZUludm9jYXRpb24oKSkpOwogCiAgICAgICAgIGRl
bGVnYXRlSGFuZGxlZCA9IFlFUzsKICAgICAgICAgZGVsZWdhdGVDb25kaXRpb24ubm90aWZ5T25l
KCk7CkBAIC0yMTQsMjYgKzIyNywyNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotc3RhdGljIHZv
aWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCitzdGF0aWMg
dm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2Nh
dGlvbikKIHsKICAgICBpZiAoIVdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFNlbmRN
ZXNzYWdlKGludm9jYXRpb24pOworICAgICAgICBTZW5kTWVzc2FnZShXVEZNb3ZlKGludm9jYXRp
b24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChkZWxlZ2F0ZVNvdXJj
ZSk7CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAotICAgIGRlbGVnYXRlSW52b2NhdGlvbiA9
IGludm9jYXRpb247CisgICAgZGVsZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGludm9jYXRp
b24pOwogICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAjaWYgTE9HX01FU1NBR0VTCi0gICAg
aWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkgeworICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbigpIHRh
cmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgewogICAg
ICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1l
bnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOworICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uKCkg
Z2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAgICBOU0xvZyhAIm5vdGlm
aWNhdGlvbiBzZW5kOiAlQCIsIGFyZ3VtZW50MCk7CiAgICAgfSBlbHNlCi0gICAgICAgIE5TTG9n
KEAiZGVsZWdhdGUgc2VuZDogJUAiLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZv
Y2F0aW9uIHNlbGVjdG9yXSkpOworICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHNlbmQ6ICVAIiwg
TlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSkpOwog
I2VuZGlmCiAKICAgICB7CkBAIC0yNDgsMTAgKzI2MSwxMCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVs
ZWdhdGVNZXNzYWdlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKICAgICAgICAgd2hpbGUgKCFk
ZWxlZ2F0ZUhhbmRsZWQpIHsKICAgICAgICAgICAgIGlmICghZGVsZWdhdGVDb25kaXRpb24ud2Fp
dEZvcihkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgewogICAgICAgICAgICAg
ICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247Ci0gICAgICAgICAgICAgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIg
Y2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1
bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAgICAgICAgIGlm
IChbW2RlbGVnYXRlSW52b2NhdGlvbigpIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2Nh
dGlvbigpIGdldEFyZ3VtZW50OiZkZWxlZ2F0ZUluZm9ybWF0aW9uIGF0SW5kZXg6MF07CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9u
ID0gTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pOwor
ICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2Vs
ZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSk7CiAgICAgCiAgICAgICAgICAg
ICAgICAgQ0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxv
b3BHZXRNYWluKCkpOwogICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkg
ZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4gcnVuIGxvb3Ag
bW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxl
Z2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwpAQCAtMjgyLDE5ICsyOTUsNiBAQCB2
b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAg
IF9XZWJUaHJlYWRMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJl
bGVhc2UoaWQgb2JqKQotewotICAgIGF1dG8gYWRvcHRlZE9iaiA9IGFkb3B0TlMob2JqKTsKLSAg
ICBpZiAoIVdlYlRocmVhZElzRW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4oKSA9PSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLSNpZiBMT0dfUkVMRUFTRVMKLSAg
ICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbd2ViIHRocmVhZF0gOiAlQCIsIG9iaik7Ci0jZW5kaWYK
LSAgICAvLyBXZSBvd24gb2JqIGF0IHRoaXMgcG9pbnQsIHNvIHdlIGRvbid0IG5lZWQgdGhlIGJs
b2NrIHRvIGltcGxpY2l0bHkKLSAgICAvLyByZXRhaW4gaXQuCi0gICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFthZG9wdGVkT2JqID0gV1RGTW92ZShhZG9wdGVkT2JqKV0geyB9KTsKLX0KLQog
dm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFTU0VSVCghV2Vi
VGhyZWFkSXNDdXJyZW50KCkpOwpAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIEhhbmRs
ZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB2b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0
ZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgLy8gTlNJbnZvY2F0aW9uIHJlbGVh
c2VkIGluIFNlbmRNZXNzYWdlKCkKLSAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKFtpbnZvY2F0aW9u
IHJldGFpbl0pOworICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoaW52b2NhdGlvbik7CiB9CiAKIHZv
aWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyogbmFtZSwgaWQgb2JqZWN0LCBp
ZCB1c2VySW5mbykKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5s
b2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBvb2xPcGVyYXRpb24pCiAgICAg
QVNTRVJUKHNBc3luY0RlbGVnYXRlcygpKTsKICAgICBpZiAoW3NBc3luY0RlbGVnYXRlcygpIGNv
dW50XSkgewogICAgICAgICBmb3IgKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbiBpbiBzQXN5bmNE
ZWxlZ2F0ZXMoKS5nZXQoKSkKLSAgICAgICAgICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoW2ludm9j
YXRpb24gcmV0YWluXSk7CisgICAgICAgICAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKGludm9jYXRp
b24pOwogICAgICAgICBbc0FzeW5jRGVsZWdhdGVzKCkgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAg
fQogCkBAIC02MzIsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikK
IAogICAgIHdlYlRocmVhZENvbnRleHQgPSBDdXJyZW50VGhyZWFkQ29udGV4dCgpOwogICAgIHdl
YlRocmVhZFJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgd2ViVGhyZWFkTlNS
dW5Mb29wID0gW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJldGFpbl07CisgICAgd2ViVGhy
ZWFkTlNSdW5Mb29wKCkgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKIAogICAgIENGUnVu
TG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNl
cnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJl
Zm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BM
b2NrLCBudWxscHRyKTsKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29w
LCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAt
ODk4LDggKzg5OCw4IEBAIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpCiBOU1J1
bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKQogewogICAgIGlmICh3ZWJUaHJlYWRTdGFy
dGVkKSB7Ci0gICAgICAgIEFTU0VSVCh3ZWJUaHJlYWROU1J1bkxvb3ApOwotICAgICAgICByZXR1
cm4gd2ViVGhyZWFkTlNSdW5Mb29wOworICAgICAgICBBU1NFUlQod2ViVGhyZWFkTlNSdW5Mb29w
KCkpOworICAgICAgICByZXR1cm4gd2ViVGhyZWFkTlNSdW5Mb29wKCkuZ2V0KCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2Fk
Q29jb2EubW0KaW5kZXggNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2Mi4u
OGNjZTI5NTU0YzBiNTYyM2NjOTdkYjlkNDgyN2M5YTEyY2VhMGViNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tCkBAIC01MSwxNSArNTEsMTUgQEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAog
CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzM0NzQ1MTcxPi4gRml4ZWQgaW4gaU9TIDEzIGFuZCBtYWNPUyAxMC4xNSwgYnV0
IHdlIHN0aWxsIG5lZWQgdG8gc3VwcG9ydCBtYWNPUyAxMC4xNCBmb3Igbm93LgogI2lmIFVTRShM
RUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKLSAgICBzdGF0aWMgTlNTZXQ8Q2xhc3M+ICpwbGlz
dENsYXNzZXMgPSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1Nl
dDxDbGFzcz4+PiBwbGlzdENsYXNzZXM7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHBsaXN0
Q2xhc3NlcyA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtO
U0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0
YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIHJldGFp
bl07CisgICAgICAgIHBsaXN0Q2xhc3Nlcy5nZXQoKSA9IFtOU1NldCBzZXRXaXRoT2JqZWN0czpb
TlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBb
TlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVx
dWVzdCBjbGFzc10sIG5pbF07CiAgICAgfSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOm5zRGF0
YS5nZXQoKSBlcnJvcjpuaWxdKTsKICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQ
b2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07Ci0gICAgYXV0byBk
aWN0aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6cGxpc3RDbGFzc2VzIGZvcktleTpAIk5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAqPihbW3Vu
YXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOnBsaXN0Q2xhc3Nlcy5nZXQoKS5nZXQoKSBm
b3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKICAg
ICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CiAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0
OnN0YXRpY19jYXN0PE5TU3RyaW5nKj4ocGF0aCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1l
SW5mb0xvY2FsUGF0aCJdOwogICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJj
aGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlc0NvY29hLm1tCmluZGV4IDEwMTQ1YjkwYWEzYjRkYTY5YTA4YzA4ODc5ZDg1MDZlYzZh
NmJkYzIuLmM4OTE0ODRiYmU3ZDc1YTBiOTViODI0MDNlZWViMDY2OTZmY2EyZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlc0NvY29hLm1tCkBAIC00NSwxMiArNDUsMTIgQEAgYm9vbCBpc0ZlYXR1cmVG
bGFnRW5hYmxlZChjb25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogICAgIGlmICghaXNXZWJLaXRC
dW5kbGVGcm9tU3RhZ2VkRnJhbWV3b3JrKQogICAgICAgICByZXR1cm4gX29zX2ZlYXR1cmVfZW5h
YmxlZF9pbXBsKCJXZWJLaXQiLCAoY29uc3QgY2hhciopZmVhdHVyZU5hbWUudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gW1tOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5L0FwcGxlL1N5c3RlbS9M
aWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il0gcmV0YWluXTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGRpY3Rpb25hcnkg
PSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGlicmFyeS9B
cHBsZS9TeXN0ZW0vTGlicmFyeS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdCJdOwog
Ci0gICAgaWYgKCFbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RG
b3JLZXk6QCJFbmFibGVkIl0pCisgICAgaWYgKCFbW2RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9y
S2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0pCiAgICAgICAgIHJldHVy
biBfb3NfZmVhdHVyZV9lbmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJl
TmFtZS5jaGFyYWN0ZXJzOCgpKTsKIAotICAgIHJldHVybiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZv
cktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5h
bWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBib29sVmFsdWVdOworICAgIHJldHVybiBbW1tk
aWN0aW9uYXJ5LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAi
RW5hYmxlZCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGljdGlvbmFy
eS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQi
XSBib29sVmFsdWVdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlQ29jb2EubW0KaW5kZXggZDJkOGFlOGZjZDU3N2MxMzIyYTE5NGNjZDU1OGIwZDhj
NmVjZTRmNy4uNGVkMzc3NGEwNGYwODE4ZTU1NzQxMTFhMjc1NDZmNTZkMjdiN2Q5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IEFQSSB7CiBXVEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0
aChib29sIGxlZ2FjeUZpbGVuYW1lKQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqY29udGVudFJ1bGVMaXN0U3RvcmVVUkw7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IGNvbnRlbnRSdWxlTGlzdFN0
b3JlVVJMOwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBOU1VS
TCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6
TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVG
b3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CkBAIC01MywxNSArNTMsMTUg
QEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgoYm9v
bCBsZWdhY3lGaWxlbmFtZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlZ2Fj
eUZpbGVuYW1lKQotICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwgPSBbW3VybCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50RXh0ZW5zaW9ucyIgaXNEaXJlY3Rv
cnk6WUVTXSByZXRhaW5dOworICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0
KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25z
IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50UnVs
ZUxpc3RTdG9yZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRl
bnRSdWxlTGlzdHMiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICAgICAgICAgIGNvbnRl
bnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDb250ZW50UnVsZUxpc3RzIiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0gICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9yZVVSTCk7CisgICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9y
ZVVSTC5nZXQoKS5nZXQoKSk7CiAKLSAgICByZXR1cm4gY29udGVudFJ1bGVMaXN0U3RvcmVVUkwu
YWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFtj
b250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lzdGVt
UmVwcmVzZW50YXRpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5k
ZXggNTViNWZjOTU1MTY4ZTQ4NDUyY2ZiNzEwY2ViYjZhZGZlOWQwNWE5NC4uNDBkN2Y4NWJmOWJm
ODQyNjVkMDZkNDk3MmRjNGQwNmVlMGNlOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yMzEsNyAr
MjMxLDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQog
KyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZh
dGUKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMg
TlNTZXQgKmFsbFdlYnNpdGVEYXRhVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU1NldD4+IGFsbFdlYnNpdGVEYXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeIHsKICAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFsKICAgICAgICAg
ICAgIF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwKQEAgLTI0NywxMCArMjQ3LDEwIEBAICsg
KE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRl
CiAjZW5kaWYKICAgICAgICAgXTsKIAotICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzID0gW1tb
c2VsZiBhbGxXZWJzaXRlRGF0YVR5cGVzXSBzZXRCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6cHJp
dmF0ZVR5cGVzXSByZXRhaW5dOworICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzLmdldCgpID0g
W1tzZWxmIGFsbFdlYnNpdGVEYXRhVHlwZXNdIHNldEJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpw
cml2YXRlVHlwZXNdOwogICAgIH0pOwogCi0gICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7
CisgICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKEJP
T0wpX2RlZmF1bHREYXRhU3RvcmVFeGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCAwOGNiOGVkMDYzNmJmNDA2N2Q3NGQ1YjM5ZDE5ZDVlOGY2NDRiZjNkLi5mY2E5
NmMyZjljZTJjMjk2ZWZmNDk2ZWVmMWViZWJhYWY1OWQ2MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0zMzIsNyArMzMyLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURp
cmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiB0ZW1wVVJMOwogICAgIAogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAt
MzQ2LDEwICszNDYsMTAgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlMKICAgICAgICAgICAgIHVy
bCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNE
aXJlY3Rvcnk6WUVTXTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtb
dXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVT
XSByZXRhaW5dOworICAgICAgICB0ZW1wVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7CiAgICAgCi0g
ICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJl
Y3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMLmdl
dCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5
OllFU107CiAKICAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IFNob3VsZENyZWF0ZURp
cmVjdG9yeTo6WWVzCiAgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllF
UyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCkBAIC0zNjEsNyArMzYxLDcgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlMKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJl
Y3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQog
ewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VS
TCAqY2FjaGVVUkw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+
IGNhY2hlVVJMOwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBO
U1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rv
cnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0
ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTM3NSwxMCArMzc1
LDEwIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6CiAgICAgICAgICAgICB1cmwgPSBbdXJsIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllF
U107CiAgICAgICAgIH0KIAotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgICAg
ICBjYWNoZVVSTC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vi
S2l0IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0gICAgTlNVUkwgKnVybCA9IFtjYWNo
ZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9y
eTpZRVNdOworICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBpZiAoc2hv
dWxkQ3JlYXRlRGlyZWN0b3J5ID09IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6WWVzCiAgICAgICAg
ICYmICFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgdXJsKTsKQEAgLTM4OSw3ICszODksNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6Ogog
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICp3
ZWJzaXRlRGF0YVVSTDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJM
Pj4gd2Vic2l0ZURhdGFVUkw7CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAg
ICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZv
ckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBh
cHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTQw
NSwxMCArNDA1LDEwIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0CiAgICAgICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGly
ZWN0b3J5OllFU107CiAgICAgICAgIH0KIAotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07CisgICAgICAgIHdlYnNpdGVEYXRhVVJMLmdldCgpID0gW3VybCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXTsKICAg
ICB9KTsKIAotICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAq
dXJsID0gW3dlYnNpdGVEYXRhVVJMLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpk
aXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CiAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggNjYxNjJlM2ZhMjkzZWI3NGViZWYzYzBkNTBhYzE3ZWFjZmJkYzgwMi4uMjIw
Yjc2OWMwMWI0YTYzZWM5NzRiMzk5YTUxODZjMThhNDM0ODYwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC00NTAzLDExICs0NTAzLDExIEBAIC0gKE5TQXJyYXkgKilrZXlDb21tYW5kcwogICAgIGlmICgh
X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBzdGF0aWMgTlNBcnJheSogZWRpdGFibGVLZXlDb21tYW5kcyA9IFtAWworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGVkaXRhYmxlS2V5Q29t
bWFuZHMgPSBAWwogICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJc
dCIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX25leHRBY2Nlc3NvcnlUYWI6KV0s
CiAgICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmll
ckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9wcmV2aW91c0FjY2Vz
c29yeVRhYjopXQotICAgIF0gcmV0YWluXTsKLSAgICByZXR1cm4gZWRpdGFibGVLZXlDb21tYW5k
czsKKyAgICBdOworICAgIHJldHVybiBlZGl0YWJsZUtleUNvbW1hbmRzLmdldCgpLmdldCgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCmluZGV4IGEyYzhiYjFhNDcxNzhjYzBjMzQ3YWRjNDdiZDA2NDk4ZGI1N2Mx
YzcuLjJhNWIxODMyNjc2N2MyYTdkNDllNTllYmUzZThhMmMxMGIwZDNlZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjUz
LDI1ICsyNTMsMjAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVOYW1l
cyA9IDA7Ci0KLSAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7Ci0gICAgICAgIGF0dHJpYnV0ZU5h
bWVzID0gQFsKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJs
ZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0
ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAvLyBQREZMYXllckNvbnRyb2xsZXIgaGFzIGl0cyBvd24gYWNjZXNzaWJpbGl0eUNoaWxk
cmVuLgotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUKLSAgICAg
ICAgICAgIF07Ci0gICAgICAgIFthdHRyaWJ1dGVOYW1lcyByZXRhaW5dOwotICAgIH0KLQotICAg
IHJldHVybiBhdHRyaWJ1dGVOYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiBhdHRyaWJ1dGVOYW1lcyA9IEBbCisgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVBhcmVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRl
LAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFi
bGVkQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwK
KyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAgICAgLy8gUERG
TGF5ZXJDb250cm9sbGVyIGhhcyBpdHMgb3duIGFjY2Vzc2liaWxpdHlDaGlsZHJlbi4KKyAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUKKyAgICBdOworCisgICAgcmV0dXJu
IGF0dHJpYnV0ZU5hbWVzLmdldCgpLmdldCgpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNV
UkxFeHRyYXMubW0KaW5kZXggODc1MzYyNDJiNzkwMzRlYjkzNGNiNWY3MmE4OTczNmY3MTFhOTUw
Zi4uMWVjMDRlYWFmNWI0NjQ3NmQ4OTlkZmU4NTVlZWYyNmNjMjkzNTgyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0yNzYsMTcgKzI3
NiwxNiBAQCAtKE5TUmFuZ2UpX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lCiAgICAgTlNSYW5nZSBj
b2xvbiA9IFtzZWxmIHJhbmdlT2ZTdHJpbmc6QCI6Il07CiAgICAgaWYgKGNvbG9uLmxvY2F0aW9u
ICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7CiAgICAgICAgIE5TUmFuZ2Ug
c2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKLSAgICAgICAgc3RhdGljIE5TQ2hhcmFjdGVy
U2V0ICpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0ID0gbmlsOwotICAgICAgICBpZiAoIUludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQpIHsKKyAgICAgICAgc3RhdGljIGF1dG8gaW52ZXJzZVNjaGVt
ZUNoYXJhY3RlclNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgICAgICAvKgog
ICAgICAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2VjIG9u
IGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcwogICAgICAgICAgICAgIGV2ZXJ5
dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFr
ZXMgbWUgd29uZGVyIGlmIHdlCiAgICAgICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhl
IGNoYXJhY3RlciBzZXQgaGVyZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgICBOU1N0cmlu
ZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgICAgIEludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBbW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRo
Q2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0gcmV0
YWluXTsKLSAgICAgICAgfQotICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VP
ZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCBvcHRpb25zOjAgcmFu
Z2U6c2NoZW1lXTsKKyAgICAgICAgICAgIHJldHVybiByZXRhaW5QdHIoW1tOU0NoYXJhY3RlclNl
dCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJz
XSBpbnZlcnRlZFNldF0pOworICAgICAgICB9KCkpOworICAgICAgICBOU1JhbmdlIGlsbGVnYWxz
ID0gW3NlbGYgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNl
dC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKICAgICAgICAgaWYgKGlsbGVn
YWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc2NoZW1lOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU3RyaW5n
VHJ1bmNhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVu
Y2F0b3IubW0KaW5kZXggOThlY2FhOTQzNTY0NmY2MGVhZjE1YzM0NTE1NjhjOTIwNzA2M2UxMi4u
M2VlYzgwYWMyOTczZDJiNWY2ZmY2M2QzNWUzNmQwZWEyNmIxYmNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0KQEAgLTU4LDEz
ICs1OCwxMyBAQCArICh2b2lkKWluaXRpYWxpemUKIAogKyAoTlNTdHJpbmcgKiljZW50ZXJUcnVu
Y2F0ZVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgdG9XaWR0aDooZmxvYXQpbWF4V2lkdGgKIHsK
LSAgICBzdGF0aWMgTlNGb250ICptZW51Rm9udCA9IFtbTlNGb250IG1lbnVGb250T2ZTaXplOjBd
IHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0ZvbnQ+PiBt
ZW51Rm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CiAKLSAgICBBU1NFUlQobWVudUZv
bnQpOwotICAgIGlmICghbWVudUZvbnQpCisgICAgQVNTRVJUKG1lbnVGb250LmdldCgpKTsKKyAg
ICBpZiAoIW1lbnVGb250LmdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlN0cmluZ1RydW5jYXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyaW5nLCBtYXhXaWR0
aCwgZm9udEZyb21OU0ZvbnQobWVudUZvbnQpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U3RyaW5n
VHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIG1heFdpZHRoLCBmb250RnJvbU5TRm9u
dChtZW51Rm9udC5nZXQoKS5nZXQoKSkpOwogfQogCiArIChOU1N0cmluZyAqKWNlbnRlclRydW5j
YXRlU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB0b1dpZHRoOihmbG9hdCltYXhXaWR0aCB3aXRo
Rm9udDooTlNGb250ICopZm9udApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KaW5kZXggYmJmZmRjNDU0ODA3MDhiZTk5MjE3ZDhk
MDQwMjBhOWE4YmMyNzM2NS4uMzM5NGFhNGUxZWZkMjBkYTg3ZTQ3YzUxYmIyY2RkYmMyMWQ1MjRm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdl
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3Jh
Z2VNYW5hZ2VyLm1tCkBAIC05NywxOSArOTcsMTkgQEAgLSAodm9pZClzeW5jRmlsZVN5c3RlbUFu
ZFRyYWNrZXJEYXRhYmFzZQogCiArIChOU1N0cmluZyAqKV9zdG9yYWdlRGlyZWN0b3J5UGF0aAog
ewotICAgIHN0YXRpYyBOU1N0cmluZyAqc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1N0cmluZz4+IHNMb2NhbFN0b3JhZ2VQYXRoOwogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKICAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBe
ewogICAgICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdOwotICAgICAgICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtkZWZhdWx0
cyBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKLSAgICAgICAg
aWYgKCFzTG9jYWxTdG9yYWdlUGF0aCB8fCAhW3NMb2NhbFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBsb2Nh
bFN0b3JhZ2VQYXRoID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJTdG9yYWdlRGlyZWN0b3J5
RGVmYXVsdHNLZXldOworICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZVBhdGggfHwgIVtsb2NhbFN0
b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgICAg
IE5TQXJyYXkgKnBhdGhzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNM
aWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOwogICAgICAgICAgICAgTlNT
dHJpbmcgKmxpYnJhcnlEaXJlY3RvcnkgPSBbcGF0aHMgb2JqZWN0QXRJbmRleDowXTsKLSAgICAg
ICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOworICAgICAgICAgICAg
bG9jYWxTdG9yYWdlUGF0aCA9IFtsaWJyYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYktpdC9Mb2NhbFN0b3JhZ2UiXTsKICAgICAgICAgfQotICAgICAgICBz
TG9jYWxTdG9yYWdlUGF0aCA9IFtbc0xvY2FsU3RvcmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6
aW5nUGF0aF0gcmV0YWluXTsKKyAgICAgICAgc0xvY2FsU3RvcmFnZVBhdGguZ2V0KCkgPSBbbG9j
YWxTdG9yYWdlUGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKICAgICB9KTsKLSAgICBy
ZXR1cm4gc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgcmV0dXJuIHNMb2NhbFN0b3JhZ2VQYXRoLmdl
dCgpLmdldCgpOwogfQogCiArICh2b2lkKXNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbDoo
ZG91YmxlKWludGVydmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOTFhZmM1ZDc0NDkxNDM0ZjRl
MTIzZjE4YTUwNDE3Mzg5YjM0YjNiOS4uMGRmYWU4NDlmMGQ3NzQ0ZTg3ZmQyODlkZDY2MWE1MGYx
NDBjNDI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDU5LDEwICs0NTksMTAgQEAgc3RhdGlj
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkK
IAogdm9pZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJlc3VsdCkKIHsKLSAgICBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpkb2N1bWVudEF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlc0ZvckF0
dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkgcmV0YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGRvY3VtZW50QXR0cmlidXRlcyA9IGF0dHJp
YnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpOwogICAgIE5TQXJyYXkgKnN1YnJl
c291cmNlczsKICAgICBET01Eb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCA9IFtzdHJpbmcgX2Rv
Y3VtZW50RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkKLSAgICAgICAg
ZG9jdW1lbnQ6a2l0KCZkb2N1bWVudCkgZG9jdW1lbnRBdHRyaWJ1dGVzOmRvY3VtZW50QXR0cmli
dXRlcyBzdWJyZXNvdXJjZXM6JnN1YnJlc291cmNlc107CisgICAgICAgIGRvY3VtZW50OmtpdCgm
ZG9jdW1lbnQpIGRvY3VtZW50QXR0cmlidXRlczpkb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCkuZ2V0
KCkgc3VicmVzb3VyY2VzOiZzdWJyZXNvdXJjZXNdOwogICAgIHJlc3VsdC5mcmFnbWVudCA9IGNv
cmUoZnJhZ21lbnQpOwogICAgIGZvciAoV2ViUmVzb3VyY2UqIHJlc291cmNlIGluIHN1YnJlc291
cmNlcykKICAgICAgICAgcmVzdWx0LnJlc291cmNlcy5hcHBlbmQoW3Jlc291cmNlIF9jb3JlUmVz
b3VyY2VdLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggNDdhM2Q1MzA1ZTc2MWY2YzZhNDFi
Y2FkY2Q2M2E1YzMyMjYxODEyOS4uOGU2ZWVhNjhhZjUzN2U3MTkxMmY1MjIwNmQ5ZDNmYjIwY2Q0
OGI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTk3LDM0ICs5NywzMyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IG5ld0FycmF5V2l0aFN0cmluZ3MoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUlucwogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9IFtbW1tzZWxmIHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheToKLSAgICAg
ICAgW3NlbGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zy
b21BcnJheToKLSAgICAgICAgW3NlbGYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdXSByZXRhaW5d
OwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzID0g
W1tbc2VsZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10gYXJyYXlCeUFkZGluZ09iamVjdHNG
cm9tQXJyYXk6CisgICAgICAgIFtzZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXV0gYXJyYXlC
eUFkZGluZ09iamVjdHNGcm9tQXJyYXk6W3NlbGYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdXTsK
KyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiAr
IChOU0FycmF5ICopc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1J
TUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlh
TUlNRVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcy5n
ZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
CiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
ID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IHN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5n
cyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKTsKKyAgICBy
ZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAK
ICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0Fy
cmF5ICpzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3Mo
TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSkubGVha1JlZigpOwot
ICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKSk7CisgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVz
LmdldCgpLmdldCgpOwogfQogCiArIChOU0FycmF5ICopdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVz
CiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9
IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0
YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5
cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0
aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkKWluaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXNEZWZhdWx0VmFsdWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KaW5kZXggY2Y5ZGJjYWIxODRjNWM4NTk1M2Q3NWJm
ZTBjZDVhNGY5YmZjNDZiMi4uODkwZTJiMTVhNDU4YmNlOWQ5NWY1ZTY1NzExZTQxNWEyMDFhM2Rj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KQEAgLTUyLDEyICs1MiwxMiBAQCBib29s
IGlzRmVhdHVyZUZsYWdFbmFibGVkKGNvbnN0IFN0cmluZyYgZmVhdHVyZU5hbWUpCiAgICAgaWYg
KCFpc1dlYktpdEJ1bmRsZUZyb21TdGFnZWRGcmFtZXdvcmspCiAgICAgICAgIHJldHVybiBfb3Nf
ZmVhdHVyZV9lbmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJlTmFtZS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBb
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkvQXBw
bGUvU3lzdGVtL0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4g
ZGljdGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpA
Ii9MaWJyYXJ5L0FwcGxlL1N5c3RlbS9MaWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0
LnBsaXN0Il07CiAKLSAgICBpZiAoIVtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5h
bWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKKyAgICBpZiAoIVtbZGljdGlvbmFyeS5nZXQo
KSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKICAg
ICAgICAgcmV0dXJuIF9vc19mZWF0dXJlX2VuYWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNo
YXIqKWZlYXR1cmVOYW1lLmNoYXJhY3RlcnM4KCkpOwogCi0gICAgcmV0dXJuIFtbW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CisgICAg
cmV0dXJuIFtbW2RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmpl
Y3RGb3JLZXk6QCJFbmFibGVkIl0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBb
W1tkaWN0aW9uYXJ5LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5
OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDkxN2EwNWQ4OTEwNzI5ZjQyZGFlMDZmNTlm
YjUxYTM2Yjc4MWVjYmEuLjY5NjA2YmY2ZWUzOTg5YjBiMWQ5YTIzNmZjNjY4YTBlOTVjNmVmZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0Mzgs
MTEgKzE0MzgsMTEgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
OihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBXZWJQcmVmZXJlbmNl
cyAqc3RhbmRhcmRQcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVu
Y2VzXTsKICAgICBbc3RhbmRhcmRQcmVmZXJlbmNlcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAotICAg
IF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IFtzdGFuZGFyZFByZWZlcmVuY2VzIHJldGFpbl07Cisg
ICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gc3RhbmRhcmRQcmVmZXJlbmNlczsKICAgICBfcHJp
dmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2YXRlLT5kcmF3c0Jh
Y2tncm91bmQgPSBZRVM7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgX3ByaXZhdGUt
PmJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRl
OjEgYWxwaGE6MV0gcmV0YWluXSk7CisgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IFtO
U0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6MV07CiAjZWxzZQogICAgIF9wcml2
YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNv
bG9yOjp3aGl0ZSk7CiAjZW5kaWYKQEAgLTE1MTQsNyArMTUxNCw3IEBAIC0gKHZvaWQpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBO
YW1lOihOU1N0CiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAg
fQogCi0gICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91
cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsK
KyAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFt
ZSwgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAg
ICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCiAgICAgYXV0byBzdG9yYWdl
UHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CkBAIC0xNzgw
LDcgKzE3ODAsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0
cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgICAgICBwcmVmZXJlbmNl
cyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBbcHJlZmVyZW5j
ZXMgd2lsbEFkZFRvV2ViVmlld107CiAKLSAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJl
ZmVyZW5jZXMgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNl
czsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2
YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xv
ciA9IFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKQEAgLTE3
ODksNyArMTc4OSw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5T
U3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgW2ZyYW1lVmlldyBz
ZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFi
bGVdOwogICAgIFtzZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAotICAgIF9wcml2
YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0
ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgX3ByaXZhdGUt
Pmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFtfcHJpdmF0ZS0+
cHJlZmVyZW5jZXMgX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5n
cm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAogICAgIGF1dG8gc3RvcmFnZVByb3ZpZGVyID0gUGFn
ZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAg
LSAodm9pZClfY2xvc2UKIAogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNlRm9y
SWRlbnRpZmllcjpbc2VsZiBwcmVmZXJlbmNlc0lkZW50aWZpZXJdXTsKIAotICAgIGF1dG8gcHJl
ZmVyZW5jZXMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVuY2VzLCBu
aWwpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gc3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMsIG5pbCk7CiAgICAgW3ByZWZlcmVuY2VzIGRpZFJlbW92ZUZyb21XZWJWaWV3XTsK
IAogICAgIFtzZWxmIF9jbG9zZVBsdWdpbkRhdGFiYXNlc107CkBAIC0zMzc1LDggKzMzNzUsOCBA
QCAtICh2b2lkKV9jaGVja0RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24KIAogICAgIF9wcml2YXRl
LT5fZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbiA9IFlFUzsKIAotICAgIGlmIChfcHJpdmF0ZS0+
cHJlZmVyZW5jZXMuYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsICYmIF9wcml2YXRlLT5w
cmVmZXJlbmNlcy5jYWNoZU1vZGVsIDwgV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcikKLSAg
ICAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzLmNhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9j
dW1lbnRCcm93c2VyOworICAgIGlmIChbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGF1dG9tYXRpY2Fs
bHlEZXRlY3RzQ2FjaGVNb2RlbF0gJiYgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBjYWNoZU1vZGVs
XSA8IFdlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpCisgICAgICAgIFtfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMgc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyXTsKIH0K
IAogLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBAIC01
NzgzLDEyICs1NzgzLDEyIEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2Vz
ICopcHJlZnMKIAogICAgIFtwcmVmcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAotICAgIGF1dG8gb2xk
UHJlZnMgPSBhZG9wdE5TKF9wcml2YXRlLT5wcmVmZXJlbmNlcyk7CisgICAgYXV0byBvbGRQcmVm
cyA9IHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVuY2VzLCBudWxscHRyKTsKIAogICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2Vs
ZiBuYW1lOldlYlByZWZlcmVuY2VzQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIG9iamVjdDpb
c2VsZiBwcmVmZXJlbmNlc11dOwogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNl
Rm9ySWRlbnRpZmllcjpbb2xkUHJlZnMgaWRlbnRpZmllcl1dOwogCi0gICAgX3ByaXZhdGUtPnBy
ZWZlcmVuY2VzID0gW3ByZWZzIHJldGFpbl07CisgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0g
cHJlZnM7CiAKICAgICAvLyBBZnRlciByZWdpc3RlcmluZyBmb3IgdGhlIG5vdGlmaWNhdGlvbiwg
cG9zdCBpdCBzbyB0aGUgV2ViQ29yZSBzZXR0aW5ncyB1cGRhdGUuCiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOikKQEAgLTU4MDEsNyArNTgwMSw3
IEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2VzICopcHJlZnMKIAogLSAo
V2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogewotICAgIHJldHVybiBfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXM7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5nZXQoKTsKIH0KIAog
LSAodm9pZClzZXRQcmVmZXJlbmNlc0lkZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVudGlmaWVy
CkBAIC02NTU5LDcgKzY1NTksNyBAQCAtICh2b2lkKXNldEdyb3VwTmFtZTooTlNTdHJpbmcgKiln
cm91cE5hbWUKICAgICBpZiAoX3ByaXZhdGUtPmdyb3VwKQogICAgICAgICBfcHJpdmF0ZS0+Z3Jv
dXAtPnJlbW92ZVdlYlZpZXcoc2VsZik7CiAKLSAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3
R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBbX3ByaXZhdGUtPnByZWZlcmVuY2VzIF9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGhdKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2Vs
Zik7CiAKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDgzYzZkNzgwNTAyZWYyYjE4YjU1M2E4ZTg5
ZDRjMWVlNTA4YWU4ODcuLjE1YzM5MTY4ZTAxMmRiNTRiYjZlNTA5NGVlNjEzYjAwZjY3MTU4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAg
LTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudDsKICAg
ICBCT09MIHVzZXJBZ2VudE92ZXJyaWRkZW47CiAgICAgCi0gICAgV2ViUHJlZmVyZW5jZXMgKnBy
ZWZlcmVuY2VzOworICAgIFJldGFpblB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1VSTCAqdXNlclN0eWxlU2hlZXRMb2NhdGlv
bjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDRlYzg5NTc5ZDIyZDQ0OTBlZWJjYzQ2ZmIzODcyODc4ZjNlZDM0NWEuLjQxMTE4OTY3
MDhkM2Q3NzEwMmIxMjNkMjNkYTFjNjk5NTk5YTdjYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMi0yNSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNp
dCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
dGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoYWxsb3dlZEZvbnRGYW1p
bHlTZXQpOgorICAgICAgICAoLVtEUlRNb2NrU2Nyb2xsZXIgZHJhd0tub2JdKToKKyAgICAgICAg
KC1bRFJUTW9ja1Njcm9sbGVyIGRyYXdSZWN0Ol0pOgorICAgICAgICAocHJlcGFyZUNvbnNpc3Rl
bnRUZXN0aW5nRW52aXJvbm1lbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3
IHNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGVdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6
YWxsb3dlZEZvbnRGYW1pbHlTZXQpOgorICAgICAgICAoV1RSOjpzeXN0ZW1IaWRkZW5Gb250RmFt
aWx5U2V0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBh
dGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tOgor
ICAgICAgICAoZGlzYWJsZUFwcE5hcEluVUlQcm9jZXNzKToKKwogMjAyMS0wMi0yNiAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tY29va2llIHdlYnNp
dGUgZGF0YSBub3QgZGVsZXRlZCBhZnRlciA3IGRheXMgb2YgYnJvd3NlciB1c2Ugd2l0aG91dCB1
c2VyIGludGVyYWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KaW5kZXggM2YzYmQ1MTlmZTg4MmU4NGZmZjAxY2E0ZjVmZDU2Yjg3ZWJjZmJlYi4uMTRiZDFl
ODBkNmVmMDkzMjg4OTkzOGNiZDQ1YmE0MzFhN2ZkNTYwNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjE4LDE1ICsyMTgsNDUgQEAgc3RhdGljIFJl
dGFpblB0cjxXZWJWaWV3PiYgZ2xvYmFsV2ViVmlldygpCiB9CiAKIC8vIERlbGVnYXRlcwotc3Rh
dGljIFJldGFpblB0cjxGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7Ci1zdGF0
aWMgUmV0YWluUHRyPFVJRGVsZWdhdGU+IHVpRGVsZWdhdGU7Ci1zdGF0aWMgUmV0YWluUHRyPEVk
aXRpbmdEZWxlZ2F0ZT4gZWRpdGluZ0RlbGVnYXRlOwotc3RhdGljIFJldGFpblB0cjxSZXNvdXJj
ZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7Ci1zdGF0aWMgUmV0YWluUHRyPEhp
c3RvcnlEZWxlZ2F0ZT4gaGlzdG9yeURlbGVnYXRlOworc3RhdGljIFJldGFpblB0cjxGcmFtZUxv
YWREZWxlZ2F0ZT4mIGZyYW1lTG9hZERlbGVnYXRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPEZyYW1lTG9hZERlbGVnYXRlPj4gZnJhbWVMb2FkRGVsZWdhdGU7Cisg
ICAgcmV0dXJuIGZyYW1lTG9hZERlbGVnYXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPFVJRGVs
ZWdhdGU+JiB1aURlbGVnYXRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPFVJRGVsZWdhdGU+PiB1aURlbGVnYXRlOworICAgIHJldHVybiB1aURlbGVnYXRlOworfQor
CitzdGF0aWMgUmV0YWluUHRyPEVkaXRpbmdEZWxlZ2F0ZT4mIGVkaXRpbmdEZWxlZ2F0ZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+PiBl
ZGl0aW5nRGVsZWdhdGU7CisgICAgcmV0dXJuIGVkaXRpbmdEZWxlZ2F0ZTsKK30KKworc3RhdGlj
IFJldGFpblB0cjxSZXNvdXJjZUxvYWREZWxlZ2F0ZT4mIHJlc291cmNlTG9hZERlbGVnYXRlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFJlc291cmNlTG9hZERlbGVn
YXRlPj4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZERlbGVn
YXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPEhpc3RvcnlEZWxlZ2F0ZT4mIGhpc3RvcnlEZWxl
Z2F0ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxIaXN0b3J5RGVs
ZWdhdGU+PiBoaXN0b3J5RGVsZWdhdGU7CisgICAgcmV0dXJuIGhpc3RvcnlEZWxlZ2F0ZTsKK30K
KwogUmV0YWluUHRyPFBvbGljeURlbGVnYXRlPiBwb2xpY3lEZWxlZ2F0ZTsKIFJldGFpblB0cjxE
ZWZhdWx0UG9saWN5RGVsZWdhdGU+IGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKKwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi1zdGF0aWMgUmV0YWluUHRyPFNjcm9sbFZpZXdSZXNpemVyRGVsZWdh
dGU+IHNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGU7CitzdGF0aWMgUmV0YWluUHRyPFNjcm9sbFZp
ZXdSZXNpemVyRGVsZWdhdGU+JiBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGU+
PiBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlOworICAgIHJldHVybiBzY3JvbGxWaWV3UmVzaXpl
ckRlbGVnYXRlOworfQogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRlc3Rz
OwpAQCAtMjQyLDcgKzI3MiwxMyBAQCBzdGF0aWMgaW50IHNob3dXZWJWaWV3Owogc3RhdGljIGlu
dCBwcmludFRlc3RDb3VudDsKIHN0YXRpYyBpbnQgY2hlY2tGb3JXb3JsZExlYWtzOwogc3RhdGlj
IEJPT0wgcHJpbnRTZXBhcmF0b3JzOwotc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb247CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+JiBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IHBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uOworICAgIHJldHVybiBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbjsKK30KKwogc3RhdGljIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBhbGxvd2VkSG9zdHM7CiAK
IHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+JiBwcmV2VGVzdEJGSXRlbSgpCkBAIC0y
NjAsNyArMjk2LDcgQEAgUmV0YWluUHRyPER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93
OwogCiB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKENGU3RyaW5nUmVm
IHVybCkKIHsKLSAgICBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IHVybDsKKyAg
ICBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbigpID0gdXJsOwogfQogCiBzdGF0aWMg
Ym9vbCBzaG91bGRJZ25vcmVXZWJDb3JlTm9kZUxlYWtzKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmxT
dHJpbmcpCkBAIC0yODMsNyArMzE5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29y
ZU5vZGVMZWFrcyhjb25zdCBzdGQ6OnN0cmluZyYgdXJsU3RyaW5nKQogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiB7Ci0gICAg
c3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0Pj4gZm9udEZhbWlseVNldCA9
IFtOU1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAgICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBC
YXlhbiIsCiAgICAgICAgIEAiQW1lcmljYW4gVHlwZXdyaXRlciIsCkBAIC00MTAsMTQgKzQ0Niwx
NCBAQCBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKICAgICAgICAgQCJXaW5n
ZGluZ3MiLAogICAgICAgICBAIlphcGYgRGluZ2JhdHMiLAogICAgICAgICBAIlphcGZpbm8iLAot
ICAgICAgICBuaWxdIHJldGFpbl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZh
bWlseVNldDsKKyAgICByZXR1cm4gZm9udEZhbWlseVNldC5nZXQoKS5nZXQoKTsKIH0KIAogc3Rh
dGljIE5TQXJyYXkgKmZvbnRBbGxvd0xpc3QoKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheT4gYXZhaWxhYmxlRm9udHMgPSBbXSB7CisgICAgc3RhdGljIGF1dG8gYXZhaWxhYmxlRm9u
dHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewogICAgICAgICBhdXRvIGF2YWlsYWJsZUZvbnRz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGZvciAo
TlNTdHJpbmcgKmZvbnRGYW1pbHkgaW4gYWxsb3dlZEZvbnRGYW1pbHlTZXQoKSkgewogICAgICAg
ICAgICAgTlNBcnJheSogZm9udHNGb3JGYW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9u
dE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJlcnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07CkBAIC00
MjgsOCArNDY0LDggQEAgc3RhdGljIE5TQXJyYXkgKmZvbnRBbGxvd0xpc3QoKQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBhdmFpbGFibGVGb250czsKLSAgICB9KCk7
Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRzLmdldCgpOworICAgIH0oKSk7CisgICAgcmV0dXJu
IGF2YWlsYWJsZUZvbnRzLmdldCgpLmdldCgpOwogfQogCiAvLyBBY3RpdmF0aW5nIHN5c3RlbSBj
b3BpZXMgb2YgdGhlc2UgZm9udHMgb3ZlcnJpZGVzIGFueSBvdGhlcnMgdGhhdCBjb3VsZCBiZSBw
cmVmZXJyZWQsIHN1Y2ggYXMgb25lcwpAQCAtNTczLDcgKzYwOSw3IEBAIHN0YXRpYyB2b2lkIGFk
anVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChVSVdlYkJyb3dzZXJWaWV3ICp3ZWJC
cm93c2VyVmllCiAgICAgLy8gQWRqdXN0IHRoZSB2aWV3cG9ydCB2aWV3IGFuZCB2aWV3cG9ydCB0
byBoYXZlIHNpbWlsYXIgYmVoYXZpb3IKICAgICAvLyBhcyB0aGUgYnJvd3Nlci4KICAgICBbKER1
bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcgKil3ZWJCcm93c2VyVmlldyBzZXRTY3JvbGxpbmdVc2Vz
VUlXZWJTY3JvbGxWaWV3OllFU107Ci0gICAgW3dlYkJyb3dzZXJWaWV3IHNldERlbGVnYXRlOnNj
cm9sbFZpZXdSZXNpemVyRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJCcm93c2VyVmlldyBzZXRE
ZWxlZ2F0ZTpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKCkuZ2V0KCldOwogCiAgICAgQ0dSZWN0
IHNjcmVlbkJvdW5kcyA9IFtVSVNjcmVlbiBtYWluU2NyZWVuXS5ib3VuZHM7CiAgICAgQ0dSZWN0
IHZpZXdwb3J0UmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc2NyZWVuQm91bmRzLnNpemUud2lkdGgs
IHNjcmVlbkJvdW5kcy5zaXplLmhlaWdodCk7CkBAIC02NDMsMjEgKzY3OSwyMSBAQCAtICh2b2lk
KWRyYXdLbm9iCiAKICAgICBOU1JlY3Qga25vYlJlY3QgPSBbc2VsZiByZWN0Rm9yUGFydDpOU1Nj
cm9sbGVyS25vYl07CiAKLSAgICBzdGF0aWMgTlNDb2xvciAqa25vYkNvbG9yID0gW1tOU0NvbG9y
IGNvbG9yV2l0aERldmljZVJlZDoweDgwIC8gMjU1LjAgZ3JlZW46MHg4MCAvIDI1NS4wIGJsdWU6
MHg4MCAvIDI1NS4wIGFscGhhOjFdIHJldGFpbl07Ci0gICAgW2tub2JDb2xvciBzZXRdOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGtub2JDb2xvciA9IFtO
U0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweDgwIC8gMjU1LjAgZ3JlZW46MHg4MCAvIDI1NS4w
IGJsdWU6MHg4MCAvIDI1NS4wIGFscGhhOjFdOworICAgIFtrbm9iQ29sb3IuZ2V0KCkgc2V0XTsK
IAogICAgIE5TUmVjdEZpbGwoa25vYlJlY3QpOwogfQogCiAtICh2b2lkKWRyYXdSZWN0OihOU1Jl
Y3QpZGlydHlSZWN0CiB7Ci0gICAgc3RhdGljIE5TQ29sb3IgKnRyYWNrQ29sb3IgPSBbW05TQ29s
b3IgY29sb3JXaXRoRGV2aWNlUmVkOjB4QzAgLyAyNTUuMCBncmVlbjoweEMwIC8gMjU1LjAgYmx1
ZToweEMwIC8gMjU1LjAgYWxwaGE6MV0gcmV0YWluXTsKLSAgICBzdGF0aWMgTlNDb2xvciAqZGlz
YWJsZWRUcmFja0NvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweEUwIC8gMjU1
LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhFMCAvIDI1NS4wIGFscGhhOjFdIHJldGFpbl07
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gdHJhY2tDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweEMwIC8gMjU1LjAgZ3JlZW46MHhDMCAv
IDI1NS4wIGJsdWU6MHhDMCAvIDI1NS4wIGFscGhhOjFdOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGRpc2FibGVkVHJhY2tDb2xvciA9IFtOU0NvbG9yIGNv
bG9yV2l0aERldmljZVJlZDoweEUwIC8gMjU1LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhF
MCAvIDI1NS4wIGFscGhhOjFdOwogCiAgICAgaWYgKFtzZWxmIGlzRW5hYmxlZF0pCi0gICAgICAg
IFt0cmFja0NvbG9yIHNldF07CisgICAgICAgIFt0cmFja0NvbG9yLmdldCgpIHNldF07CiAgICAg
ZWxzZQotICAgICAgICBbZGlzYWJsZWRUcmFja0NvbG9yIHNldF07CisgICAgICAgIFtkaXNhYmxl
ZFRyYWNrQ29sb3IuZ2V0KCkgc2V0XTsKIAogICAgIE5TUmVjdEZpbGwoZGlydHlSZWN0KTsKIApA
QCAtNjg0LDEwICs3MjAsMTAgQEAgUmV0YWluUHRyPFdlYlZpZXc+IGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3coKQogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpAIm9yZy53ZWJraXQu
RHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCi0gICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1
aURlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFt
ZUxvYWREZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVk
aXRpbmdEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdh
dGU6cmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6dWlEZWxlZ2F0ZSgpLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0
ZTpmcmFtZUxvYWREZWxlZ2F0ZSgpLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVs
ZWdhdGU6ZWRpdGluZ0RlbGVnYXRlKCkuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldFJlc291cmNl
TG9hZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRlKCkuZ2V0KCldOwogICAgIFt3ZWJWaWV3
IF9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOltNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRd
XTsKICAgICBbd2ViVmlldyBfc2V0RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjpbV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2sgc2hhcmVkXV07CiAgICAgW3dlYlZpZXcgX3NldE5vdGlm
aWNhdGlvblByb3ZpZGVyOltNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXV07CkBA
IC04MzYsOCArODcyLDggQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lz
dGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiAgICAgW3ByZWZlcmVuY2Vz
IF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Tk8gZm9yS2V5OkAiV2ViS2l0
TGF6eUltYWdlTG9hZGluZ0VuYWJsZWQiXTsKICAgICBbcHJlZmVyZW5jZXMgX3NldEJvb2xQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpOTyBmb3JLZXk6QCJXZWJLaXRXZWJBdXRoZW50aWNh
dGlvbkVuYWJsZWQiXTsKIAotICAgIGlmIChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlv
bikgewotICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjpbTlNV
UkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilwZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbi5nZXQoKV1dOworICAgIGlmIChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbigpKSB7CisgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uOltOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXBlcnNpc3RlbnRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKCkuZ2V0KCldXTsKICAgICAgICAgW3ByZWZlcmVuY2VzIHNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpZRVNdOwogICAgIH0gZWxzZQogICAgICAgICBbcHJlZmVy
ZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOk5PXTsKQEAgLTk5MCwzMCArMTAyNiwzMCBA
QCBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlbW92ZSB0aGVzZSBhbmQgbW92ZSB0byB0aGUgT2JqQyBzdGFuZGFyZCBb
Rm9vIHNoYXJlZEluc3RhbmNlXSBtb2RlbAogICAgIGdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IGFk
b3B0TlMoW1tOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOwotICAgIGZyYW1lTG9h
ZERlbGVnYXRlID0gYWRvcHROUyhbW0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0g
ICAgdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
ZWRpdGluZ0RlbGVnYXRlID0gYWRvcHROUyhbW0VkaXRpbmdEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgIHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Jlc291cmNlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgZnJhbWVMb2FkRGVsZWdhdGUoKSA9IGFkb3B0TlMoW1tG
cmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHVpRGVsZWdhdGUoKSA9IGFkb3B0
TlMoW1tVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgZWRpdGluZ0RlbGVnYXRlKCkgPSBh
ZG9wdE5TKFtbRWRpdGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgcmVzb3VyY2VMb2Fk
RGVsZWdhdGUoKSA9IGFkb3B0TlMoW1tSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwogICAgIHBvbGljeURlbGVnYXRlID0gYWRvcHROUyhbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7Ci0gICAgaGlzdG9yeURlbGVnYXRlID0gYWRvcHROUyhbW0hpc3RvcnlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIGhpc3RvcnlEZWxlZ2F0ZSgpID0gYWRvcHROUyhbW0hpc3RvcnlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tEZWZhdWx0UG9saWN5RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2Ny
b2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHNjcm9sbFZpZXdSZXNp
emVyRGVsZWdhdGUoKSA9IGFkb3B0TlMoW1tTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CiAjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgcmVsZWFzZUdsb2JhbENvbnRyb2xs
ZXJzKCkKIHsKICAgICBnTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBuaWw7Ci0gICAgZnJhbWVMb2Fk
RGVsZWdhdGUgPSBuaWw7Ci0gICAgZWRpdGluZ0RlbGVnYXRlID0gbmlsOwotICAgIHJlc291cmNl
TG9hZERlbGVnYXRlID0gbmlsOwotICAgIHVpRGVsZWdhdGUgPSBuaWw7Ci0gICAgaGlzdG9yeURl
bGVnYXRlID0gbmlsOworICAgIGZyYW1lTG9hZERlbGVnYXRlKCkgPSBuaWw7CisgICAgZWRpdGlu
Z0RlbGVnYXRlKCkgPSBuaWw7CisgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUoKSA9IG5pbDsKKyAg
ICB1aURlbGVnYXRlKCkgPSBuaWw7CisgICAgaGlzdG9yeURlbGVnYXRlKCkgPSBuaWw7CiAgICAg
cG9saWN5RGVsZWdhdGUgPSBuaWw7CiAgICAgZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbmlsOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9
IG5pbDsKKyAgICBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKCkgPSBuaWw7CiAjZW5kaWYKIH0K
IApAQCAtMTE0Nyw4ICsxMTgzLDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0
aW5nRW52aXJvbm1lbnQoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TQWN0aXZpdHlPcHRp
b25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1T
bGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVy
bWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVk
KTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiRHVtcFJlbmRlclRy
ZWUgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Npb24iXSByZXRhaW5d
OwotICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRpb24pOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8aWQ+PiBhc3NlcnRpb24gPSBbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjpAIkR1
bXBSZW5kZXJUcmVlIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHByZXNzaW9u
Il07CisgICAgQVNTRVJUX1VOVVNFRChhc3NlcnRpb24sIGFzc2VydGlvbi5nZXQoKSk7CiAjZW5k
aWYKIH0KIApAQCAtMTUzOSw3ICsxNTc1LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlV2luZG93U2Nh
bGVJZk5lZWRlZChjb25zdCBjaGFyKiB0ZXN0UGF0aE9yVVJMKQogCiBzdGF0aWMgdm9pZCBzaXpl
V2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIHsKLSAgICBbdWlEZWxlZ2F0ZSByZXNldFdpbmRvd09y
aWdpbl07CisgICAgW3VpRGVsZWdhdGUoKSByZXNldFdpbmRvd09yaWdpbl07CiAKICAgICAvLyBX
M0MgU1ZHIHRlc3RzIGV4cGVjdCB0byBiZSA0ODB4MzYwCiAgICAgYm9vbCBpc1NWR1czQ1Rlc3Qg
PSAoZ1Rlc3RSdW5uZXItPnRlc3RVUkwoKS5maW5kKCJzdmcvVzNDLVNWRy0xLjEiKSAhPSBzdGQ6
OnN0cmluZzo6bnBvcyk7CkBAIC0xNzY1LDggKzE4MDEsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBS
ZXNldAogICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0
ZS5nZXQoKV07CiAgICAgW3BvbGljeURlbGVnYXRlIHNldFBlcm1pc3NpdmU6Tk9dOwogICAgIFtw
b2xpY3lEZWxlZ2F0ZSBzZXRDb250cm9sbGVyVG9Ob3RpZnlEb25lOjBdOwotICAgIFt1aURlbGVn
YXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOm9wdGlvbnNdOwotICAgIFtm
cmFtZUxvYWREZWxlZ2F0ZSByZXNldFRvQ29uc2lzdGVudFN0YXRlXTsKKyAgICBbdWlEZWxlZ2F0
ZSgpIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOm9wdGlvbnNdOworICAgIFtm
cmFtZUxvYWREZWxlZ2F0ZSgpIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVdOwogICAgIFt3ZWJWaWV3
IF9jbGVhck1haW5GcmFtZU5hbWVdOwogICAgIFtbd2ViVmlldyB1bmRvTWFuYWdlcl0gcmVtb3Zl
QWxsQWN0aW9uc107CiAgICAgW1dlYlZpZXcgX3JlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3Vw
Olt3ZWJWaWV3IGdyb3VwTmFtZV1dOwpAQCAtMTk1MSw3ICsxOTg3LDcgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICBnVGVzdFJ1bm5l
ci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKIAogICAgIGlmIChzaG91bGRMb2dI
aXN0b3J5RGVsZWdhdGVzKHBhdGhPclVSTC5jX3N0cigpKSkKLSAgICAgICAgW1ttYWluRnJhbWUg
d2ViVmlld10gc2V0SGlzdG9yeURlbGVnYXRlOmhpc3RvcnlEZWxlZ2F0ZS5nZXQoKV07CisgICAg
ICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdh
dGUoKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRI
aXN0b3J5RGVsZWdhdGU6bmlsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCAxZjk3ZDI5NDIyMDJlODBjZGYzMDYwMGY1
NjViZTRiMGUxMzJlZjA4Li5hODQ4ZGM1ZmE1OTkzZGM3MDNhMTMzNGUyN2Y5NDM4NWFmYmU3YzYx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNr
TG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNr
TG9vay5tbQpAQCAtNTEsNyArNTEsMTIgQEAgc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGJv
b2wgZG93bmxvYWRJc0RvbmU7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBhZ2VzRG9jdW1l
bnRQcmV2aWV3TUlNRVR5cGUgPSBAImFwcGxpY2F0aW9uL3BkZiI7Ci1zdGF0aWMgTlNVUkwgKiBj
b25zdCBwYWdlc0RvY3VtZW50VVJMID0gW1tOU0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291
cmNlOkAicGFnZXMiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXSByZXRhaW5dOworCitzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiBw
YWdlc0RvY3VtZW50VVJMKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TVVJMPj4gcGFnZXNEb2N1bWVudFVSTCA9IFtOU0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJl
c291cmNlOkAicGFnZXMiIHdpdGhFeHRlbnNpb246QCJwYWdlcyIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICByZXR1cm4gcGFnZXNEb2N1bWVudFVSTDsKK30K
IAogQGludGVyZmFjZSBRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGUsIF9XS0Rvd25sb2FkRGVsZWdhdGU+CiAtIChpbnN0YW5jZXR5cGUpaW5p
dCBOU19VTkFWQUlMQUJMRTsKQEAgLTI4MCw4ICsyODUsOCBAQCBzdGF0aWMgUmV0YWluUHRyPFdL
V2ViVmlldz4gcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhRdWlja0xvb2tEZWxlZ2F0ZSAqZGVs
ZWdhdAogCiBURVNUKFF1aWNrTG9vaywgQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3
KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xp
Y3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwotICAgIHJ1blRlc3REZWNpZGVC
ZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNr
TG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50
VVJMKCkuZ2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
d10pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKV0pOwogICAg
IEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1Rf
VFJVRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtk
ZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0yOTAsOCArMjk1LDggQEAgVEVT
VChRdWlja0xvb2ssIEFsbG93UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIAogVEVTVChR
dWlja0xvb2ssIEFsbG93UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhw
ZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1l
bnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lBbGxvd10pOwotICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCks
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
RXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKSBwcmV2aWV3TUlNRVR5cGU6
cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxl
Z2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJM
KCkuZ2V0KCldKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0aW9u
XSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAg
ICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzE5
LDggKzMyNCw4IEBAIEBlbmQKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3Bv
bnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tRdWlja0xvb2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpw
YWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QWxsb3ddKTsKLSAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMKCkuZ2V0KCkgcmVzcG9uc2VQb2xp
Y3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOworICAgIHJ1blRlc3REZWNpZGVC
ZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKV0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUg
ZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNo
TmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xv
b2tMb2FkXSk7CkBAIC0zMjksOCArMzM0LDggQEAgVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dS
ZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxv
d1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3
TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10p
OwotICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rQXN5bmNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBl
Y3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdl
c0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRl
LmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5n
ZXQoKV0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsK
ICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVY
UEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zNDAsOCAr
MzQ1LDggQEAgVEVTVChRdWlja0xvb2ssIEFzeW5jQWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1By
ZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBDYW5jZWxSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2
aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQ
b2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsKLSAgICBydW5UZXN0RGVj
aWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCgpLmdldCgpIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCks
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpXSk7
CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNo
YW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNF
KFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxl
Z2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zNTIsOCArMzU3LDggQEAgVEVTVChR
dWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEzMDQwMAogVEVT
VChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0Rv
Y3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5Q2FuY2VsXSk7Ci0gICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5n
ZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpIHByZXZpZXdNSU1F
VHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsXSk7CisgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGlu
ZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3Vt
ZW50VVJMKCkuZ2V0KCldKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRl
cnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsK
ICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBF
WFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKQEAgLTM2NCw4ICszNjks
OCBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQog
CiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQog
ewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOwotICAgIHJ1blRlc3REZWNpZGVC
ZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNr
TG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50
VVJMKCkuZ2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3du
bG9hZF0pOworICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKV0pOwog
ICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFu
Z2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShb
ZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdh
dGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAtMzc5LDggKzM4NCw4IEBAIFRFU1QoUXVp
Y2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEzMDQwMAogVEVT
VChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2Vz
RG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lEb3dubG9hZF0pOwotICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdh
dGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0p
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKSBwcmV2aWV3
TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7CisgICAgcnVuVGVzdERlY2lkZUFmdGVy
TG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdl
c0RvY3VtZW50VVJMKCkuZ2V0KCldKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5j
b2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsK
ICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKQEAgLTQzMCw4
ICs0MzUsOCBAQCBURVNUKFF1aWNrTG9vaywgUmVxdWVzdFBhc3N3b3JkQWZ0ZXJMb2FkaW5nUHJl
dmlldykKIAogVEVTVChRdWlja0xvb2ssIFJlbG9hZEFuZFNhbWVEb2N1bWVudE5hdmlnYXRpb24p
CiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGlj
eTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAgYXV0byB3ZWJWaWV3ID0g
cnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJM
OnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUFsbG93XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gcnVuVGVzdERlY2lkZUJlZm9y
ZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFn
ZXNEb2N1bWVudFVSTCgpLmdldCgpXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRG
YWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZp
Z2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xv
YWRdKTsKQEAgLTQ5MSw3ICs0OTYsNyBAQCBURVNUKFF1aWNrTG9vaywgTGVnYWN5UXVpY2tMb29r
Q29udGVudCkKIAogICAgIFdlYkZyYW1lICptYWluRnJhbWUgPSBbd2ViVmlldyBtYWluRnJhbWVd
OwogCi0gICAgW21haW5GcmFtZSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnBhZ2VzRG9jdW1lbnRVUkxdXTsKKyAgICBbbWFpbkZyYW1lIGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpXV07CiAgICAg
VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIFdlYlRocmVhZExvY2soKTsKIApAQCAtNTAwLDcgKzUw
NSw3IEBAIFRFU1QoUXVpY2tMb29rLCBMZWdhY3lRdWlja0xvb2tDb250ZW50KQogICAgIFJldGFp
blB0cjxOU1N0cmluZz4gZXhwZWN0ZWRGaWxlTmFtZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IGV4cGVjdGVkRmlsZVR5cGU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBleHBlY3RlZE1JTUVU
eXBlOwotICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1lbnRVUkwsIGV4cGVjdGVkRmlsZVNpemUsIGV4
cGVjdGVkRmlsZU5hbWUsIGV4cGVjdGVkRmlsZVR5cGUsIGV4cGVjdGVkTUlNRVR5cGUsIGV4cGVj
dGVkRmlsZURhdGEpOworICAgIHJlYWRGaWxlKHBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKSwgZXhw
ZWN0ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxlTmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhwZWN0
ZWRNSU1FVHlwZSwgZXhwZWN0ZWRGaWxlRGF0YSk7CiAKICAgICBOU0RpY3Rpb25hcnkgKnF1aWNr
TG9va0NvbnRlbnQgPSBtYWluRnJhbWUuZGF0YVNvdXJjZS5fcXVpY2tMb29rQ29udGVudDsKICAg
ICBOU1N0cmluZyAqZmlsZVBhdGggPSBxdWlja0xvb2tDb250ZW50W1dlYlF1aWNrTG9va0ZpbGVO
YW1lS2V5XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRl
eCAyZTliMTM0MzllMjg1ZmQyMjdjZmMxOWM1MTczNjUzYzExYjY0N2UyLi42N2E2NjcyMjIwNWUy
ZDZmY2M5ZmQ5ZTE5ZjA0MmQ4NTQ3NThmYTgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC02NjksNyArNjY5LDcgQEAgLSAoUmV0YWluUHRyPE5TQXJy
YXk+KXNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUKICAgICBfX2Jsb2NrIGJv
b2wgaXNEb25lID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheT4gc2VsZWN0
aW9uUmVjdHM7CiAgICAgW3NlbGYgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl4oKSB7
Ci0gICAgICAgIHNlbGVjdGlvblJlY3RzID0gYWRvcHROUyhbW3JldGFpbmVkU2VsZiBfdWlUZXh0
U2VsZWN0aW9uUmVjdHNdIHJldGFpbl0pOworICAgICAgICBzZWxlY3Rpb25SZWN0cyA9IFtyZXRh
aW5lZFNlbGYgX3VpVGV4dFNlbGVjdGlvblJlY3RzXTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsK
ICAgICB9XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENv
bnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxl
cklPUy5tbQppbmRleCBmZGUyZWE5ZWFiY2ViYTYyNGM1ZjhjM2ZiODk3N2NkM2Y3MDA1OTBkLi4z
MmVkYzIxOTljZmU3Y2JlYzI4NGQ3ZTYzOWYxMTEwODVkMWFkNmExIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMzE2LDEyICszMTYs
MTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbCgpCiAKIGNvbnN0IGNoYXIqIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpCiB7Ci0gICAgc3Rh
dGljIE5TU3RyaW5nICpwbGF0Zm9ybUxpYnJhcnlQYXRoID0gbmlsOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBwbGF0Zm9ybUxpYnJhcnlQYXRoOwogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgXnsKLSAgICAgICAgcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IFtbQCJ+L0xpYnJhcnkv
QXBwbGljYXRpb24gU3VwcG9ydC9XZWJLaXRUZXN0UnVubmVyIiBzdHJpbmdCeUV4cGFuZGluZ1Rp
bGRlSW5QYXRoXSByZXRhaW5dOworICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoLmdldCgpID0g
W0Aifi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvV2ViS2l0VGVzdFJ1bm5lciIgc3RyaW5n
QnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CiAgICAgfSk7Ci0gICAgcmV0dXJuIHBsYXRmb3JtTGli
cmFyeVBhdGguVVRGOFN0cmluZzsKKyAgICByZXR1cm4gW3BsYXRmb3JtTGlicmFyeVBhdGguZ2V0
KCkgVVRGOFN0cmluZ107CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29s
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA4NWEyYzc0ZDJkOGI3MGFjZWI4ZTFmMTI3YWZlZWE4ZDUyZTI3N2E5Li45MzA0NDcxY2I1
MTY2YTU0OTJkYWMzNDFkNzAyMzEwMmEzZmRkZjU5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdElu
dm9jYXRpb24mIHRlc3QpCiAKIHN0YXRpYyBOU1NldCAqYWxsb3dlZEZvbnRGYW1pbHlTZXQoKQog
ewotICAgIHN0YXRpYyBOU1NldCAqZm9udEZhbWlseVNldCA9IFtbTlNTZXQgc2V0V2l0aE9iamVj
dHM6CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1NldD4+IGZvbnRGYW1p
bHlTZXQgPSBbTlNTZXQgc2V0V2l0aE9iamVjdHM6CiAgICAgICAgIEAiQWhlbSIsCiAgICAgICAg
IEAiQWwgQmF5YW4iLAogICAgICAgICBAIkFtZXJpY2FuIFR5cGV3cml0ZXIiLApAQCAtMzU1LDE4
ICszNTUsMTggQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAgICAgICAg
IEAiV2luZ2RpbmdzIiwKICAgICAgICAgQCJaYXBmIERpbmdiYXRzIiwKICAgICAgICAgQCJaYXBm
aW5vIiwKLSAgICAgICAgbmlsXSByZXRhaW5dOworICAgICAgICBuaWxdOwogCi0gICAgcmV0dXJu
IGZvbnRGYW1pbHlTZXQ7CisgICAgcmV0dXJuIGZvbnRGYW1pbHlTZXQuZ2V0KCkuZ2V0KCk7CiB9
CiAKIHN0YXRpYyBOU1NldCAqc3lzdGVtSGlkZGVuRm9udEZhbWlseVNldCgpCiB7Ci0gICAgc3Rh
dGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0Pj4gZm9udEZhbWlseVNldCA9IFtO
U1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAgICAgQCIuTHVjaWRhR3JhbmRlVUkiLAotICAgICAg
ICBuaWxdIHJldGFpbl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZhbWlseVNl
dDsKKyAgICByZXR1cm4gZm9udEZhbWlseVNldC5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFdL
UmV0YWluUHRyPFdLQXJyYXlSZWY+IGdlbmVyYXRlRm9udEFsbG93TGlzdCgpCkBAIC00MzAsMTIg
KzQzMCwxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIAogY29uc3QgY2hh
ciogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKIHsKLSAg
ICBzdGF0aWMgTlNTdHJpbmcgKnBsYXRmb3JtTGlicmFyeVBhdGggPSBuaWw7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1N0cmluZz4+IHBsYXRmb3JtTGlicmFyeVBhdGg7
CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25j
ZSgmb25jZVRva2VuLCBeewotICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW1tAIn4vTGli
cmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0R1bXBSZW5kZXJUcmVlIiBzdHJpbmdCeUV4cGFuZGlu
Z1RpbGRlSW5QYXRoXSByZXRhaW5dOworICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoLmdldCgp
ID0gW0Aifi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvRHVtcFJlbmRlclRyZWUiIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdOwogICAgIH0pOwotICAgIHJldHVybiBwbGF0Zm9ybUxp
YnJhcnlQYXRoLlVURjhTdHJpbmc7CisgICAgcmV0dXJuIFtwbGF0Zm9ybUxpYnJhcnlQYXRoLmdl
dCgpIFVURjhTdHJpbmddOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9tYWluLm1tCmluZGV4IDQ5MTQzMTNiMTg5YmM4NWUxYjk3OGRjMzU2OWI3ZGJlZjc1NDY1
MDMuLjRjM2NhZGY2YWFjOWRjN2QxOTYyOThhMTRiZmE0NTIxNWU1NDFhNzUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4ubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvbWFpbi5tbQpAQCAtNTQsOCArNTQsOCBAQCBzdGF0aWMgdm9pZCBzZXREZWZh
dWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogc3RhdGljIHZvaWQgZGlzYWJsZUFw
cE5hcEluVUlQcm9jZXNzKCkKIHsKICAgICBOU0FjdGl2aXR5T3B0aW9ucyBvcHRpb25zID0gKE5T
QWN0aXZpdHlVc2VySW5pdGlhdGVkQWxsb3dpbmdJZGxlU3lzdGVtU2xlZXAgfCBOU0FjdGl2aXR5
TGF0ZW5jeUNyaXRpY2FsKSAmIH4oTlNBY3Rpdml0eVN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZWQg
fCBOU0FjdGl2aXR5QXV0b21hdGljVGVybWluYXRpb25EaXNhYmxlZCk7Ci0gICAgc3RhdGljIGlk
IGFzc2VydGlvbiA9IFtbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlX
aXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjpAIldlYktpdFRlc3RSdW5uZXIgc2hvdWxkIG5vdCBi
ZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Npb24iXSByZXRhaW5dOwotICAgIEFTU0VSVF9V
TlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRpb24pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8aWQ+PiBhc3NlcnRpb24gPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGJl
Z2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjpAIldlYktpdFRlc3RSdW5uZXIg
c2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Npb24iXTsKKyAgICBBU1NF
UlRfVU5VU0VEKGFzc2VydGlvbiwgYXNzZXJ0aW9uLmdldCgpKTsKIH0KIAogCg==
</data>
<flag name="commit-queue"
          id="440650"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421721</attachid>
            <date>2021-02-26 15:54:15 -0800</date>
            <delta_ts>2021-02-26 17:55:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222439-20210226155414.patch</filename>
            <type>text/plain</type>
            <size>85935</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NjIwODMyNGMwNjAwZjQ2MzZiYWY1YWJlYTA0ZjllOWRkNmNmNjc3Li5hZDE5YWRlNTI4YTQyYmU2
YTM4NTlhMDVkODc3YjgwMGZlOGFjNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIGV4
cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0
cjw+LgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKCtbSlNDb250ZXh0
IGN1cnJlbnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGJlZ2luQ2FsbGJhY2tX
aXRoRGF0YTpjYWxsZWVWYWx1ZTp0aGlzVmFsdWU6YXJndW1lbnRDb3VudDphcmd1bWVudHM6XSk6
CisgICAgICAgICgtW0pTQ29udGV4dCBlbmRDYWxsYmFja1dpdGhEYXRhOl0pOgorICAgICAgICAq
IEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1t
OgorICAgICAgICAoLVtUaW55RE9NTm9kZSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgorCiAy
MDIxLTAyLTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rmxha3kgSlNDIHRlc3Q6IHN0cmVzcy9hdG9taWMtaW5jcmVtZW50LWJpZ2ludDY0LmpzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWFmYmI4YWMwMzAwMGFiZTkzZmQ1NTcxYmM3YTQwNDQ0YjkwZGEzMC4uM2NiYjRj
Y2QxNmFiOTIwODQ2MTI5NDM2NzkxMmRmMTFlMmVkYWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDIxLTAyLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0gaW4gV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI0MzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWR1Y2UgZXhwbGlj
aXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4u
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5EXSk6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVzdWx0SXNVUkwpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKFdlYkRl
ZmF1bHRGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VEZWNvZGVy
QXNzZXRPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpuc0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tOgorICAgICAgICAoV2ViQ29yZTo6UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlN
RVR5cGVzU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnRlbXBvcmFyeUZpbGVBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZU1vdGlvbk1hbmFnZXIgY2hlY2tDbGllbnRTdGF0dXNdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChTZW5kTWVzc2FnZSk6CisgICAg
ICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlRocmVhZENhbGxEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJSdW5Mb29w
VW5sb2NrSW50ZXJuYWwpOgorICAgICAgICAoUnVuV2ViVGhyZWFkKToKKyAgICAgICAgKFdlYlRo
cmVhZE5TUnVuTG9vcCk6CisKIDIwMjEtMDItMjYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2df
MjJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2Ug
YXR0cmlidXRlIHNvIHRoYXQgTWFjIGNsaWVudHMgY2FuIGFjY2VzcyB0aGlzIGZ1bmN0aW9uYWxp
dHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDU2YzI2NTNkNzY0YTE1MzNlYTAwZGY1NmNhMjExNjI5MTRiM2JkMTQu
LjkxOThmMjZlYTZmNDQ5OTAyMzRjNzA5NTUxMGQxYWU5OWNiMGI3Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMjEtMDItMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjQz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZHVjZSBl
eHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5Q
dHI8Pi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9h
ZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OmlzRmVhdHVyZUZsYWdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6
OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJz
aXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoLVtXS1BE
RlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5EXSk6CisKIDIwMjEtMDItMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CiAKICAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIg
NyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0NmYyNDY3ODQ5OWJmZWMxOWZiNTMwNWZlYTY2YTQ3NWY3
YzFjZmEuLmI0YzEwNGYwNTcwMDFhZTczZTk4NDAwZWI1OGNmZjE1NWQwNWJmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMi0yNSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJldGFpbl0g
aW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJOU1VS
TEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1l
XSk6CisgICAgICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dl
YlN0cmluZ1RydW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOgorICAgICAg
ICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VN
YW5hZ2VyIF9zdG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKF9XZWJDcmVhdGVGcmFnbWVudCk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhU
TUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRN
TFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dl
YkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOgorICAgICAg
ICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKyAg
ICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLm1tOgorICAg
ICAgICAoV2ViS2l0Ojppc0ZlYXR1cmVGbGFnRW5hYmxlZCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1M
RG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jaGVja0RpZFBlcmZv
cm1GaXJzdE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRQcmVmZXJlbmNlczpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBwcmVmZXJlbmNlc10pOgorICAgICAgICAoLVtXZWJWaWV3
IHNldEdyb3VwTmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIw
MjEtMDItMjUgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzQ2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KaW5kZXggZTNhZjBiMTQxZGU4MTdkMjg3NThiMzAzODAxMWMyZDFlY2NhMzYyYi4u
MGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0ZWZjM2RjN2IzMzJjM2JkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI0MiwxMyArMjQyLDEzIEBAICsgKE5TQXJyYXkg
KiljdXJyZW50QXJndW1lbnRzCiAgICAgaWYgKCFlbnRyeS0+Y3VycmVudEFyZ3VtZW50cykgewog
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsK
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gZW50cnktPmFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OmNvdW50XTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgW2FyZ3VtZW50cyBz
ZXRPYmplY3Q6W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+YXJndW1lbnRzW2ld
IGluQ29udGV4dDpjb250ZXh0XSBhdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIGVudHJ5
LT5jdXJyZW50QXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICBlbnRyeS0+Y3VycmVudEFy
Z3VtZW50cyA9IFdURk1vdmUoYXJndW1lbnRzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZW50cnkt
PmN1cnJlbnRBcmd1bWVudHM7CisgICAgcmV0dXJuIGVudHJ5LT5jdXJyZW50QXJndW1lbnRzLmdl
dCgpOwogfQogCiAtIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAgLTM3MSw3
ICszNzEsNyBAQCAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICop
Y2FsbGJhY2tEYXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUgogICAgIFRocmVhZCYgdGhyZWFkID0g
VGhyZWFkOjpjdXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKICAgICBDYWxsYmFja0RhdGEg
KnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwotICAgICpjYWxs
YmFja0RhdGEgPSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRp
b24gcmV0YWluXSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1l
bnRzLCBuaWwgfTsKKyAgICAqY2FsbGJhY2tEYXRhID0gQ2FsbGJhY2tEYXRhIHsgcHJldlN0YWNr
LCBzZWxmLCBzZWxmLmV4Y2VwdGlvbiwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLCBuaWwgfTsKICAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tE
YXRhOwogICAgIHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQpAQCAtMzc5LDkgKzM3OSw3IEBAIC0g
KHZvaWQpYmVnaW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEg
Y2FsbGVlVmFsdWU6KEpTVmFsdWVSCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxi
YWNrRGF0YSAqKWNhbGxiYWNrRGF0YQogewogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7Ci0gICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4
Y2VwdGlvbjsKLSAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07
Ci0gICAgW2NhbGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKKyAgICBzZWxm
LmV4Y2VwdGlvbiA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhjZXB0aW9uLmdldCgpOwogICAg
IHRocmVhZC5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFz
ZV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dElu
dGVybmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgK
aW5kZXggOTU4YzQ3OWY0MWNlODQxM2ZjNjk0YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uNDRjNWY1OGUz
YWMxMTA0MDRlMDM3YjU2OTM4NjFjYzIyZDE4MDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwuaApAQCAtMzIsMTIgKzMyLDEyIEBACiBzdHJ1Y3Qg
Q2FsbGJhY2tEYXRhIHsKICAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpj
b250ZXh0OwotICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8
SlNWYWx1ZT4gcHJlc2VydmVkRXhjZXB0aW9uOwogICAgIEpTVmFsdWVSZWYgY2FsbGVlVmFsdWU7
CiAgICAgSlNWYWx1ZVJlZiB0aGlzVmFsdWU7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQ7CiAg
ICAgY29uc3QgSlNWYWx1ZVJlZiAqYXJndW1lbnRzOwotICAgIE5TQXJyYXkgKmN1cnJlbnRBcmd1
bWVudHM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IGN1cnJlbnRBcmd1bWVudHM7CiB9OwogCiBA
Y2xhc3MgSlNXcmFwcGVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCmluZGV4IGI3OWFiMmJjM2FmMWJjNTNlOGM4MThhMjMzZGIwNzM2ODRiZWIxZDEuLmZm
NDdkNjE0MjI4YWNhMDk3YTViNDViNTc5YWZlYzUyOTNiMjcyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQg
PHd0Zi9NZW1vcnlGb290cHJpbnQuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9y
dCA8d3RmL0RhdGFMb2cuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJD
IiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRS
ZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2lu
ZyhKU0NvbnRleHRSZWYpOwpAQCAtMjE3LDcgKzIxOCw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFRpbnlET01Ob2RlIHsKICAgICBOU011dGFibGVBcnJheSAqbV9jaGlsZHJlbjsKLSAgICBK
U1ZpcnR1YWxNYWNoaW5lICptX3NoYXJlZFZpcnR1YWxNYWNoaW5lOworICAgIFJldGFpblB0cjxK
U1ZpcnR1YWxNYWNoaW5lPiBtX3NoYXJlZFZpcnR1YWxNYWNoaW5lOwogfQogCiAtIChpZClpbml0
V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKQEAg
LTIyOCw5ICsyMjksNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxN
YWNoaW5lICopdmlydHVhbE1hY2hpbmUKIAogICAgIG1fY2hpbGRyZW4gPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjBdOwogICAgIG1fc2hhcmVkVmlydHVhbE1hY2hp
bmUgPSB2aXJ0dWFsTWFjaGluZTsKLSNpZiAhX19oYXNfZmVhdHVyZShvYmpjX2FyYykKLSAgICBb
bV9zaGFyZWRWaXJ0dWFsTWFjaGluZSByZXRhaW5dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNTE3MTM4
YjRlZGYzMzU1YWI5MGY4ODc5ZTU1NmM5Yzg2ZDU3MWMzNC4uODNlZjI0YzE1OGFlNzBjMzYyNGY5
MzUzYzc2OWZkZTBjYzI3NTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KQEAgLTExNTQsMjkgKzExNTQsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAKICAgICAvLyBBbGwgZWxlbWVudHMgc2hvdWxkIGdldCBTaG93TWVudSBhbmQg
U2Nyb2xsVG9WaXNpYmxlLgogICAgIC8vIEJ1dCBjZXJ0YWluIGVhcmxpZXIgVm9pY2VPdmVyIHZl
cnNpb25zIGRvIG5vdCBzdXBwb3J0IHNjcm9sbCB0byB2aXNpYmxlLCBhbmQgaXQgY29uZnVzZXMg
dGhlbSB0byBzZWUgaXQgaW4gdGhlIGxpc3QuCi0gICAgc3RhdGljIE5TQXJyYXkgKmRlZmF1bHRF
bGVtZW50QWN0aW9ucyA9IFtAW05TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vz
c2liaWxpdHlTY3JvbGxUb1Zpc2libGVBY3Rpb25dIHJldGFpbl07CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gZGVmYXVsdEVsZW1lbnRBY3Rpb25zID0gQFtO
U0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNp
YmxlQWN0aW9uXTsKIAogICAgIC8vIEFjdGlvbiBlbGVtZW50cyBhbGxvdyBQcmVzcy4KICAgICAv
LyBUaGUgb3JkZXIgaXMgaW1wb3J0YW50IHRvIFZvaWNlT3Zlciwgd2hpY2ggZXhwZWN0cyB0aGUg
J2RlZmF1bHQnIGFjdGlvbiB0byBiZSB0aGUgZmlyc3QgYWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhl
IGRlZmF1bHQgYWN0aW9uIHNob3VsZCBiZSBwcmVzcy4KLSAgICBzdGF0aWMgTlNBcnJheSAqYWN0
aW9uRWxlbWVudEFjdGlvbnMgPSBbQFtOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nl
c3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNjcm9sbFRvVmlzaWJsZUFj
dGlvbl0gcmV0YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJy
YXk+PiBhY3Rpb25FbGVtZW50QWN0aW9ucyA9IEBbTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24s
IE5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxUb1Zp
c2libGVBY3Rpb25dOwogCiAgICAgLy8gTWVudSBlbGVtZW50cyBhbGxvdyBQcmVzcyBhbmQgQ2Fu
Y2VsLgotICAgIHN0YXRpYyBOU0FycmF5ICptZW51RWxlbWVudEFjdGlvbnMgPSBbW2FjdGlvbkVs
ZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRpbmdPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FuY2VsQWN0
aW9uXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IG1lbnVFbGVtZW50QWN0aW9ucyA9IFthY3Rpb25FbGVtZW50QWN0aW9ucy5nZXQoKSBhcnJh
eUJ5QWRkaW5nT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbl07CiAKICAgICAvLyBT
bGlkZXIgZWxlbWVudHMgYWxsb3cgSW5jcmVtZW50L0RlY3JlbWVudC4KLSAgICBzdGF0aWMgTlNB
cnJheSAqc2xpZGVyQWN0aW9ucyA9IFtbZGVmYXVsdEVsZW1lbnRBY3Rpb25zIGFycmF5QnlBZGRp
bmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0Fj
Y2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXSByZXRhaW5dOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHNsaWRlckFjdGlvbnMgPSBbZGVmYXVsdEVsZW1l
bnRBY3Rpb25zLmdldCgpIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbTlNBY2Nlc3Np
YmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb25dXTsK
IAogICAgIE5TQXJyYXkgKmFjdGlvbnM7CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPnN1cHBvcnRz
UHJlc3NBY3Rpb24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRBY3Rpb25zOwor
ICAgICAgICBhY3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnMuZ2V0KCkuZ2V0KCk7CiAgICAg
ZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNNZW51UmVsYXRlZCgpKQotICAgICAgICBhY3Rpb25z
ID0gbWVudUVsZW1lbnRBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gbWVudUVsZW1lbnRBY3Rp
b25zLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzU2xpZGVyKCkp
Ci0gICAgICAgIGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOworICAgICAgICBhY3Rpb25zID0gc2xp
ZGVyQWN0aW9ucy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkKICAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNj
ZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKICAgICBlbHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZh
dWx0RWxlbWVudEFjdGlvbnM7CisgICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlv
bnMuZ2V0KCkuZ2V0KCk7CiAKICAgICByZXR1cm4gYWN0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA4NjMzZTE2ZTU0MjQ3OGVl
N2I0NTA2OGI0NWRmNGFiZWFhM2Q0MzdkLi41NDc5NzQ0MTk2YWY5OGI3NmY0MTc5MDM2ZWU1M2Nj
MTJiYzAwOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCkBAIC0yMTUsOCArMjE1LDEzIEBAIHN0YXRpYyBCT09MIHJlc3VsdElzVVJMKEREUmVz
dWx0UmVmIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5POwogICAg
IAotICAgIHN0YXRpYyBOU1NldCAqdXJsVHlwZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOiAo
TlNTdHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJIdHRwVVJMS2V5KCksIChO
U1N0cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlcldlYlVSTEtleSgpLCAoTlNT
dHJpbmcgKilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJNYWlsVVJMS2V5KCksIChOU1N0
cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckdlbmVyaWNVUkxLZXkoKSwgKE5T
U3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyRW1haWxLZXkoKSwgbmlsXSBy
ZXRhaW5dOwotICAgIHJldHVybiBbdXJsVHlwZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICop
c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRUeXBlKHJlc3VsdCldOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiB1cmxUeXBlcyA9IFtOU1Nl
dCBzZXRXaXRoT2JqZWN0czoKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0X0RhdGFEZXRlY3RvcnND
b3JlX0REQmluZGVySHR0cFVSTEtleSgpLAorICAgICAgICAoTlNTdHJpbmcgKilnZXRfRGF0YURl
dGVjdG9yc0NvcmVfRERCaW5kZXJXZWJVUkxLZXkoKSwKKyAgICAgICAgKE5TU3RyaW5nICopZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REQmluZGVyTWFpbFVSTEtleSgpLAorICAgICAgICAoTlNTdHJp
bmcgKilnZXRfRGF0YURldGVjdG9yc0NvcmVfRERCaW5kZXJHZW5lcmljVVJMS2V5KCksCisgICAg
ICAgIChOU1N0cmluZyAqKWdldF9EYXRhRGV0ZWN0b3JzQ29yZV9EREJpbmRlckVtYWlsS2V5KCks
IG5pbF07CisgICAgcmV0dXJuIFt1cmxUeXBlcy5nZXQoKSBjb250YWluc09iamVjdDooTlNTdHJp
bmcgKilzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFR5cGUocmVzdWx0KV07
CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KEREUmVz
dWx0UmVmIGN1cnJlbnRSZXN1bHQsIE5TU3RyaW5nICpyZXN1bHRJZGVudGlmaWVyLCBOU0RhdGUg
KnJlZmVyZW5jZURhdGUsIE5TVGltZVpvbmUgKnJlZmVyZW5jZVRpbWVab25lLCBPcHRpb25TZXQ8
RGF0YURldGVjdG9yVHlwZT4gZGV0ZWN0aW9uVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDNiZDJkNmViYTNiMzVmZTZkYzM5NTMy
MjZmYmQ4ZDU2MGJlY2ZlOS4uMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpA
QCAtNDE1LDE2ICs0MTUsMTMgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29udmVydGVyOjpjb252
ZXJ0KCkKIC8vIFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUgTlNGb250QXR0cmli
dXRlTmFtZSBkb2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZhdWx0Rm9udCgpCiB7
Ci0gICAgc3RhdGljIE5TRm9udCAqZGVmYXVsdEZvbnQgPSBuaWw7Ci0gICAgaWYgKGRlZmF1bHRG
b250KQotICAgICAgICByZXR1cm4gZGVmYXVsdEZvbnQ7Ci0KLSAgICBOU0ZvbnQgKmZvbnQgPSBb
TlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07Ci0gICAgaWYgKCFmb250
KQotICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLQotICAgIGRl
ZmF1bHRGb250ID0gW2ZvbnQgcmV0YWluXTsKLSAgICByZXR1cm4gZGVmYXVsdEZvbnQ7CisgICAg
c3RhdGljIGF1dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZTox
Ml07CisgICAgICAgIGlmICghZm9udCkKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3Rl
bUZvbnRPZlNpemU6MTJdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZvbnQpOworICAgIH0o
KSk7CisgICAgcmV0dXJuIGRlZmF1bHRGb250LmdldCgpLmdldCgpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU3ZjIx
YzU4ODg5YjY3NjM4Y2RjMjhhNDExNTQyZmFjZmU1MjAyNjMuLmYzNjljZjBjMjlmNjY5ZGNmMmZh
ZGY4YTVkY2E5YzI4MTJiZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjI1LDEzICsyMjUsMTEgQEAgc3RhdGljIE5TVVJMICpjdXN0
b21TY2hlbWVVUkwoKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICppbWFnZURlY29kZXJBc3NldE9w
dGlvbnMoKQogewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbXSB7Ci0gICAg
ICAgIHJldHVybiBbQHsKLSAgICAgICAgICAgIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlv
bnNLZXk6IEAoQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkQWxsKSwKLSAgICAgICAg
ICAgIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXk6IEBZRVMsCi0gICAgICAgIH0g
cmV0YWluXTsKLSAgICB9KCk7Ci0gICAgcmV0dXJuIG9wdGlvbnM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBvcHRpb25zID0gQHsKKyAgICAgICAg
QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVz
dHJpY3Rpb25Gb3JiaWRBbGwpLAorICAgICAgICBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENh
Y2hlS2V5OiBAWUVTLAorICAgIH07CisgICAgcmV0dXJuIG9wdGlvbnMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUgOiBwdWJsaWMgTWVkaWFTYW1wbGVB
VkZPYmpDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db2xvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbQppbmRleCBkOTMxZDZjYWVhZDAwZjdhYzdiMDg4YjM4OWEwNGE4YjUzMTMwZjJmLi5k
NDQ5YzQ4MjQ5NTg1MTY0MGRhOTNkNWNiOWVhYjY2Mzc2MTg4MTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xMTYsMTYgKzEx
NiwxNiBAQCBOU0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBpZiAoY29s
b3IuaXNJbmxpbmUoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgY29s
b3IuYXNJbmxpbmUoKSB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEg
eyBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMg
TlNDb2xvciAqY2xlYXJDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46
MCBibHVlOjAgYWxwaGE6MF0gcmV0YWluXTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9y
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4g
Y2xlYXJDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBh
bHBoYTowXTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpLmdldCgpOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52
YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29s
b3IgY29sb3JXaXRoU1JHQlJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07Ci0g
ICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3IgPSBbTlNDb2xvciBjb2xvcldp
dGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV07CisgICAgICAgICAgICByZXR1cm4g
YmxhY2tDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENv
bG9yOjpSR0JBIHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBO
U0NvbG9yICp3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MSBncmVlbjox
IGJsdWU6MSBhbHBoYToxXSByZXRhaW5dOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3I7
CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ29sb3I+PiB3
aGl0ZUNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFs
cGhhOjFdOworICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCmluZGV4IDJlMjQ3YTZlNTNkZDA1YWIxOTBlZDk2ZGRhMmExYWU2ZGFkYzk4YWYuLmE1
ZDJmNzM2YzJlZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtNDEsOCArNDEsOCBAQCBjb25zdCBjaGFyKiBR
TFByZXZpZXdQcm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKIAogTlNTZXQgKlFMUHJldmlld0dl
dFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpCiB7Ci0gICAgc3RhdGljIE5TU2V0ICpzZXQgPSBbUEFM
Ojpzb2Z0TGlua19RdWlja0xvb2tfUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzKCkgcmV0
YWluXTsKLSAgICByZXR1cm4gc2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNTZXQ+PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFByZXZpZXdHZXRTdXBw
b3J0ZWRNSU1FVHlwZXMoKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0
aWMgTG9jayBxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jazsKQEAgLTEwMiwyMSArMTAy
LDIxIEBAIGJvb2wgaXNRdWlja0xvb2tQcmV2aWV3VVJMKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0
aWMgTlNEaWN0aW9uYXJ5ICp0ZW1wb3JhcnlGaWxlQXR0cmlidXRlcygpCiB7Ci0gICAgc3RhdGlj
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtAeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gYXR0cmlidXRlcyA9IEB7CiAgICAgICAgIE5TRmls
ZU93bmVyQWNjb3VudE5hbWUgOiBOU1VzZXJOYW1lKCksCiAgICAgICAgIE5TRmlsZVBvc2l4UGVy
bWlzc2lvbnMgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6KFdFQl9VUkVBRCB8IFdFQl9V
V1JJVEUpXSwKLSAgICAgICAgfSByZXRhaW5dOwotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAg
IH07CisgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU0Rp
Y3Rpb25hcnkgKnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbQHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICBOU0ZpbGVP
d25lckFjY291bnROYW1lIDogTlNVc2VyTmFtZSgpLAogICAgICAgICBOU0ZpbGVQb3NpeFBlcm1p
c3Npb25zIDogW05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOihXRUJfVVJFQUQgfCBXRUJfVVdS
SVRFIHwgV0VCX1VFWEVDKV0sCiAgICAgICAgIE5TRmlsZVByb3RlY3Rpb25LZXkgOiBOU0ZpbGVQ
cm90ZWN0aW9uQ29tcGxldGVVbmxlc3NPcGVuLAotICAgICAgICB9IHJldGFpbl07Ci0gICAgcmV0
dXJuIGF0dHJpYnV0ZXM7CisgICAgfTsKKyAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoKS5nZXQo
KTsKIH0KIAogTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGVGb3JRdWlja0xvb2soTlNTdHJp
bmcgKmZpbGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNv
cmVNb3Rpb25NYW5hZ2VyLm1tCmluZGV4IDI3YjQyNDhjNjc5N2IyYzdmNjIzNWViZTFlYjRiZTZj
YzMzZjUxODMuLmVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIu
bW0KQEAgLTE3OCwxMyArMTc4LDggQEAgLSAodm9pZCljaGVja0NsaWVudFN0YXR1cwogICAgICAg
ICBpZiAobV9oZWFkaW5nQXZhaWxhYmxlKQogICAgICAgICAgICAgW21fbG9jYXRpb25NYW5hZ2Vy
IHN0YXJ0VXBkYXRpbmdIZWFkaW5nXTsKIAotICAgICAgICBpZiAoIW1fdXBkYXRlVGltZXIpIHsK
LSAgICAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBbW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRo
VGltZUludGVydmFsOmtNb3Rpb25VcGRhdGVJbnRlcnZhbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6c2VsZgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6
WUVTXSByZXRhaW5dOwotICAgICAgICB9CisgICAgICAgIGlmICghbV91cGRhdGVUaW1lcikKKyAg
ICAgICAgICAgIG1fdXBkYXRlVGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1l
SW50ZXJ2YWw6a01vdGlvblVwZGF0ZUludGVydmFsIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3Rvcih1cGRhdGUpIHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU107CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgW21fdXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CiAgICAgICAgIG1fdXBkYXRlVGltZXIg
PSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KaW5kZXggMTlkN2I3ZTVjMjdmMjc1MWQzZTVjZTRkMzZjYTVmNjUwYWNhNDI3MC4uNjYw
MDc2YWRmNzY2Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2RkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNDcsNiArNDcsNyBA
QAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgogI2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CkBAIC0xMTEsNyArMTEyLDYg
QEAgc3RhdGljIFJlY3Vyc2l2ZUxvY2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCiBzdGF0aWMgdm9p
ZCogYXV0b3JlbGVhc2VQb29sTWFyazsKIHN0YXRpYyBDRlJ1bkxvb3BSZWYgd2ViVGhyZWFkUnVu
TG9vcDsKLXN0YXRpYyBOU1J1bkxvb3AqIHdlYlRocmVhZE5TUnVuTG9vcDsKIHN0YXRpYyBwdGhy
ZWFkX3Qgd2ViVGhyZWFkOwogc3RhdGljIEJPT0wgaXNXZWJUaHJlYWRMb2NrZWQ7CiBzdGF0aWMg
Qk9PTCB3ZWJUaHJlYWRTdGFydGVkOwpAQCAtMTI3LDExICsxMjcsOCBAQCB0eXBlZGVmIGVudW0g
ewogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwogc3Rh
dGljIENGTXV0YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKIAotc3RhdGlj
IHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopOwotCiBzdGF0aWMgTG9jayBk
ZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwot
c3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOwogc3RhdGljIENGUnVuTG9v
cFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBkZWxlZ2F0
ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKQEAgLTE2MSwxNCArMTU4LDMw
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBzQXN5bmNEZWxlZ2F0ZXMoKQog
ICAgIHJldHVybiBhc3luY0RlbGVnYXRlczsKIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1J1bkxv
b3A+JiB3ZWJUaHJlYWROU1J1bkxvb3AoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNSdW5Mb29wPj4gd2ViVGhyZWFkTlNSdW5Mb29wOworICAgIHJldHVybiB3ZWJU
aHJlYWROU1J1bkxvb3A7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYgZGVs
ZWdhdGVJbnZvY2F0aW9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TSW52b2NhdGlvbj4+IGRlbGVnYXRlSW52b2NhdGlvbjsKKyAgICByZXR1cm4gZGVsZWdhdGVJ
bnZvY2F0aW9uOworfQorCiBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSB1bnNpZ25lZCB3ZWJUaHJl
YWREZWxlZ2F0ZU1lc3NhZ2VTY29wZUNvdW50ID0gMDsKIAogc3RhdGljIGJvb2wgcGVyQ2FsbG91
dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQ7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2Fn
ZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3Nh
Z2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0
aW9uIGludm9rZV07Ci0gICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsK
KworICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFpbigpID09
IENGUnVuTG9vcEdldEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtpbnZvY2F0aW9uID0gV1RGTW92ZShpbnZvY2F0aW9uKV0geyB9KTsK
IH0KIAogc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCopCkBAIC0xODUsMTUg
KzE5OCwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkKikKICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOwogCiAjaWYgTE9HX01FU1NB
R0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xh
c3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKKyAgICAgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uKCkgdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRl
ciBjbGFzc11dKSB7CiAgICAgICAgICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgICAgICBbZGVs
ZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3VtZW50OiZhcmd1bWVudDAgYXRJbmRleDowXTsKKyAgICAg
ICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24oKSBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5k
ZXg6MF07CiAgICAgICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFy
Z3VtZW50MCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSBy
ZWNlaXZlOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKSk7CisgICAgICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVAIiwgTlNT
dHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSkpOwogI2Vu
ZGlmCiAKLSAgICAgICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsKKyAgICAgICAg
U2VuZE1lc3NhZ2UoV1RGTW92ZShkZWxlZ2F0ZUludm9jYXRpb24oKSkpOwogCiAgICAgICAgIGRl
bGVnYXRlSGFuZGxlZCA9IFlFUzsKICAgICAgICAgZGVsZWdhdGVDb25kaXRpb24ubm90aWZ5T25l
KCk7CkBAIC0yMTQsMjYgKzIyNywyNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotc3RhdGljIHZv
aWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCitzdGF0aWMg
dm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2Nh
dGlvbikKIHsKICAgICBpZiAoIVdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIFNlbmRN
ZXNzYWdlKGludm9jYXRpb24pOworICAgICAgICBTZW5kTWVzc2FnZShXVEZNb3ZlKGludm9jYXRp
b24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChkZWxlZ2F0ZVNvdXJj
ZSk7CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAotICAgIGRlbGVnYXRlSW52b2NhdGlvbiA9
IGludm9jYXRpb247CisgICAgZGVsZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGludm9jYXRp
b24pOwogICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAjaWYgTE9HX01FU1NBR0VTCi0gICAg
aWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkgeworICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbigpIHRh
cmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgewogICAg
ICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1l
bnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOworICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uKCkg
Z2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAgICBOU0xvZyhAIm5vdGlm
aWNhdGlvbiBzZW5kOiAlQCIsIGFyZ3VtZW50MCk7CiAgICAgfSBlbHNlCi0gICAgICAgIE5TTG9n
KEAiZGVsZWdhdGUgc2VuZDogJUAiLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZv
Y2F0aW9uIHNlbGVjdG9yXSkpOworICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHNlbmQ6ICVAIiwg
TlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSkpOwog
I2VuZGlmCiAKICAgICB7CkBAIC0yNDgsMTAgKzI2MSwxMCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVs
ZWdhdGVNZXNzYWdlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKICAgICAgICAgd2hpbGUgKCFk
ZWxlZ2F0ZUhhbmRsZWQpIHsKICAgICAgICAgICAgIGlmICghZGVsZWdhdGVDb25kaXRpb24ud2Fp
dEZvcihkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgewogICAgICAgICAgICAg
ICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247Ci0gICAgICAgICAgICAgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIg
Y2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1
bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAgICAgICAgIGlm
IChbW2RlbGVnYXRlSW52b2NhdGlvbigpIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2Nh
dGlvbigpIGdldEFyZ3VtZW50OiZkZWxlZ2F0ZUluZm9ybWF0aW9uIGF0SW5kZXg6MF07CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9u
ID0gTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pOwor
ICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2Vs
ZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSk7CiAgICAgCiAgICAgICAgICAg
ICAgICAgQ0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxv
b3BHZXRNYWluKCkpOwogICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkg
ZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4gcnVuIGxvb3Ag
bW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxl
Z2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwpAQCAtMjgyLDE5ICsyOTUsNiBAQCB2
b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAg
IF9XZWJUaHJlYWRMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJl
bGVhc2UoaWQgb2JqKQotewotICAgIGF1dG8gYWRvcHRlZE9iaiA9IGFkb3B0TlMob2JqKTsKLSAg
ICBpZiAoIVdlYlRocmVhZElzRW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4oKSA9PSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLSNpZiBMT0dfUkVMRUFTRVMKLSAg
ICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbd2ViIHRocmVhZF0gOiAlQCIsIG9iaik7Ci0jZW5kaWYK
LSAgICAvLyBXZSBvd24gb2JqIGF0IHRoaXMgcG9pbnQsIHNvIHdlIGRvbid0IG5lZWQgdGhlIGJs
b2NrIHRvIGltcGxpY2l0bHkKLSAgICAvLyByZXRhaW4gaXQuCi0gICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFthZG9wdGVkT2JqID0gV1RGTW92ZShhZG9wdGVkT2JqKV0geyB9KTsKLX0KLQog
dm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFTU0VSVCghV2Vi
VGhyZWFkSXNDdXJyZW50KCkpOwpAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIEhhbmRs
ZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB2b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0
ZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgLy8gTlNJbnZvY2F0aW9uIHJlbGVh
c2VkIGluIFNlbmRNZXNzYWdlKCkKLSAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKFtpbnZvY2F0aW9u
IHJldGFpbl0pOworICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoaW52b2NhdGlvbik7CiB9CiAKIHZv
aWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyogbmFtZSwgaWQgb2JqZWN0LCBp
ZCB1c2VySW5mbykKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5s
b2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBvb2xPcGVyYXRpb24pCiAgICAg
QVNTRVJUKHNBc3luY0RlbGVnYXRlcygpKTsKICAgICBpZiAoW3NBc3luY0RlbGVnYXRlcygpIGNv
dW50XSkgewogICAgICAgICBmb3IgKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbiBpbiBzQXN5bmNE
ZWxlZ2F0ZXMoKS5nZXQoKSkKLSAgICAgICAgICAgIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoW2ludm9j
YXRpb24gcmV0YWluXSk7CisgICAgICAgICAgICBTZW5kRGVsZWdhdGVNZXNzYWdlKGludm9jYXRp
b24pOwogICAgICAgICBbc0FzeW5jRGVsZWdhdGVzKCkgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAg
fQogCkBAIC02MzIsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikK
IAogICAgIHdlYlRocmVhZENvbnRleHQgPSBDdXJyZW50VGhyZWFkQ29udGV4dCgpOwogICAgIHdl
YlRocmVhZFJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgd2ViVGhyZWFkTlNS
dW5Mb29wID0gW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJldGFpbl07CisgICAgd2ViVGhy
ZWFkTlNSdW5Mb29wKCkgPSBbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKIAogICAgIENGUnVu
TG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNl
cnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJl
Zm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BM
b2NrLCBudWxscHRyKTsKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29w
LCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAt
ODk4LDggKzg5OCw4IEBAIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpCiBOU1J1
bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKQogewogICAgIGlmICh3ZWJUaHJlYWRTdGFy
dGVkKSB7Ci0gICAgICAgIEFTU0VSVCh3ZWJUaHJlYWROU1J1bkxvb3ApOwotICAgICAgICByZXR1
cm4gd2ViVGhyZWFkTlNSdW5Mb29wOworICAgICAgICBBU1NFUlQod2ViVGhyZWFkTlNSdW5Mb29w
KCkpOworICAgICAgICByZXR1cm4gd2ViVGhyZWFkTlNSdW5Mb29wKCkuZ2V0KCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2Fk
Q29jb2EubW0KaW5kZXggNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2Mi4u
OGNjZTI5NTU0YzBiNTYyM2NjOTdkYjlkNDgyN2M5YTEyY2VhMGViNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tCkBAIC01MSwxNSArNTEsMTUgQEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAog
CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzM0NzQ1MTcxPi4gRml4ZWQgaW4gaU9TIDEzIGFuZCBtYWNPUyAxMC4xNSwgYnV0
IHdlIHN0aWxsIG5lZWQgdG8gc3VwcG9ydCBtYWNPUyAxMC4xNCBmb3Igbm93LgogI2lmIFVTRShM
RUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKLSAgICBzdGF0aWMgTlNTZXQ8Q2xhc3M+ICpwbGlz
dENsYXNzZXMgPSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1Nl
dDxDbGFzcz4+PiBwbGlzdENsYXNzZXM7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHBsaXN0
Q2xhc3NlcyA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtO
U0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0
YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIHJldGFp
bl07CisgICAgICAgIHBsaXN0Q2xhc3Nlcy5nZXQoKSA9IFtOU1NldCBzZXRXaXRoT2JqZWN0czpb
TlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBb
TlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVx
dWVzdCBjbGFzc10sIG5pbF07CiAgICAgfSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOm5zRGF0
YS5nZXQoKSBlcnJvcjpuaWxdKTsKICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQ
b2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07Ci0gICAgYXV0byBk
aWN0aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6cGxpc3RDbGFzc2VzIGZvcktleTpAIk5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAqPihbW3Vu
YXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOnBsaXN0Q2xhc3Nlcy5nZXQoKS5nZXQoKSBm
b3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKICAg
ICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CiAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0
OnN0YXRpY19jYXN0PE5TU3RyaW5nKj4ocGF0aCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1l
SW5mb0xvY2FsUGF0aCJdOwogICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJj
aGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlc0NvY29hLm1tCmluZGV4IDEwMTQ1YjkwYWEzYjRkYTY5YTA4YzA4ODc5ZDg1MDZlYzZh
NmJkYzIuLmM4OTE0ODRiYmU3ZDc1YTBiOTViODI0MDNlZWViMDY2OTZmY2EyZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlc0NvY29hLm1tCkBAIC00NSwxMiArNDUsMTIgQEAgYm9vbCBpc0ZlYXR1cmVG
bGFnRW5hYmxlZChjb25zdCBTdHJpbmcmIGZlYXR1cmVOYW1lKQogICAgIGlmICghaXNXZWJLaXRC
dW5kbGVGcm9tU3RhZ2VkRnJhbWV3b3JrKQogICAgICAgICByZXR1cm4gX29zX2ZlYXR1cmVfZW5h
YmxlZF9pbXBsKCJXZWJLaXQiLCAoY29uc3QgY2hhciopZmVhdHVyZU5hbWUudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gW1tOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpAIi9MaWJyYXJ5L0FwcGxlL1N5c3RlbS9M
aWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0LnBsaXN0Il0gcmV0YWluXTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGRpY3Rpb25hcnkg
PSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ29udGVudHNPZkZpbGU6QCIvTGlicmFyeS9B
cHBsZS9TeXN0ZW0vTGlicmFyeS9GZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdCJdOwog
Ci0gICAgaWYgKCFbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RG
b3JLZXk6QCJFbmFibGVkIl0pCisgICAgaWYgKCFbW2RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9y
S2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0pCiAgICAgICAgIHJldHVy
biBfb3NfZmVhdHVyZV9lbmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJl
TmFtZS5jaGFyYWN0ZXJzOCgpKTsKIAotICAgIHJldHVybiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZv
cktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5h
bWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSBib29sVmFsdWVdOworICAgIHJldHVybiBbW1tk
aWN0aW9uYXJ5LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAi
RW5hYmxlZCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0gJiYgW1tbZGljdGlvbmFy
eS5nZXQoKSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQi
XSBib29sVmFsdWVdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlQ29jb2EubW0KaW5kZXggZDJkOGFlOGZjZDU3N2MxMzIyYTE5NGNjZDU1OGIwZDhj
NmVjZTRmNy4uNGVkMzc3NGEwNGYwODE4ZTU1NzQxMTFhMjc1NDZmNTZkMjdiN2Q5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IEFQSSB7CiBXVEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0
aChib29sIGxlZ2FjeUZpbGVuYW1lKQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqY29udGVudFJ1bGVMaXN0U3RvcmVVUkw7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+IGNvbnRlbnRSdWxlTGlzdFN0
b3JlVVJMOwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBOU1VS
TCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6
TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVG
b3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CkBAIC01MywxNSArNTMsMTUg
QEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZVBhdGgoYm9v
bCBsZWdhY3lGaWxlbmFtZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlZ2Fj
eUZpbGVuYW1lKQotICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwgPSBbW3VybCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50RXh0ZW5zaW9ucyIgaXNEaXJlY3Rv
cnk6WUVTXSByZXRhaW5dOworICAgICAgICAgICAgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0
KCkgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25z
IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50UnVs
ZUxpc3RTdG9yZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRl
bnRSdWxlTGlzdHMiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICAgICAgICAgIGNvbnRl
bnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDb250ZW50UnVsZUxpc3RzIiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0gICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9yZVVSTCk7CisgICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9y
ZVVSTC5nZXQoKS5nZXQoKSk7CiAKLSAgICByZXR1cm4gY29udGVudFJ1bGVMaXN0U3RvcmVVUkwu
YWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFtj
b250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lzdGVt
UmVwcmVzZW50YXRpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5k
ZXggNTViNWZjOTU1MTY4ZTQ4NDUyY2ZiNzEwY2ViYjZhZGZlOWQwNWE5NC4uNDBkN2Y4NWJmOWJm
ODQyNjVkMDZkNDk3MmRjNGQwNmVlMGNlOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yMzEsNyAr
MjMxLDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQog
KyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZh
dGUKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMg
TlNTZXQgKmFsbFdlYnNpdGVEYXRhVHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU1NldD4+IGFsbFdlYnNpdGVEYXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeIHsKICAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFsKICAgICAgICAg
ICAgIF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwKQEAgLTI0NywxMCArMjQ3LDEwIEBAICsg
KE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRl
CiAjZW5kaWYKICAgICAgICAgXTsKIAotICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzID0gW1tb
c2VsZiBhbGxXZWJzaXRlRGF0YVR5cGVzXSBzZXRCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6cHJp
dmF0ZVR5cGVzXSByZXRhaW5dOworICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzLmdldCgpID0g
W1tzZWxmIGFsbFdlYnNpdGVEYXRhVHlwZXNdIHNldEJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpw
cml2YXRlVHlwZXNdOwogICAgIH0pOwogCi0gICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7
CisgICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKEJP
T0wpX2RlZmF1bHREYXRhU3RvcmVFeGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCAwOGNiOGVkMDYzNmJmNDA2N2Q3NGQ1YjM5ZDE5ZDVlOGY2NDRiZjNkLi5mY2E5
NmMyZjljZTJjMjk2ZWZmNDk2ZWVmMWViZWJhYWY1OWQ2MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0zMzIsNyArMzMyLDcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURp
cmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiB0ZW1wVVJMOwogICAgIAogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAt
MzQ2LDEwICszNDYsMTAgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlMKICAgICAgICAgICAgIHVy
bCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNE
aXJlY3Rvcnk6WUVTXTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtb
dXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVT
XSByZXRhaW5dOworICAgICAgICB0ZW1wVVJMLmdldCgpID0gW3VybCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107CiAgICAgfSk7CiAgICAgCi0g
ICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJl
Y3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMLmdl
dCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5
OllFU107CiAKICAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IFNob3VsZENyZWF0ZURp
cmVjdG9yeTo6WWVzCiAgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllF
UyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCkBAIC0zNjEsNyArMzYxLDcgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlMKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJl
Y3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQog
ewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VS
TCAqY2FjaGVVUkw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTD4+
IGNhY2hlVVJMOwogCiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBO
U1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rv
cnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0
ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTM3NSwxMCArMzc1
LDEwIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6CiAgICAgICAgICAgICB1cmwgPSBbdXJsIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllF
U107CiAgICAgICAgIH0KIAotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgICAg
ICBjYWNoZVVSTC5nZXQoKSA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vi
S2l0IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIH0pOwogCi0gICAgTlNVUkwgKnVybCA9IFtjYWNo
ZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9y
eTpZRVNdOworICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBpZiAoc2hv
dWxkQ3JlYXRlRGlyZWN0b3J5ID09IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6WWVzCiAgICAgICAg
ICYmICFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgdXJsKTsKQEAgLTM4OSw3ICszODksNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6Ogog
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICp3
ZWJzaXRlRGF0YVVSTDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TVVJM
Pj4gd2Vic2l0ZURhdGFVUkw7CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAg
ICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZv
ckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBh
cHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKQEAgLTQw
NSwxMCArNDA1LDEwIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0CiAgICAgICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGly
ZWN0b3J5OllFU107CiAgICAgICAgIH0KIAotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07CisgICAgICAgIHdlYnNpdGVEYXRhVVJMLmdldCgpID0gW3VybCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXTsKICAg
ICB9KTsKIAotICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAq
dXJsID0gW3dlYnNpdGVEYXRhVVJMLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpk
aXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CiAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggNjYxNjJlM2ZhMjkzZWI3NGViZWYzYzBkNTBhYzE3ZWFjZmJkYzgwMi4uMjIw
Yjc2OWMwMWI0YTYzZWM5NzRiMzk5YTUxODZjMThhNDM0ODYwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC00NTAzLDExICs0NTAzLDExIEBAIC0gKE5TQXJyYXkgKilrZXlDb21tYW5kcwogICAgIGlmICgh
X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBzdGF0aWMgTlNBcnJheSogZWRpdGFibGVLZXlDb21tYW5kcyA9IFtAWworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGVkaXRhYmxlS2V5Q29t
bWFuZHMgPSBAWwogICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJc
dCIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX25leHRBY2Nlc3NvcnlUYWI6KV0s
CiAgICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmll
ckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9wcmV2aW91c0FjY2Vz
c29yeVRhYjopXQotICAgIF0gcmV0YWluXTsKLSAgICByZXR1cm4gZWRpdGFibGVLZXlDb21tYW5k
czsKKyAgICBdOworICAgIHJldHVybiBlZGl0YWJsZUtleUNvbW1hbmRzLmdldCgpLmdldCgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCmluZGV4IGEyYzhiYjFhNDcxNzhjYzBjMzQ3YWRjNDdiZDA2NDk4ZGI1N2Mx
YzcuLjJhNWIxODMyNjc2N2MyYTdkNDllNTllYmUzZThhMmMxMGIwZDNlZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjUz
LDI1ICsyNTMsMjAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVOYW1l
cyA9IDA7Ci0KLSAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7Ci0gICAgICAgIGF0dHJpYnV0ZU5h
bWVzID0gQFsKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJs
ZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0
ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAvLyBQREZMYXllckNvbnRyb2xsZXIgaGFzIGl0cyBvd24gYWNjZXNzaWJpbGl0eUNoaWxk
cmVuLgotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUKLSAgICAg
ICAgICAgIF07Ci0gICAgICAgIFthdHRyaWJ1dGVOYW1lcyByZXRhaW5dOwotICAgIH0KLQotICAg
IHJldHVybiBhdHRyaWJ1dGVOYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiBhdHRyaWJ1dGVOYW1lcyA9IEBbCisgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVBhcmVudEF0dHJpYnV0ZSwKKyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRl
LAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKKyAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICBO
U0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlFbmFi
bGVkQXR0cmlidXRlLAorICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwK
KyAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAgICAgLy8gUERG
TGF5ZXJDb250cm9sbGVyIGhhcyBpdHMgb3duIGFjY2Vzc2liaWxpdHlDaGlsZHJlbi4KKyAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUKKyAgICBdOworCisgICAgcmV0dXJu
IGF0dHJpYnV0ZU5hbWVzLmdldCgpLmdldCgpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNV
UkxFeHRyYXMubW0KaW5kZXggODc1MzYyNDJiNzkwMzRlYjkzNGNiNWY3MmE4OTczNmY3MTFhOTUw
Zi4uMWVjMDRlYWFmNWI0NjQ3NmQ4OTlkZmU4NTVlZWYyNmNjMjkzNTgyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0yNzYsMTcgKzI3
NiwxNiBAQCAtKE5TUmFuZ2UpX3dlYmtpdF9yYW5nZU9mVVJMU2NoZW1lCiAgICAgTlNSYW5nZSBj
b2xvbiA9IFtzZWxmIHJhbmdlT2ZTdHJpbmc6QCI6Il07CiAgICAgaWYgKGNvbG9uLmxvY2F0aW9u
ICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7CiAgICAgICAgIE5TUmFuZ2Ug
c2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKLSAgICAgICAgc3RhdGljIE5TQ2hhcmFjdGVy
U2V0ICpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0ID0gbmlsOwotICAgICAgICBpZiAoIUludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQpIHsKKyAgICAgICAgc3RhdGljIGF1dG8gaW52ZXJzZVNjaGVt
ZUNoYXJhY3RlclNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgICAgICAvKgog
ICAgICAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2VjIG9u
IGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcwogICAgICAgICAgICAgIGV2ZXJ5
dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFr
ZXMgbWUgd29uZGVyIGlmIHdlCiAgICAgICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhl
IGNoYXJhY3RlciBzZXQgaGVyZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgICBOU1N0cmlu
ZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgICAgIEludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBbW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRo
Q2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0gcmV0
YWluXTsKLSAgICAgICAgfQotICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VP
ZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCBvcHRpb25zOjAgcmFu
Z2U6c2NoZW1lXTsKKyAgICAgICAgICAgIHJldHVybiByZXRhaW5QdHIoW1tOU0NoYXJhY3RlclNl
dCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJz
XSBpbnZlcnRlZFNldF0pOworICAgICAgICB9KCkpOworICAgICAgICBOU1JhbmdlIGlsbGVnYWxz
ID0gW3NlbGYgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNl
dC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKICAgICAgICAgaWYgKGlsbGVn
YWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc2NoZW1lOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViU3RyaW5n
VHJ1bmNhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVu
Y2F0b3IubW0KaW5kZXggOThlY2FhOTQzNTY0NmY2MGVhZjE1YzM0NTE1NjhjOTIwNzA2M2UxMi4u
M2VlYzgwYWMyOTczZDJiNWY2ZmY2M2QzNWUzNmQwZWEyNmIxYmNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0KQEAgLTU4LDEz
ICs1OCwxMyBAQCArICh2b2lkKWluaXRpYWxpemUKIAogKyAoTlNTdHJpbmcgKiljZW50ZXJUcnVu
Y2F0ZVN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgdG9XaWR0aDooZmxvYXQpbWF4V2lkdGgKIHsK
LSAgICBzdGF0aWMgTlNGb250ICptZW51Rm9udCA9IFtbTlNGb250IG1lbnVGb250T2ZTaXplOjBd
IHJldGFpbl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0ZvbnQ+PiBt
ZW51Rm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CiAKLSAgICBBU1NFUlQobWVudUZv
bnQpOwotICAgIGlmICghbWVudUZvbnQpCisgICAgQVNTRVJUKG1lbnVGb250LmdldCgpKTsKKyAg
ICBpZiAoIW1lbnVGb250LmdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlN0cmluZ1RydW5jYXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyaW5nLCBtYXhXaWR0
aCwgZm9udEZyb21OU0ZvbnQobWVudUZvbnQpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U3RyaW5n
VHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIG1heFdpZHRoLCBmb250RnJvbU5TRm9u
dChtZW51Rm9udC5nZXQoKS5nZXQoKSkpOwogfQogCiArIChOU1N0cmluZyAqKWNlbnRlclRydW5j
YXRlU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB0b1dpZHRoOihmbG9hdCltYXhXaWR0aCB3aXRo
Rm9udDooTlNGb250ICopZm9udApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KaW5kZXggYmJmZmRjNDU0ODA3MDhiZTk5MjE3ZDhk
MDQwMjBhOWE4YmMyNzM2NS4uMzM5NGFhNGUxZWZkMjBkYTg3ZTQ3YzUxYmIyY2RkYmMyMWQ1MjRm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdl
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3Jh
Z2VNYW5hZ2VyLm1tCkBAIC05NywxOSArOTcsMTkgQEAgLSAodm9pZClzeW5jRmlsZVN5c3RlbUFu
ZFRyYWNrZXJEYXRhYmFzZQogCiArIChOU1N0cmluZyAqKV9zdG9yYWdlRGlyZWN0b3J5UGF0aAog
ewotICAgIHN0YXRpYyBOU1N0cmluZyAqc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1N0cmluZz4+IHNMb2NhbFN0b3JhZ2VQYXRoOwogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKICAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBe
ewogICAgICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdOwotICAgICAgICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtkZWZhdWx0
cyBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKLSAgICAgICAg
aWYgKCFzTG9jYWxTdG9yYWdlUGF0aCB8fCAhW3NMb2NhbFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBsb2Nh
bFN0b3JhZ2VQYXRoID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJTdG9yYWdlRGlyZWN0b3J5
RGVmYXVsdHNLZXldOworICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZVBhdGggfHwgIVtsb2NhbFN0
b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgICAg
IE5TQXJyYXkgKnBhdGhzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNM
aWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOwogICAgICAgICAgICAgTlNT
dHJpbmcgKmxpYnJhcnlEaXJlY3RvcnkgPSBbcGF0aHMgb2JqZWN0QXRJbmRleDowXTsKLSAgICAg
ICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOworICAgICAgICAgICAg
bG9jYWxTdG9yYWdlUGF0aCA9IFtsaWJyYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYktpdC9Mb2NhbFN0b3JhZ2UiXTsKICAgICAgICAgfQotICAgICAgICBz
TG9jYWxTdG9yYWdlUGF0aCA9IFtbc0xvY2FsU3RvcmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6
aW5nUGF0aF0gcmV0YWluXTsKKyAgICAgICAgc0xvY2FsU3RvcmFnZVBhdGguZ2V0KCkgPSBbbG9j
YWxTdG9yYWdlUGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKICAgICB9KTsKLSAgICBy
ZXR1cm4gc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgcmV0dXJuIHNMb2NhbFN0b3JhZ2VQYXRoLmdl
dCgpLmdldCgpOwogfQogCiArICh2b2lkKXNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbDoo
ZG91YmxlKWludGVydmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOTFhZmM1ZDc0NDkxNDM0ZjRl
MTIzZjE4YTUwNDE3Mzg5YjM0YjNiOS4uMGRmYWU4NDlmMGQ3NzQ0ZTg3ZmQyODlkZDY2MWE1MGYx
NDBjNDI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDU5LDEwICs0NTksMTAgQEAgc3RhdGlj
IE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkK
IAogdm9pZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJlc3VsdCkKIHsKLSAgICBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpkb2N1bWVudEF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlc0ZvckF0
dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkgcmV0YWluXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TRGljdGlvbmFyeT4+IGRvY3VtZW50QXR0cmlidXRlcyA9IGF0dHJp
YnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpOwogICAgIE5TQXJyYXkgKnN1YnJl
c291cmNlczsKICAgICBET01Eb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCA9IFtzdHJpbmcgX2Rv
Y3VtZW50RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkKLSAgICAgICAg
ZG9jdW1lbnQ6a2l0KCZkb2N1bWVudCkgZG9jdW1lbnRBdHRyaWJ1dGVzOmRvY3VtZW50QXR0cmli
dXRlcyBzdWJyZXNvdXJjZXM6JnN1YnJlc291cmNlc107CisgICAgICAgIGRvY3VtZW50OmtpdCgm
ZG9jdW1lbnQpIGRvY3VtZW50QXR0cmlidXRlczpkb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCkuZ2V0
KCkgc3VicmVzb3VyY2VzOiZzdWJyZXNvdXJjZXNdOwogICAgIHJlc3VsdC5mcmFnbWVudCA9IGNv
cmUoZnJhZ21lbnQpOwogICAgIGZvciAoV2ViUmVzb3VyY2UqIHJlc291cmNlIGluIHN1YnJlc291
cmNlcykKICAgICAgICAgcmVzdWx0LnJlc291cmNlcy5hcHBlbmQoW3Jlc291cmNlIF9jb3JlUmVz
b3VyY2VdLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggNDdhM2Q1MzA1ZTc2MWY2YzZhNDFi
Y2FkY2Q2M2E1YzMyMjYxODEyOS4uOGU2ZWVhNjhhZjUzN2U3MTkxMmY1MjIwNmQ5ZDNmYjIwY2Q0
OGI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTk3LDM0ICs5NywzMyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IG5ld0FycmF5V2l0aFN0cmluZ3MoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUlucwogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7Ci0gICAgc3Rh
dGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9IFtbW1tzZWxmIHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheToKLSAgICAg
ICAgW3NlbGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdXSBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zy
b21BcnJheToKLSAgICAgICAgW3NlbGYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdXSByZXRhaW5d
OwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzID0g
W1tbc2VsZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10gYXJyYXlCeUFkZGluZ09iamVjdHNG
cm9tQXJyYXk6CisgICAgICAgIFtzZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXV0gYXJyYXlC
eUFkZGluZ09iamVjdHNGcm9tQXJyYXk6W3NlbGYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdXTsK
KyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiAr
IChOU0FycmF5ICopc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1J
TUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlh
TUlNRVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcy5n
ZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
CiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
ID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IHN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5n
cyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKTsKKyAgICBy
ZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAK
ICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0Fy
cmF5ICpzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3Mo
TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSkubGVha1JlZigpOwot
ICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKSk7CisgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVz
LmdldCgpLmdldCgpOwogfQogCiArIChOU0FycmF5ICopdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVz
CiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9
IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0
YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5
cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkpOworICAgIHJldHVybiBzdGF0
aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKGlkKWluaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXNEZWZhdWx0VmFsdWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KaW5kZXggY2Y5ZGJjYWIxODRjNWM4NTk1M2Q3NWJm
ZTBjZDVhNGY5YmZjNDZiMi4uODkwZTJiMTVhNDU4YmNlOWQ5NWY1ZTY1NzExZTQxNWEyMDFhM2Rj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMubW0KQEAgLTUyLDEyICs1MiwxMiBAQCBib29s
IGlzRmVhdHVyZUZsYWdFbmFibGVkKGNvbnN0IFN0cmluZyYgZmVhdHVyZU5hbWUpCiAgICAgaWYg
KCFpc1dlYktpdEJ1bmRsZUZyb21TdGFnZWRGcmFtZXdvcmspCiAgICAgICAgIHJldHVybiBfb3Nf
ZmVhdHVyZV9lbmFibGVkX2ltcGwoIldlYktpdCIsIChjb25zdCBjaGFyKilmZWF0dXJlTmFtZS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBb
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOkAiL0xpYnJhcnkvQXBw
bGUvU3lzdGVtL0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QiXSByZXRh
aW5dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4g
ZGljdGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDb250ZW50c09mRmlsZTpA
Ii9MaWJyYXJ5L0FwcGxlL1N5c3RlbS9MaWJyYXJ5L0ZlYXR1cmVGbGFncy9Eb21haW4vV2ViS2l0
LnBsaXN0Il07CiAKLSAgICBpZiAoIVtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5h
bWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKKyAgICBpZiAoIVtbZGljdGlvbmFyeS5nZXQo
KSBvYmplY3RGb3JLZXk6ZmVhdHVyZU5hbWVdIG9iamVjdEZvcktleTpAIkVuYWJsZWQiXSkKICAg
ICAgICAgcmV0dXJuIF9vc19mZWF0dXJlX2VuYWJsZWRfaW1wbCgiV2ViS2l0IiwgKGNvbnN0IGNo
YXIqKWZlYXR1cmVOYW1lLmNoYXJhY3RlcnM4KCkpOwogCi0gICAgcmV0dXJuIFtbW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmplY3RGb3JLZXk6QCJFbmFibGVkIl0gaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBbW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CisgICAg
cmV0dXJuIFtbW2RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OmZlYXR1cmVOYW1lXSBvYmpl
Y3RGb3JLZXk6QCJFbmFibGVkIl0gaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSAmJiBb
W1tkaWN0aW9uYXJ5LmdldCgpIG9iamVjdEZvcktleTpmZWF0dXJlTmFtZV0gb2JqZWN0Rm9yS2V5
OkAiRW5hYmxlZCJdIGJvb2xWYWx1ZV07CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDkxN2EwNWQ4OTEwNzI5ZjQyZGFlMDZmNTlm
YjUxYTM2Yjc4MWVjYmEuLjY5NjA2YmY2ZWUzOTg5YjBiMWQ5YTIzNmZjNjY4YTBlOTVjNmVmZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0Mzgs
MTEgKzE0MzgsMTEgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
OihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBXZWJQcmVmZXJlbmNl
cyAqc3RhbmRhcmRQcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVu
Y2VzXTsKICAgICBbc3RhbmRhcmRQcmVmZXJlbmNlcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAotICAg
IF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IFtzdGFuZGFyZFByZWZlcmVuY2VzIHJldGFpbl07Cisg
ICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gc3RhbmRhcmRQcmVmZXJlbmNlczsKICAgICBfcHJp
dmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2YXRlLT5kcmF3c0Jh
Y2tncm91bmQgPSBZRVM7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgX3ByaXZhdGUt
PmJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRl
OjEgYWxwaGE6MV0gcmV0YWluXSk7CisgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IFtO
U0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6MV07CiAjZWxzZQogICAgIF9wcml2
YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNv
bG9yOjp3aGl0ZSk7CiAjZW5kaWYKQEAgLTE1MTQsNyArMTUxNCw3IEBAIC0gKHZvaWQpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBO
YW1lOihOU1N0CiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAg
fQogCi0gICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91
cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsK
KyAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFt
ZSwgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAg
ICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCiAgICAgYXV0byBzdG9yYWdl
UHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CkBAIC0xNzgw
LDcgKzE3ODAsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0
cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgICAgICBwcmVmZXJlbmNl
cyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBbcHJlZmVyZW5j
ZXMgd2lsbEFkZFRvV2ViVmlld107CiAKLSAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJl
ZmVyZW5jZXMgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNl
czsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2
YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xv
ciA9IFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKQEAgLTE3
ODksNyArMTc4OSw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5T
U3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgW2ZyYW1lVmlldyBz
ZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFi
bGVdOwogICAgIFtzZWxmIGFkZFN1YnZpZXc6ZnJhbWVWaWV3LmdldCgpXTsKIAotICAgIF9wcml2
YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0
ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgX3ByaXZhdGUt
Pmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFtfcHJpdmF0ZS0+
cHJlZmVyZW5jZXMgX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5n
cm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAogICAgIGF1dG8gc3RvcmFnZVByb3ZpZGVyID0gUGFn
ZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAg
LSAodm9pZClfY2xvc2UKIAogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNlRm9y
SWRlbnRpZmllcjpbc2VsZiBwcmVmZXJlbmNlc0lkZW50aWZpZXJdXTsKIAotICAgIGF1dG8gcHJl
ZmVyZW5jZXMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVuY2VzLCBu
aWwpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gc3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMsIG5pbCk7CiAgICAgW3ByZWZlcmVuY2VzIGRpZFJlbW92ZUZyb21XZWJWaWV3XTsK
IAogICAgIFtzZWxmIF9jbG9zZVBsdWdpbkRhdGFiYXNlc107CkBAIC0zMzc1LDggKzMzNzUsOCBA
QCAtICh2b2lkKV9jaGVja0RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24KIAogICAgIF9wcml2YXRl
LT5fZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbiA9IFlFUzsKIAotICAgIGlmIChfcHJpdmF0ZS0+
cHJlZmVyZW5jZXMuYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsICYmIF9wcml2YXRlLT5w
cmVmZXJlbmNlcy5jYWNoZU1vZGVsIDwgV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcikKLSAg
ICAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzLmNhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9j
dW1lbnRCcm93c2VyOworICAgIGlmIChbX3ByaXZhdGUtPnByZWZlcmVuY2VzIGF1dG9tYXRpY2Fs
bHlEZXRlY3RzQ2FjaGVNb2RlbF0gJiYgW19wcml2YXRlLT5wcmVmZXJlbmNlcyBjYWNoZU1vZGVs
XSA8IFdlYkNhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpCisgICAgICAgIFtfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMgc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyXTsKIH0K
IAogLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBAIC01
NzgzLDEyICs1NzgzLDEyIEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2Vz
ICopcHJlZnMKIAogICAgIFtwcmVmcyB3aWxsQWRkVG9XZWJWaWV3XTsKIAotICAgIGF1dG8gb2xk
UHJlZnMgPSBhZG9wdE5TKF9wcml2YXRlLT5wcmVmZXJlbmNlcyk7CisgICAgYXV0byBvbGRQcmVm
cyA9IHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPnByZWZlcmVuY2VzLCBudWxscHRyKTsKIAogICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2Vs
ZiBuYW1lOldlYlByZWZlcmVuY2VzQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIG9iamVjdDpb
c2VsZiBwcmVmZXJlbmNlc11dOwogICAgIFtXZWJQcmVmZXJlbmNlcyBfcmVtb3ZlUmVmZXJlbmNl
Rm9ySWRlbnRpZmllcjpbb2xkUHJlZnMgaWRlbnRpZmllcl1dOwogCi0gICAgX3ByaXZhdGUtPnBy
ZWZlcmVuY2VzID0gW3ByZWZzIHJldGFpbl07CisgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0g
cHJlZnM7CiAKICAgICAvLyBBZnRlciByZWdpc3RlcmluZyBmb3IgdGhlIG5vdGlmaWNhdGlvbiwg
cG9zdCBpdCBzbyB0aGUgV2ViQ29yZSBzZXR0aW5ncyB1cGRhdGUuCiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOikKQEAgLTU4MDEsNyArNTgwMSw3
IEBAIC0gKHZvaWQpc2V0UHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuY2VzICopcHJlZnMKIAogLSAo
V2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogewotICAgIHJldHVybiBfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXM7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5nZXQoKTsKIH0KIAog
LSAodm9pZClzZXRQcmVmZXJlbmNlc0lkZW50aWZpZXI6KE5TU3RyaW5nICopYW5JZGVudGlmaWVy
CkBAIC02NTU5LDcgKzY1NTksNyBAQCAtICh2b2lkKXNldEdyb3VwTmFtZTooTlNTdHJpbmcgKiln
cm91cE5hbWUKICAgICBpZiAoX3ByaXZhdGUtPmdyb3VwKQogICAgICAgICBfcHJpdmF0ZS0+Z3Jv
dXAtPnJlbW92ZVdlYlZpZXcoc2VsZik7CiAKLSAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3
R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBbX3ByaXZhdGUtPnByZWZlcmVuY2VzIF9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGhdKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2Vs
Zik7CiAKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDgzYzZkNzgwNTAyZWYyYjE4YjU1M2E4ZTg5
ZDRjMWVlNTA4YWU4ODcuLjE1YzM5MTY4ZTAxMmRiNTRiYjZlNTA5NGVlNjEzYjAwZjY3MTU4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAg
LTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudDsKICAg
ICBCT09MIHVzZXJBZ2VudE92ZXJyaWRkZW47CiAgICAgCi0gICAgV2ViUHJlZmVyZW5jZXMgKnBy
ZWZlcmVuY2VzOworICAgIFJldGFpblB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1VSTCAqdXNlclN0eWxlU2hlZXRMb2NhdGlv
bjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDRlYzg5NTc5ZDIyZDQ0OTBlZWJjYzQ2ZmIzODcyODc4ZjNlZDM0NWEuLjQxMTE4OTY3
MDhkM2Q3NzEwMmIxMjNkMjNkYTFjNjk5NTk5YTdjYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMi0yNSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNp
dCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJl
dGFpbl0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoYWxsb3dlZEZvbnRGYW1p
bHlTZXQpOgorICAgICAgICAoLVtEUlRNb2NrU2Nyb2xsZXIgZHJhd0tub2JdKToKKyAgICAgICAg
KC1bRFJUTW9ja1Njcm9sbGVyIGRyYXdSZWN0Ol0pOgorICAgICAgICAocHJlcGFyZUNvbnNpc3Rl
bnRUZXN0aW5nRW52aXJvbm1lbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3
IHNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGVdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6
YWxsb3dlZEZvbnRGYW1pbHlTZXQpOgorICAgICAgICAoV1RSOjpzeXN0ZW1IaWRkZW5Gb250RmFt
aWx5U2V0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBh
dGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9tYWluLm1tOgor
ICAgICAgICAoZGlzYWJsZUFwcE5hcEluVUlQcm9jZXNzKToKKwogMjAyMS0wMi0yNiAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tY29va2llIHdlYnNp
dGUgZGF0YSBub3QgZGVsZXRlZCBhZnRlciA3IGRheXMgb2YgYnJvd3NlciB1c2Ugd2l0aG91dCB1
c2VyIGludGVyYWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KaW5kZXggM2YzYmQ1MTlmZTg4MmU4NGZmZjAxY2E0ZjVmZDU2Yjg3ZWJjZmJlYi4uMTRiZDFl
ODBkNmVmMDkzMjg4OTkzOGNiZDQ1YmE0MzFhN2ZkNTYwNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjE4LDE1ICsyMTgsNDUgQEAgc3RhdGljIFJl
dGFpblB0cjxXZWJWaWV3PiYgZ2xvYmFsV2ViVmlldygpCiB9CiAKIC8vIERlbGVnYXRlcwotc3Rh
dGljIFJldGFpblB0cjxGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7Ci1zdGF0
aWMgUmV0YWluUHRyPFVJRGVsZWdhdGU+IHVpRGVsZWdhdGU7Ci1zdGF0aWMgUmV0YWluUHRyPEVk
aXRpbmdEZWxlZ2F0ZT4gZWRpdGluZ0RlbGVnYXRlOwotc3RhdGljIFJldGFpblB0cjxSZXNvdXJj
ZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7Ci1zdGF0aWMgUmV0YWluUHRyPEhp
c3RvcnlEZWxlZ2F0ZT4gaGlzdG9yeURlbGVnYXRlOworc3RhdGljIFJldGFpblB0cjxGcmFtZUxv
YWREZWxlZ2F0ZT4mIGZyYW1lTG9hZERlbGVnYXRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPEZyYW1lTG9hZERlbGVnYXRlPj4gZnJhbWVMb2FkRGVsZWdhdGU7Cisg
ICAgcmV0dXJuIGZyYW1lTG9hZERlbGVnYXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPFVJRGVs
ZWdhdGU+JiB1aURlbGVnYXRlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPFVJRGVsZWdhdGU+PiB1aURlbGVnYXRlOworICAgIHJldHVybiB1aURlbGVnYXRlOworfQor
CitzdGF0aWMgUmV0YWluUHRyPEVkaXRpbmdEZWxlZ2F0ZT4mIGVkaXRpbmdEZWxlZ2F0ZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+PiBl
ZGl0aW5nRGVsZWdhdGU7CisgICAgcmV0dXJuIGVkaXRpbmdEZWxlZ2F0ZTsKK30KKworc3RhdGlj
IFJldGFpblB0cjxSZXNvdXJjZUxvYWREZWxlZ2F0ZT4mIHJlc291cmNlTG9hZERlbGVnYXRlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFJlc291cmNlTG9hZERlbGVn
YXRlPj4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZERlbGVn
YXRlOworfQorCitzdGF0aWMgUmV0YWluUHRyPEhpc3RvcnlEZWxlZ2F0ZT4mIGhpc3RvcnlEZWxl
Z2F0ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxIaXN0b3J5RGVs
ZWdhdGU+PiBoaXN0b3J5RGVsZWdhdGU7CisgICAgcmV0dXJuIGhpc3RvcnlEZWxlZ2F0ZTsKK30K
KwogUmV0YWluUHRyPFBvbGljeURlbGVnYXRlPiBwb2xpY3lEZWxlZ2F0ZTsKIFJldGFpblB0cjxE
ZWZhdWx0UG9saWN5RGVsZWdhdGU+IGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKKwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi1zdGF0aWMgUmV0YWluUHRyPFNjcm9sbFZpZXdSZXNpemVyRGVsZWdh
dGU+IHNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGU7CitzdGF0aWMgUmV0YWluUHRyPFNjcm9sbFZp
ZXdSZXNpemVyRGVsZWdhdGU+JiBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGU+
PiBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlOworICAgIHJldHVybiBzY3JvbGxWaWV3UmVzaXpl
ckRlbGVnYXRlOworfQogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRlc3Rz
OwpAQCAtMjQyLDcgKzI3MiwxMyBAQCBzdGF0aWMgaW50IHNob3dXZWJWaWV3Owogc3RhdGljIGlu
dCBwcmludFRlc3RDb3VudDsKIHN0YXRpYyBpbnQgY2hlY2tGb3JXb3JsZExlYWtzOwogc3RhdGlj
IEJPT0wgcHJpbnRTZXBhcmF0b3JzOwotc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb247CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+JiBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IHBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uOworICAgIHJldHVybiBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbjsKK30KKwogc3RhdGljIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBhbGxvd2VkSG9zdHM7CiAK
IHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+JiBwcmV2VGVzdEJGSXRlbSgpCkBAIC0y
NjAsNyArMjk2LDcgQEAgUmV0YWluUHRyPER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93
OwogCiB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKENGU3RyaW5nUmVm
IHVybCkKIHsKLSAgICBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IHVybDsKKyAg
ICBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbigpID0gdXJsOwogfQogCiBzdGF0aWMg
Ym9vbCBzaG91bGRJZ25vcmVXZWJDb3JlTm9kZUxlYWtzKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmxT
dHJpbmcpCkBAIC0yODMsNyArMzE5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29y
ZU5vZGVMZWFrcyhjb25zdCBzdGQ6OnN0cmluZyYgdXJsU3RyaW5nKQogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiB7Ci0gICAg
c3RhdGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0Pj4gZm9udEZhbWlseVNldCA9
IFtOU1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAgICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBC
YXlhbiIsCiAgICAgICAgIEAiQW1lcmljYW4gVHlwZXdyaXRlciIsCkBAIC00MTAsMTQgKzQ0Niwx
NCBAQCBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKICAgICAgICAgQCJXaW5n
ZGluZ3MiLAogICAgICAgICBAIlphcGYgRGluZ2JhdHMiLAogICAgICAgICBAIlphcGZpbm8iLAot
ICAgICAgICBuaWxdIHJldGFpbl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZh
bWlseVNldDsKKyAgICByZXR1cm4gZm9udEZhbWlseVNldC5nZXQoKS5nZXQoKTsKIH0KIAogc3Rh
dGljIE5TQXJyYXkgKmZvbnRBbGxvd0xpc3QoKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheT4gYXZhaWxhYmxlRm9udHMgPSBbXSB7CisgICAgc3RhdGljIGF1dG8gYXZhaWxhYmxlRm9u
dHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewogICAgICAgICBhdXRvIGF2YWlsYWJsZUZvbnRz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGZvciAo
TlNTdHJpbmcgKmZvbnRGYW1pbHkgaW4gYWxsb3dlZEZvbnRGYW1pbHlTZXQoKSkgewogICAgICAg
ICAgICAgTlNBcnJheSogZm9udHNGb3JGYW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9u
dE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJlcnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07CkBAIC00
MjgsOCArNDY0LDggQEAgc3RhdGljIE5TQXJyYXkgKmZvbnRBbGxvd0xpc3QoKQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBhdmFpbGFibGVGb250czsKLSAgICB9KCk7
Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRzLmdldCgpOworICAgIH0oKSk7CisgICAgcmV0dXJu
IGF2YWlsYWJsZUZvbnRzLmdldCgpLmdldCgpOwogfQogCiAvLyBBY3RpdmF0aW5nIHN5c3RlbSBj
b3BpZXMgb2YgdGhlc2UgZm9udHMgb3ZlcnJpZGVzIGFueSBvdGhlcnMgdGhhdCBjb3VsZCBiZSBw
cmVmZXJyZWQsIHN1Y2ggYXMgb25lcwpAQCAtNTczLDcgKzYwOSw3IEBAIHN0YXRpYyB2b2lkIGFk
anVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChVSVdlYkJyb3dzZXJWaWV3ICp3ZWJC
cm93c2VyVmllCiAgICAgLy8gQWRqdXN0IHRoZSB2aWV3cG9ydCB2aWV3IGFuZCB2aWV3cG9ydCB0
byBoYXZlIHNpbWlsYXIgYmVoYXZpb3IKICAgICAvLyBhcyB0aGUgYnJvd3Nlci4KICAgICBbKER1
bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcgKil3ZWJCcm93c2VyVmlldyBzZXRTY3JvbGxpbmdVc2Vz
VUlXZWJTY3JvbGxWaWV3OllFU107Ci0gICAgW3dlYkJyb3dzZXJWaWV3IHNldERlbGVnYXRlOnNj
cm9sbFZpZXdSZXNpemVyRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJCcm93c2VyVmlldyBzZXRE
ZWxlZ2F0ZTpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKCkuZ2V0KCldOwogCiAgICAgQ0dSZWN0
IHNjcmVlbkJvdW5kcyA9IFtVSVNjcmVlbiBtYWluU2NyZWVuXS5ib3VuZHM7CiAgICAgQ0dSZWN0
IHZpZXdwb3J0UmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc2NyZWVuQm91bmRzLnNpemUud2lkdGgs
IHNjcmVlbkJvdW5kcy5zaXplLmhlaWdodCk7CkBAIC02NDMsMjEgKzY3OSwyMSBAQCAtICh2b2lk
KWRyYXdLbm9iCiAKICAgICBOU1JlY3Qga25vYlJlY3QgPSBbc2VsZiByZWN0Rm9yUGFydDpOU1Nj
cm9sbGVyS25vYl07CiAKLSAgICBzdGF0aWMgTlNDb2xvciAqa25vYkNvbG9yID0gW1tOU0NvbG9y
IGNvbG9yV2l0aERldmljZVJlZDoweDgwIC8gMjU1LjAgZ3JlZW46MHg4MCAvIDI1NS4wIGJsdWU6
MHg4MCAvIDI1NS4wIGFscGhhOjFdIHJldGFpbl07Ci0gICAgW2tub2JDb2xvciBzZXRdOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGtub2JDb2xvciA9IFtO
U0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweDgwIC8gMjU1LjAgZ3JlZW46MHg4MCAvIDI1NS4w
IGJsdWU6MHg4MCAvIDI1NS4wIGFscGhhOjFdOworICAgIFtrbm9iQ29sb3IuZ2V0KCkgc2V0XTsK
IAogICAgIE5TUmVjdEZpbGwoa25vYlJlY3QpOwogfQogCiAtICh2b2lkKWRyYXdSZWN0OihOU1Jl
Y3QpZGlydHlSZWN0CiB7Ci0gICAgc3RhdGljIE5TQ29sb3IgKnRyYWNrQ29sb3IgPSBbW05TQ29s
b3IgY29sb3JXaXRoRGV2aWNlUmVkOjB4QzAgLyAyNTUuMCBncmVlbjoweEMwIC8gMjU1LjAgYmx1
ZToweEMwIC8gMjU1LjAgYWxwaGE6MV0gcmV0YWluXTsKLSAgICBzdGF0aWMgTlNDb2xvciAqZGlz
YWJsZWRUcmFja0NvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweEUwIC8gMjU1
LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhFMCAvIDI1NS4wIGFscGhhOjFdIHJldGFpbl07
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gdHJhY2tDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDoweEMwIC8gMjU1LjAgZ3JlZW46MHhDMCAv
IDI1NS4wIGJsdWU6MHhDMCAvIDI1NS4wIGFscGhhOjFdOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGRpc2FibGVkVHJhY2tDb2xvciA9IFtOU0NvbG9yIGNv
bG9yV2l0aERldmljZVJlZDoweEUwIC8gMjU1LjAgZ3JlZW46MHhFMCAvIDI1NS4wIGJsdWU6MHhF
MCAvIDI1NS4wIGFscGhhOjFdOwogCiAgICAgaWYgKFtzZWxmIGlzRW5hYmxlZF0pCi0gICAgICAg
IFt0cmFja0NvbG9yIHNldF07CisgICAgICAgIFt0cmFja0NvbG9yLmdldCgpIHNldF07CiAgICAg
ZWxzZQotICAgICAgICBbZGlzYWJsZWRUcmFja0NvbG9yIHNldF07CisgICAgICAgIFtkaXNhYmxl
ZFRyYWNrQ29sb3IuZ2V0KCkgc2V0XTsKIAogICAgIE5TUmVjdEZpbGwoZGlydHlSZWN0KTsKIApA
QCAtNjg0LDEwICs3MjAsMTAgQEAgUmV0YWluUHRyPFdlYlZpZXc+IGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3coKQogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpAIm9yZy53ZWJraXQu
RHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCi0gICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1
aURlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFt
ZUxvYWREZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVk
aXRpbmdEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdh
dGU6cmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6dWlEZWxlZ2F0ZSgpLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0
ZTpmcmFtZUxvYWREZWxlZ2F0ZSgpLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVs
ZWdhdGU6ZWRpdGluZ0RlbGVnYXRlKCkuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldFJlc291cmNl
TG9hZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRlKCkuZ2V0KCldOwogICAgIFt3ZWJWaWV3
IF9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOltNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRd
XTsKICAgICBbd2ViVmlldyBfc2V0RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjpbV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2sgc2hhcmVkXV07CiAgICAgW3dlYlZpZXcgX3NldE5vdGlm
aWNhdGlvblByb3ZpZGVyOltNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgc2hhcmVkXV07CkBA
IC04MzYsOCArODcyLDggQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lz
dGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiAgICAgW3ByZWZlcmVuY2Vz
IF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Tk8gZm9yS2V5OkAiV2ViS2l0
TGF6eUltYWdlTG9hZGluZ0VuYWJsZWQiXTsKICAgICBbcHJlZmVyZW5jZXMgX3NldEJvb2xQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpOTyBmb3JLZXk6QCJXZWJLaXRXZWJBdXRoZW50aWNh
dGlvbkVuYWJsZWQiXTsKIAotICAgIGlmIChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlv
bikgewotICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjpbTlNV
UkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilwZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbi5nZXQoKV1dOworICAgIGlmIChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbigpKSB7CisgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uOltOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXBlcnNpc3RlbnRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKCkuZ2V0KCldXTsKICAgICAgICAgW3ByZWZlcmVuY2VzIHNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpZRVNdOwogICAgIH0gZWxzZQogICAgICAgICBbcHJlZmVy
ZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOk5PXTsKQEAgLTk5MCwzMCArMTAyNiwzMCBA
QCBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlbW92ZSB0aGVzZSBhbmQgbW92ZSB0byB0aGUgT2JqQyBzdGFuZGFyZCBb
Rm9vIHNoYXJlZEluc3RhbmNlXSBtb2RlbAogICAgIGdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IGFk
b3B0TlMoW1tOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOwotICAgIGZyYW1lTG9h
ZERlbGVnYXRlID0gYWRvcHROUyhbW0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0g
ICAgdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
ZWRpdGluZ0RlbGVnYXRlID0gYWRvcHROUyhbW0VkaXRpbmdEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgIHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Jlc291cmNlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgZnJhbWVMb2FkRGVsZWdhdGUoKSA9IGFkb3B0TlMoW1tG
cmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHVpRGVsZWdhdGUoKSA9IGFkb3B0
TlMoW1tVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgZWRpdGluZ0RlbGVnYXRlKCkgPSBh
ZG9wdE5TKFtbRWRpdGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgcmVzb3VyY2VMb2Fk
RGVsZWdhdGUoKSA9IGFkb3B0TlMoW1tSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwogICAgIHBvbGljeURlbGVnYXRlID0gYWRvcHROUyhbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7Ci0gICAgaGlzdG9yeURlbGVnYXRlID0gYWRvcHROUyhbW0hpc3RvcnlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIGhpc3RvcnlEZWxlZ2F0ZSgpID0gYWRvcHROUyhbW0hpc3RvcnlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tEZWZhdWx0UG9saWN5RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2Ny
b2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHNjcm9sbFZpZXdSZXNp
emVyRGVsZWdhdGUoKSA9IGFkb3B0TlMoW1tTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CiAjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgcmVsZWFzZUdsb2JhbENvbnRyb2xs
ZXJzKCkKIHsKICAgICBnTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBuaWw7Ci0gICAgZnJhbWVMb2Fk
RGVsZWdhdGUgPSBuaWw7Ci0gICAgZWRpdGluZ0RlbGVnYXRlID0gbmlsOwotICAgIHJlc291cmNl
TG9hZERlbGVnYXRlID0gbmlsOwotICAgIHVpRGVsZWdhdGUgPSBuaWw7Ci0gICAgaGlzdG9yeURl
bGVnYXRlID0gbmlsOworICAgIGZyYW1lTG9hZERlbGVnYXRlKCkgPSBuaWw7CisgICAgZWRpdGlu
Z0RlbGVnYXRlKCkgPSBuaWw7CisgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUoKSA9IG5pbDsKKyAg
ICB1aURlbGVnYXRlKCkgPSBuaWw7CisgICAgaGlzdG9yeURlbGVnYXRlKCkgPSBuaWw7CiAgICAg
cG9saWN5RGVsZWdhdGUgPSBuaWw7CiAgICAgZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbmlsOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9
IG5pbDsKKyAgICBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKCkgPSBuaWw7CiAjZW5kaWYKIH0K
IApAQCAtMTE0Nyw4ICsxMTgzLDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0
aW5nRW52aXJvbm1lbnQoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TQWN0aXZpdHlPcHRp
b25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1T
bGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVy
bWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVk
KTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9uID0gW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiRHVtcFJlbmRlclRy
ZWUgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHByb2Nlc3Mgc3VwcHJlc3Npb24iXSByZXRhaW5d
OwotICAgIEFTU0VSVF9VTlVTRUQoYXNzZXJ0aW9uLCBhc3NlcnRpb24pOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8aWQ+PiBhc3NlcnRpb24gPSBbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjpAIkR1
bXBSZW5kZXJUcmVlIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwcm9jZXNzIHN1cHByZXNzaW9u
Il07CisgICAgQVNTRVJUX1VOVVNFRChhc3NlcnRpb24sIGFzc2VydGlvbi5nZXQoKSk7CiAjZW5k
aWYKIH0KIApAQCAtMTUzOSw3ICsxNTc1LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlV2luZG93U2Nh
bGVJZk5lZWRlZChjb25zdCBjaGFyKiB0ZXN0UGF0aE9yVVJMKQogCiBzdGF0aWMgdm9pZCBzaXpl
V2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIHsKLSAgICBbdWlEZWxlZ2F0ZSByZXNldFdpbmRvd09y
aWdpbl07CisgICAgW3VpRGVsZWdhdGUoKSByZXNldFdpbmRvd09yaWdpbl07CiAKICAgICAvLyBX
M0MgU1ZHIHRlc3RzIGV4cGVjdCB0byBiZSA0ODB4MzYwCiAgICAgYm9vbCBpc1NWR1czQ1Rlc3Qg
PSAoZ1Rlc3RSdW5uZXItPnRlc3RVUkwoKS5maW5kKCJzdmcvVzNDLVNWRy0xLjEiKSAhPSBzdGQ6
OnN0cmluZzo6bnBvcyk7CkBAIC0xNzY1LDggKzE4MDEsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBS
ZXNldAogICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0
ZS5nZXQoKV07CiAgICAgW3BvbGljeURlbGVnYXRlIHNldFBlcm1pc3NpdmU6Tk9dOwogICAgIFtw
b2xpY3lEZWxlZ2F0ZSBzZXRDb250cm9sbGVyVG9Ob3RpZnlEb25lOjBdOwotICAgIFt1aURlbGVn
YXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOm9wdGlvbnNdOwotICAgIFtm
cmFtZUxvYWREZWxlZ2F0ZSByZXNldFRvQ29uc2lzdGVudFN0YXRlXTsKKyAgICBbdWlEZWxlZ2F0
ZSgpIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOm9wdGlvbnNdOworICAgIFtm
cmFtZUxvYWREZWxlZ2F0ZSgpIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVdOwogICAgIFt3ZWJWaWV3
IF9jbGVhck1haW5GcmFtZU5hbWVdOwogICAgIFtbd2ViVmlldyB1bmRvTWFuYWdlcl0gcmVtb3Zl
QWxsQWN0aW9uc107CiAgICAgW1dlYlZpZXcgX3JlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3Vw
Olt3ZWJWaWV3IGdyb3VwTmFtZV1dOwpAQCAtMTk1MSw3ICsxOTg3LDcgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICBnVGVzdFJ1bm5l
ci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKIAogICAgIGlmIChzaG91bGRMb2dI
aXN0b3J5RGVsZWdhdGVzKHBhdGhPclVSTC5jX3N0cigpKSkKLSAgICAgICAgW1ttYWluRnJhbWUg
d2ViVmlld10gc2V0SGlzdG9yeURlbGVnYXRlOmhpc3RvcnlEZWxlZ2F0ZS5nZXQoKV07CisgICAg
ICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdh
dGUoKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRI
aXN0b3J5RGVsZWdhdGU6bmlsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCAxZjk3ZDI5NDIyMDJlODBjZGYzMDYwMGY1
NjViZTRiMGUxMzJlZjA4Li5hZDE0NTU3ZDY3NTZhMzY0ZjY0YjcyMDNjZDZmZDgwYzEzN2Y5NTk4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNr
TG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNr
TG9vay5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tE
b3dubG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CkBA
IC01MSw3ICs1MiwxMiBAQCBzdGF0aWMgYm9vbCBpc0RvbmU7CiBzdGF0aWMgYm9vbCBkb3dubG9h
ZElzRG9uZTsKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGFnZXNEb2N1bWVudFByZXZpZXdN
SU1FVHlwZSA9IEAiYXBwbGljYXRpb24vcGRmIjsKLXN0YXRpYyBOU1VSTCAqIGNvbnN0IHBhZ2Vz
RG9jdW1lbnRVUkwgPSBbW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJwYWdl
cyIgd2l0aEV4dGVuc2lvbjpAInBhZ2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdIHJldGFpbl07CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHBhZ2VzRG9jdW1l
bnRVUkwoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiBw
YWdlc0RvY3VtZW50VVJMID0gW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJw
YWdlcyIgd2l0aEV4dGVuc2lvbjpAInBhZ2VzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworICAgIHJldHVybiBwYWdlc0RvY3VtZW50VVJMOworfQogCiBAaW50ZXJm
YWNlIFF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZSwgX1dLRG93bmxvYWREZWxlZ2F0ZT4KIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZB
SUxBQkxFOwpAQCAtMjgwLDggKzI4Niw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBy
dW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKFF1aWNrTG9va0RlbGVnYXRlICpkZWxlZ2F0CiAKIFRF
U1QoUXVpY2tMb29rLCBBbGxvd1Jlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRp
bmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1
bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQo
KSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAg
cnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpXSk7CiAgICAgRVhQRUNUX0ZB
TFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxl
Z2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRp
ZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTI5MCw4ICsyOTYsOCBAQCBURVNUKFF1aWNrTG9v
aywgQWxsb3dSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywg
QWxsb3dSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVV
Ukw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdN
SU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7
Ci0gICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZp
bGVVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3Vt
ZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QWxsb3ddKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgp
LCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKV0p
OwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmFpbE5hdmlnYXRpb25dKTsKICAgICBF
WFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9U
UlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zMTksOCArMzI1LDgg
QEAgQGVuZAogI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VCZWZvcmVM
b2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9v
a0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1l
bnRVUkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvd10pOwot
ICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1F1aWNrTG9va0FzeW5jRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQoKSByZXNwb25zZVBvbGljeTpXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7CisgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRp
bmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1
bWVudFVSTCgpLmdldCgpXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2
aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9u
XSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsK
QEAgLTMyOSw4ICszMzUsOCBAQCBURVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3BvbnNlQmVm
b3JlTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBBc3luY0FsbG93UmVzcG9uc2VB
ZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVp
Y2tMb29rQXN5bmNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNE
b2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSBy
ZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93XSk7Ci0gICAgcnVu
VGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tRdWlja0xvb2tBc3luY0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVS
TDpwYWdlc0RvY3VtZW50VVJMKCkuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQ
cmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvd10pOworICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpXSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwogICAgIEVYUEVD
VF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUo
W2RlbGVnYXRlIGRpZEZpbmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTM0MCw4ICszNDYsOCBAQCBU
RVNUKFF1aWNrTG9vaywgQXN5bmNBbGxvd1Jlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAog
VEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0g
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbF0pOwotICAgIHJ1blRlc3REZWNpZGVCZWZvcmVM
b2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2Vz
RG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMKCku
Z2V0KCkgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWxdKTsK
KyAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMKCkuZ2V0KCldKTsKICAgICBFWFBF
Q1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVs
ZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRl
IGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZp
bmlzaFF1aWNrTG9va0xvYWRdKTsKQEAgLTM1Miw4ICszNTgsOCBAQCBURVNUKFF1aWNrTG9vaywg
Q2FuY2VsUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9v
aywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRG
aWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2
aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5j
ZWxdKTsKLSAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMKCkuZ2V0KCkgcHJldmlld01JTUVUeXBlOnBhZ2Vz
RG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lDYW5jZWxdKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRl
LmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5n
ZXQoKV0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVD
VF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9UUlVF
KFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwpAQCAtMzY0LDggKzM3MCw4IEBAIFRFU1Qo
UXVpY2tMb29rLCBDYW5jZWxSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVp
Y2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7Ci0gICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRp
bmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1
bWVudFVSTF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwoKS5nZXQo
KSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7Cisg
ICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpXSk7CiAgICAgRVhQRUNU
X0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVn
YXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBk
aWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hRdWlja0xvb2tMb2FkXSk7CkBAIC0zNzksOCArMzg1LDggQEAgVEVTVChRdWlja0xvb2ssIERv
d25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9v
aywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3Rl
ZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFBy
ZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURv
d25sb2FkXSk7Ci0gICAgcnVuVGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwg
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhF
eHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCgpLmdldCgpIHByZXZpZXdNSU1FVHlwZTpw
YWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5RG93bmxvYWRdKTsKKyAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRl
bGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRV
UkwoKS5nZXQoKV0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVw
dGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAg
IEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVD
VF9UUlVFKFtkZWxlZ2F0ZSBkaWRGYWlsTmF2aWdhdGlvbl0pOwpAQCAtNDMwLDggKzQzNiw4IEBA
IFRFU1QoUXVpY2tMb29rLCBSZXF1ZXN0UGFzc3dvcmRBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBU
RVNUKFF1aWNrTG9vaywgUmVsb2FkQW5kU2FtZURvY3VtZW50TmF2aWdhdGlvbikKIHsKLSAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QWxsb3ddKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBydW5UZXN0RGVj
aWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCgpLmdldCgpIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QWxsb3ddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhk
ZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50
VVJMKCkuZ2V0KCldKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZhaWxOYXZpZ2F0
aW9uXSk7CiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsK
ICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoUXVpY2tMb29rTG9hZF0pOwpAQCAt
NDkxLDcgKzQ5Nyw3IEBAIFRFU1QoUXVpY2tMb29rLCBMZWdhY3lRdWlja0xvb2tDb250ZW50KQog
CiAgICAgV2ViRnJhbWUgKm1haW5GcmFtZSA9IFt3ZWJWaWV3IG1haW5GcmFtZV07CiAKLSAgICBb
bWFpbkZyYW1lIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNE
b2N1bWVudFVSTF1dOworICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMKCkuZ2V0KCldXTsKICAgICBVdGlsOjpydW4o
JmlzRG9uZSk7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogCkBAIC01MDAsNyArNTA2LDcgQEAgVEVT
VChRdWlja0xvb2ssIExlZ2FjeVF1aWNrTG9va0NvbnRlbnQpCiAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBleHBlY3RlZEZpbGVOYW1lOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gZXhwZWN0ZWRG
aWxlVHlwZTsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV4cGVjdGVkTUlNRVR5cGU7Ci0gICAg
cmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTCwgZXhwZWN0ZWRGaWxlU2l6ZSwgZXhwZWN0ZWRGaWxl
TmFtZSwgZXhwZWN0ZWRGaWxlVHlwZSwgZXhwZWN0ZWRNSU1FVHlwZSwgZXhwZWN0ZWRGaWxlRGF0
YSk7CisgICAgcmVhZEZpbGUocGFnZXNEb2N1bWVudFVSTCgpLmdldCgpLCBleHBlY3RlZEZpbGVT
aXplLCBleHBlY3RlZEZpbGVOYW1lLCBleHBlY3RlZEZpbGVUeXBlLCBleHBlY3RlZE1JTUVUeXBl
LCBleHBlY3RlZEZpbGVEYXRhKTsKIAogICAgIE5TRGljdGlvbmFyeSAqcXVpY2tMb29rQ29udGVu
dCA9IG1haW5GcmFtZS5kYXRhU291cmNlLl9xdWlja0xvb2tDb250ZW50OwogICAgIE5TU3RyaW5n
ICpmaWxlUGF0aCA9IHF1aWNrTG9va0NvbnRlbnRbV2ViUXVpY2tMb29rRmlsZU5hbWVLZXldOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDJlOWIxMzQz
OWUyODVmZDIyN2NmYzE5YzUxNzM2NTNjMTFiNjQ3ZTIuLjY3YTY2NzIyMjA1ZTJkNmZjYzlmZDll
MTlmMDQyZDg1NDc1OGZhODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0KQEAgLTY2OSw3ICs2NjksNyBAQCAtIChSZXRhaW5QdHI8TlNBcnJheT4pc2VsZWN0
aW9uUmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZQogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUg
PSBmYWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PiBzZWxlY3Rpb25SZWN0czsK
ICAgICBbc2VsZiBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6XigpIHsKLSAgICAgICAg
c2VsZWN0aW9uUmVjdHMgPSBhZG9wdE5TKFtbcmV0YWluZWRTZWxmIF91aVRleHRTZWxlY3Rpb25S
ZWN0c10gcmV0YWluXSk7CisgICAgICAgIHNlbGVjdGlvblJlY3RzID0gW3JldGFpbmVkU2VsZiBf
dWlUZXh0U2VsZWN0aW9uUmVjdHNdOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmlu
ZGV4IGZkZTJlYTllYWJjZWJhNjI0YzVmOGMzZmI4OTc3Y2QzZjcwMDU5MGQuLjMyZWRjMjE5OWNm
ZTdjYmVjMjg0ZDdlNjM5ZjExMTA4NWQxYWQ2YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0zMTYsMTIgKzMxNiwxMiBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKCkKIAogY29uc3QgY2hhciogVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKIHsKLSAgICBzdGF0aWMgTlNTdHJp
bmcgKnBsYXRmb3JtTGlicmFyeVBhdGggPSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU1N0cmluZz4+IHBsYXRmb3JtTGlicmFyeVBhdGg7CiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewotICAgICAgICBwbGF0Zm9ybUxpYnJhcnlQYXRoID0gW1tAIn4vTGlicmFyeS9BcHBsaWNhdGlv
biBTdXBwb3J0L1dlYktpdFRlc3RSdW5uZXIiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhd
IHJldGFpbl07CisgICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGguZ2V0KCkgPSBbQCJ+L0xpYnJh
cnkvQXBwbGljYXRpb24gU3VwcG9ydC9XZWJLaXRUZXN0UnVubmVyIiBzdHJpbmdCeUV4cGFuZGlu
Z1RpbGRlSW5QYXRoXTsKICAgICB9KTsKLSAgICByZXR1cm4gcGxhdGZvcm1MaWJyYXJ5UGF0aC5V
VEY4U3RyaW5nOworICAgIHJldHVybiBbcGxhdGZvcm1MaWJyYXJ5UGF0aC5nZXQoKSBVVEY4U3Ry
aW5nXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKGJvb2wpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDg1YTJj
NzRkMmQ4YjcwYWNlYjhlMWYxMjdhZmVlYThkNTJlMjc3YTkuLjkzMDQ0NzFjYjUxNjZhNTQ5MmRh
YzM0MWQ3MDIzMTAyYTNmZGRmNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYg
dGVzdCkKIAogc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiB7Ci0gICAgc3Rh
dGljIE5TU2V0ICpmb250RmFtaWx5U2V0ID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czoKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU2V0Pj4gZm9udEZhbWlseVNldCA9IFtO
U1NldCBzZXRXaXRoT2JqZWN0czoKICAgICAgICAgQCJBaGVtIiwKICAgICAgICAgQCJBbCBCYXlh
biIsCiAgICAgICAgIEAiQW1lcmljYW4gVHlwZXdyaXRlciIsCkBAIC0zNTUsMTggKzM1NSwxOCBA
QCBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKICAgICAgICAgQCJXaW5nZGlu
Z3MiLAogICAgICAgICBAIlphcGYgRGluZ2JhdHMiLAogICAgICAgICBAIlphcGZpbm8iLAotICAg
ICAgICBuaWxdIHJldGFpbl07CisgICAgICAgIG5pbF07CiAKLSAgICByZXR1cm4gZm9udEZhbWls
eVNldDsKKyAgICByZXR1cm4gZm9udEZhbWlseVNldC5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGlj
IE5TU2V0ICpzeXN0ZW1IaWRkZW5Gb250RmFtaWx5U2V0KCkKIHsKLSAgICBzdGF0aWMgTlNTZXQg
KmZvbnRGYW1pbHlTZXQgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOgorICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNTZXQ+PiBmb250RmFtaWx5U2V0ID0gW05TU2V0IHNldFdp
dGhPYmplY3RzOgogICAgICAgICBAIi5MdWNpZGFHcmFuZGVVSSIsCi0gICAgICAgIG5pbF0gcmV0
YWluXTsKKyAgICAgICAgbmlsXTsKIAotICAgIHJldHVybiBmb250RmFtaWx5U2V0OworICAgIHJl
dHVybiBmb250RmFtaWx5U2V0LmdldCgpLmdldCgpOwogfQogCiBzdGF0aWMgV0tSZXRhaW5QdHI8
V0tBcnJheVJlZj4gZ2VuZXJhdGVGb250QWxsb3dMaXN0KCkKQEAgLTQzMCwxMiArNDMwLDEyIEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoKQogCiBjb25zdCBjaGFyKiBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQogewotICAgIHN0YXRpYyBO
U1N0cmluZyAqcGxhdGZvcm1MaWJyYXJ5UGF0aCA9IG5pbDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gcGxhdGZvcm1MaWJyYXJ5UGF0aDsKICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9r
ZW4sIF57Ci0gICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGggPSBbW0Aifi9MaWJyYXJ5L0FwcGxp
Y2F0aW9uIFN1cHBvcnQvRHVtcFJlbmRlclRyZWUiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBh
dGhdIHJldGFpbl07CisgICAgICAgIHBsYXRmb3JtTGlicmFyeVBhdGguZ2V0KCkgPSBbQCJ+L0xp
YnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EdW1wUmVuZGVyVHJlZSIgc3RyaW5nQnlFeHBhbmRp
bmdUaWxkZUluUGF0aF07CiAgICAgfSk7Ci0gICAgcmV0dXJuIHBsYXRmb3JtTGlicmFyeVBhdGgu
VVRGOFN0cmluZzsKKyAgICByZXR1cm4gW3BsYXRmb3JtTGlicmFyeVBhdGguZ2V0KCkgVVRGOFN0
cmluZ107CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvbWFpbi5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL21haW4u
bW0KaW5kZXggNDkxNDMxM2IxODliYzg1ZTFiOTc4ZGMzNTY5YjdkYmVmNzU0NjUwMy4uNGMzY2Fk
ZjZhYWM5ZGM3ZDE5NjI5OGExNGJmYTQ1MjE1ZTU0MWE3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9tYWluLm1tCkBAIC01NCw4ICs1NCw4IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25z
aXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiBzdGF0aWMgdm9pZCBkaXNhYmxlQXBwTmFwSW5VSVBy
b2Nlc3MoKQogewogICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVz
ZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3Jp
dGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZp
dHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkKTsKLSAgICBzdGF0aWMgaWQgYXNzZXJ0aW9u
ID0gW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25z
Om9wdGlvbnMgcmVhc29uOkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90IGJlIHN1YmplY3Qg
dG8gcHJvY2VzcyBzdXBwcmVzc2lvbiJdIHJldGFpbl07Ci0gICAgQVNTRVJUX1VOVVNFRChhc3Nl
cnRpb24sIGFzc2VydGlvbik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxp
ZD4+IGFzc2VydGlvbiA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0
eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOkAiV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90
IGJlIHN1YmplY3QgdG8gcHJvY2VzcyBzdXBwcmVzc2lvbiJdOworICAgIEFTU0VSVF9VTlVTRUQo
YXNzZXJ0aW9uLCBhc3NlcnRpb24uZ2V0KCkpOwogfQogCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>