<?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>178024</bug_id>
          
          <creation_ts>2017-10-06 12:41:15 -0700</creation_ts>
          <short_desc>[WinCairo] add WebProcess files for wincairo webkit</short_desc>
          <delta_ts>2018-02-01 10:12:25 -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>WebKit2</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="Stephan Szabo">stephan.szabo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>Yousuke.Kimoto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357706</commentid>
    <comment_count>0</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-10-06 12:41:15 -0700</bug_when>
    <thetext>Add WebProcess files for WinCairo WebKit build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358783</commentid>
    <comment_count>1</comment_count>
      <attachid>323314</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-10-10 10:19:54 -0700</bug_when>
    <thetext>Created attachment 323314
Add initial versions of WebProcess files for wincairo webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358784</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 10:21:23 -0700</bug_when>
    <thetext>Attachment 323314 did not pass style-queue:

ERROR: Source/WebKit/WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.cpp:84:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:146:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:154:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:155:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:160:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:161:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:162:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:166:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:166:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:167:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:167:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:168:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:168:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:169:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:169:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:170:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:170:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:171:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:171:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:172:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:172:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:173:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:173:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:174:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:174:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:175:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:175:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:176:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:176:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:177:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:177:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:178:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:178:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:179:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:179:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:180:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:180:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:181:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:181:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:182:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:182:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:183:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:183:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:184:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:184:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:185:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:185:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:187:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:187:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:188:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:188:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:189:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:189:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:190:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:190:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:192:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:192:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:193:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:193:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:194:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:194:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:195:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:195:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:196:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:196:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:198:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:198:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:199:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:201:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:201:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:202:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:202:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:203:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:203:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:204:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:204:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:205:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:205:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:206:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:206:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:207:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:207:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:208:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:208:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:209:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:209:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:211:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:212:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:213:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:213:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:214:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:214:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:215:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:215:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:216:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:216:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:217:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:217:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:218:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:218:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:219:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:219:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:220:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:220:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:221:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:221:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:225:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:225:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:226:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:226:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:227:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:227:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:228:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:228:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:229:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:229:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:230:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:230:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:231:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:231:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:236:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:238:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:239:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:241:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:242:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:243:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:245:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:246:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:248:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:249:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:250:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:252:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:253:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:254:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:255:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:256:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:257:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:258:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage
/win/WebPageWin.cpp:260:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:261:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:262:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:263:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:265:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebPageWin.cpp:266:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebPage/win/WebInspectorUIWin.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/InjectedBundle/win/InjectedBundleWin.cpp:48:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.h:51:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 149 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358788</commentid>
    <comment_count>3</comment_count>
      <attachid>323316</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-10-10 10:31:50 -0700</bug_when>
    <thetext>Created attachment 323316
Add initial versions of WebProcess files for wincairo webkit, fixed style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359705</commentid>
    <comment_count>4</comment_count>
      <attachid>323316</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-12 13:34:43 -0700</bug_when>
    <thetext>Comment on attachment 323316
Add initial versions of WebProcess files for wincairo webkit, fixed style

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

&gt; Source/WebKit/WebProcess/InjectedBundle/win/InjectedBundleWin.cpp:40
&gt; +bool InjectedBundle::initialize(const WebProcessCreationParameters&amp;, API::Object* initializationUserData)

Do we need to use the InjectedBundle on Windows?  Couldn&apos;t we just leave this uninitialized?  We&apos;re trying to reduce/remove the need for this by going through our use cases that &quot;require&quot; it right now and designing API to do that from the UIProcess.

&gt; Source/WebKit/WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.cpp:49
&gt; +#if 0

Let&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359724</commentid>
    <comment_count>5</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-10-12 14:08:51 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/win/InjectedBundleWin.cpp:40
&gt; &gt; +bool InjectedBundle::initialize(const WebProcessCreationParameters&amp;, API::Object* initializationUserData)

&gt;Do we need to use the InjectedBundle on Windows?  Couldn&apos;t we just leave this &gt;uninitialized?  We&apos;re trying to reduce/remove the need for this by going &gt;through our use cases that &quot;require&quot; it right now and designing API to do &gt;that from the UIProcess.

I think that had been added for things in Tools like WebKitTestRunner, but if those aren&apos;t using it then I don&apos;t think we would need it.

Will remove the #if 0ed code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359754</commentid>
    <comment_count>6</comment_count>
      <attachid>323569</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-10-12 14:50:05 -0700</bug_when>
    <thetext>Created attachment 323569
Add initial versions of WebProcess files for wincairo webkit, removed if 0ed code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359755</commentid>
    <comment_count>7</comment_count>
      <attachid>323570</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2017-10-12 14:51:45 -0700</bug_when>
    <thetext>Created attachment 323570
Add initial versions of WebProcess files for wincairo webkit, dummy injected bundle initialization

Also version with the IB intialization stubbed to returning false. Looking to see what doesn&apos;t work if we just don&apos;t have implementations of those at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359780</commentid>
    <comment_count>8</comment_count>
      <attachid>323570</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-12 15:36:58 -0700</bug_when>
    <thetext>Comment on attachment 323570
Add initial versions of WebProcess files for wincairo webkit, dummy injected bundle initialization

Clearing flags on attachment: 323570

Committed r223262: &lt;https://trac.webkit.org/changeset/223262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359781</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-12 15:37:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359782</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-12 15:38:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/34965644&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323314</attachid>
            <date>2017-10-10 10:19:54 -0700</date>
            <delta_ts>2017-10-10 10:31:50 -0700</delta_ts>
            <desc>Add initial versions of WebProcess files for wincairo webkit</desc>
            <filename>178024-2.diff</filename>
            <type>text/plain</type>
            <size>37442</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmFhZjlhYzI0MDkuLjgzZGJiOTA2ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDE3LTEwLTA2ICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNv
bT4KKworICAgICAgICBbV2luQ2Fpcm9dIGFkZCBXZWJQcm9jZXNzIGZpbGVzIGZvciB3aW5jYWly
byB3ZWJraXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwv
V2ViQ29va2llTWFuYWdlckN1cmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1
bmRsZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1l
dGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1Z2luUHJv
eHlXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om5lZWRzQmFj
a2luZ1N0b3JlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OmlzU3BlYWtpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c3BlYWspOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9h
ZGVyQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6YmxvY2tlZEVycm9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjYW5TYXZlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxh
dGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
YWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtVXNlckFnZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50ZXJw
cmV0S2V5RXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKwogMjAxNy0xMC0wNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBUd2VhayBzdXBwb3J0
IGZvciBjbGFzc2lmeWluZyBmb3JtIGNvbnRyb2xzIChmb2xsb3d1cCB0byByMjIyNDg3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMzc3YTQ3ODY2MjMuLmMxYzkxMDA0YTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTIzLDcgKzIzLDMzIEBAIGxpc3QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAKICAgICBTdG9yYWdlUHJvY2Vzcy93aW4vU3RvcmFnZVByb2Nlc3NNYWluV2luLmNw
cAogCisgICAgV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3Bw
CisKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5j
cHAKKworICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
LmNwcAorCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9QbHVnaW5Qcm94eVdp
bi5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkNvbnRleHRNZW51
Q2xpZW50V2luLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4v
V2ViUG9wdXBNZW51V2luLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFj
ZS5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5jcHAK
KyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKyAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAK
KworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAorCiAgICAgV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCisgICAgV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKICkKIAogIyBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMzA2NzM1OTg3NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29v
a2llTWFuYWdlckN1cmwuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIkNoaWxkUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6
cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
Cit7Cit9CisKK0hUVFBDb29raWVBY2NlcHRQb2xpY3kgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZv
cm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCkKK3sKKyAgICByZXR1cm4gSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYyZWRhMzYxYWMzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRs
ZVdpbi5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKworI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlSW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0eXBlZGVmIHZv
aWQgKCpCdW5kbGVJbml0aWFsaXplRnVuY3Rpb24pKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpOwor
Citib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKK3sKKyAg
ICBITU9EVUxFIGxpYiA9IDo6TG9hZExpYnJhcnkobV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICBpZiAoIWxpYikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uIHByb2MgPSAoQnVuZGxlSW5pdGlhbGl6
ZUZ1bmN0aW9uKTo6R2V0UHJvY0FkZHJlc3MobGliLCAiV0tCdW5kbGVJbml0aWFsaXplIik7Cisg
ICAgaWYgKCFwcm9jKQorCXJldHVybiBmYWxzZTsKKworICAgICgqcHJvYykodG9BUEkodGhpcyks
IHRvQVBJKGluaXRpYWxpemF0aW9uVXNlckRhdGEpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1ldGVyKFdURjo6U3RyaW5nIGNvbnN0
JiwgSVBDOjpEYXRhUmVmZXJlbmNlIGNvbnN0JikKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0QnVuZGxlUGFyYW1ldGVycyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggZjA0NjY5YWQ1Yjcu
LjA3YTRlMjIwZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09i
amVjdFByb3RvdHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWRlbnRpZmllclJlcC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3dCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3dpbi9QbHVnaW5Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1Z2luUHJveHlXaW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYWE3ZjJhZTExZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9QbHVnaW5Qcm94
eVdpbi5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKKworI2lmIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2Jvb2wgUGx1Z2luUHJveHk6Om5lZWRzQmFja2luZ1N0b3JlKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViQ29u
dGV4dE1lbnVDbGllbnRXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhhMjQ3MDc0ODk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJDb250ZXh0TWVudUNs
aWVudFdpbi5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCisKKyNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmlzU3BlYWtp
bmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzcGVhayhjb25zdCBTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVh
a2luZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMzEzYTk4OTZmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKKworI2luY2x1ZGUgIk5l
dHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlICJX
ZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRp
bmdzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisKKyAgICBpZiAo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAg
ICByZXR1cm47CisjaWYgMAorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQsIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNz
aW9uSUQoKSkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0
d29ya1Nlc3Npb246OmNyZWF0ZShzZXNzaW9uSUQpKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQor
CitXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdl
YkZyYW1lKiBmcmFtZSkKKyAgICA6IEZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUtPmNvcmVG
cmFtZSgpKQoreworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK3sKKyAgICBpZiAoZnJhbWUoKSkgewor
ICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkpKQorICAgICAgICAg
ICAgcmV0dXJuICpzdG9yYWdlU2Vzc2lvbjsKKyAgICB9CisgICAgcmV0dXJuIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Cit9CisKK1dlYkZyYW1lTG9hZGVy
Q2xpZW50KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNsaWVudCgp
IGNvbnN0Cit7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKCktPmxvYWRlcigpLmNsaWVu
dCgpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QK
K3sKKwlyZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5hMmMwMTVlNzgwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg+CisjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7Citj
bGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDsKK3N0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVyczsKKworY2xhc3MgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZShXZWJGcmFtZSogZnJhbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1l
KSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9y
ZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisKKyAgICBXZWJGcmFtZUxv
YWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKKworCisJV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJG
cmFtZSopOworCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lODc2YzZlYTJlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVj
dCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2YwYzZiOTRjZGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4u
Y3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVj
dG9yVUkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJJbnNw
ZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgV2Vi
SW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQoreworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIFJlbW90ZVdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJM
KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jOWUwZjY2MzYzNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9X
ZWJQYWdlV2luLmNwcApAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkVkaXRvclN0YXRl
LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgor
I2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckFnZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQor
Cit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKK3sKK30KKwordm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5j
bHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0
Cit7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQoreworICAgIGlmIChrZXlib2FyZEV2ZW50LnR5
cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93biAmJiBrZXlib2FyZEV2ZW50LnR5cGUoKSAhPSBXZWJF
dmVudDo6UmF3S2V5RG93bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChr
ZXlib2FyZEV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CisgICAgY2FzZSBWS19TUEFD
RToKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwga2V5Ym9hcmRFdmVudC5zaGlmdEtleSgp
ID8gU2Nyb2xsVXAgOiBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFZLX0xFRlQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExl
ZnQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfUklHSFQ6Cisg
ICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX1VQOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBW
S19ET1dOOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxC
eUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX0hPTUU6CisgICAgICAgIHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWS19FTkQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX1BS
SU9SOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19ORVhUOgorICAgICAgICBzY3JvbGwobV9w
YWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
VVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
U3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9v
bCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworU3Ry
aW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFVSTCYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBV
UkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1N0cmlu
ZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAg
ICBpZiAodXJsLmlzTnVsbCgpIHx8ICFtX3BhZ2UtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisJcmV0dXJuIFN0cmluZygp
OworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hp
ZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworCXVuc2lnbmVkIHZpcnR1
YWxLZXk7CisJdW5zaWduZWQgbW9kaWZpZXJzOworCWNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitz
dHJ1Y3QgS2V5UHJlc3NFbnRyeSB7CisJdW5zaWduZWQgY2hhckNvZGU7CisJdW5zaWduZWQgbW9k
aWZpZXJzOworCWNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVu
dHJ5IGtleURvd25FbnRyaWVzW10gPSB7CisJeyBWS19MRUZULCAgIDAsICAgICAgICAgICAgICAg
ICAgIk1vdmVMZWZ0IiB9LAorCXsgVktfTEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
TGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKwl7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAg
ICAgICAiTW92ZVdvcmRMZWZ0IiB9LAorCXsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXks
ICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisJeyBWS19SSUdIVCwgIDAsICAg
ICAgICAgICAgICAgICAgIk1vdmVSaWdodCIgfSwKKwl7IFZLX1JJR0hULCAgU2hpZnRLZXksICAg
ICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorCXsgVktfUklHSFQsICBD
dHJsS2V5LCAgICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiB9LAorCXsgVktfUklHSFQsICBDdHJs
S2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorCXsg
VktfVVAsICAgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVXAiIH0sCisJeyBWS19VUCwgICAg
IFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKwl7IFZL
X1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlv
biIgfSwKKwl7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iIH0sCisJ
eyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uIiB9LAorCXsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZURvd25B
bmRNb2RpZnlTZWxlY3Rpb24iIH0sCisJeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAg
Ik1vdmVQYWdlVXAiIH0sCisJeyBWS19ORVhULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlRG93biIgfSwKKwl7IFZLX0hPTUUsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZMaW5lIiB9LAorCXsgVktfSE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
VG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisJeyBWS19IT01FLCAgIEN0
cmxLZXksICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIH0sCisJeyBWS19I
T01FLCAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRN
b2RpZnlTZWxlY3Rpb24iIH0sCisKKwl7IFZLX0VORCwgICAgMCwgICAgICAgICAgICAgICAgICAi
TW92ZVRvRW5kT2ZMaW5lIiB9LAorCXsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJN
b3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisJeyBWS19FTkQsICAgIEN0cmxL
ZXksICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiIH0sCisJeyBWS19FTkQsICAgIEN0
cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCisKKwl7IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQi
IH0sCisJeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiB9
LAorCXsgVktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9LAor
CXsgVktfQkFDSywgICBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3JkQmFja3dhcmQiIH0s
CisJeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiB9
LAorCisJeyAnQicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUJvbGQiIH0sCisJ
eyAnSScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUl0YWxpYyIgfSwKKworCXsg
VktfRVNDQVBFLCAwLCAgICAgICAgICAgICAgICAgICJDYW5jZWwiIH0sCisJeyBWS19PRU1fUEVS
SU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIgfSwKKwl7IFZLX1RBQiwgICAgMCwgICAgICAg
ICAgICAgICAgICAiSW5zZXJ0VGFiIiB9LAorCXsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAg
ICAgICJJbnNlcnRCYWNrdGFiIiB9LAorCXsgVktfUkVUVVJOLCAwLCAgICAgICAgICAgICAgICAg
ICJJbnNlcnROZXdsaW5lIiB9LAorCXsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJ
bnNlcnROZXdsaW5lIiB9LAorCXsgVktfUkVUVVJOLCBBbHRLZXksICAgICAgICAgICAgICJJbnNl
cnROZXdsaW5lIiB9LAorCXsgVktfUkVUVVJOLCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRO
ZXdsaW5lIiB9LAorCXsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXds
aW5lIiB9LAorCisJLy8gSXQncyBub3QgcXVpdGUgY2xlYXIgd2hldGhlciBjbGlwYm9hcmQgc2hv
cnRjdXRzIGFuZCBVbmRvL1JlZG8gc2hvdWxkIGJlIGhhbmRsZWQKKwkvLyBpbiB0aGUgYXBwbGlj
YXRpb24gb3IgaW4gV2ViS2l0LiBXZSBjaG9zZSBXZWJLaXQuCisJeyAnQycsICAgICAgIEN0cmxL
ZXksICAgICAgICAgICAgIkNvcHkiIH0sCisJeyAnVicsICAgICAgIEN0cmxLZXksICAgICAgICAg
ICAgIlBhc3RlIiB9LAorCXsgJ1gnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJDdXQiIH0s
CisJeyAnQScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwKKwl7IFZL
X0lOU0VSVCwgQ3RybEtleSwgICAgICAgICAgICAiQ29weSIgfSwKKwl7IFZLX0RFTEVURSwgU2hp
ZnRLZXksICAgICAgICAgICAiQ3V0IiB9LAorCXsgVktfSU5TRVJULCBTaGlmdEtleSwgICAgICAg
ICAgICJQYXN0ZSIgfSwKKwl7ICdaJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVW5kbyIg
fSwKKwl7ICdaJywgICAgICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiUmVkbyIgfSwKK307CisKK3N0
YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0geworCXsgJ1x0Jywg
ICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiIH0sCisJeyAnXHQnLCAgIFNoaWZ0S2V5
LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiIH0sCisJeyAnXHInLCAgIDAsICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisJeyAnXHInLCAgIEN0cmxLZXksICAgICAgICAgICAg
Ikluc2VydE5ld2xpbmUiIH0sCisJeyAnXHInLCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2Vy
dE5ld2xpbmUiIH0sCisJeyAnXHInLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydE5ld2xp
bmUiIH0sCisJeyAnXHInLCAgIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiIH0s
Cit9OworCitjb25zdCBjaGFyKiBXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBXZWJD
b3JlOjpLZXlib2FyZEV2ZW50KiBldnQpCit7CisJQVNTRVJUKGV2dC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXBy
ZXNzRXZlbnQpOworCisJc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25D
b21tYW5kc01hcCA9IDA7CisJc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVBy
ZXNzQ29tbWFuZHNNYXAgPSAwOworCisJaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsKKwkJa2V5
RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CisJCWtleVBy
ZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKworCQlmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5RG93bkVudHJpZXMpOyArK2kp
CisJCQlrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMg
PDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5u
YW1lKTsKKworCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5UHJl
c3NFbnRyaWVzKTsgKytpKQorCQkJa2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50
cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtl
eVByZXNzRW50cmllc1tpXS5uYW1lKTsKKwl9CisKKwl1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwor
CWlmIChldnQtPnNoaWZ0S2V5KCkpCisJCW1vZGlmaWVycyB8PSBTaGlmdEtleTsKKwlpZiAoZXZ0
LT5hbHRLZXkoKSkKKwkJbW9kaWZpZXJzIHw9IEFsdEtleTsKKwlpZiAoZXZ0LT5jdHJsS2V5KCkp
CisJCW1vZGlmaWVycyB8PSBDdHJsS2V5OworCisJaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXlkb3duRXZlbnQpIHsKKwkJaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2
dC0+a2V5Q29kZSgpOworCQlyZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQo
bWFwS2V5KSA6IDA7CisJfQorCisJaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+
Y2hhckNvZGUoKTsKKwlyZXR1cm4gbWFwS2V5ID8ga2V5UHJlc3NDb21tYW5kc01hcC0+Z2V0KG1h
cEtleSkgOiAwOworfQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYjdjMTM2NjgxYmEuLjM5ZTc4NjVjZGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Db21tb25WTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgpAQCAtMTE3OSw2ICsxMTgwLDggQEAgdm9p
ZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpOwogI2VsaWYgT1Mo
REFSV0lOKQogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyNlbGlmIE9TKFdJTkRP
V1MpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5oYW5kbGUoKSk7CiAjZWxzZQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZWNiNjJjYjBhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX0VY
UE9SVCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgewordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJikKK3sKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybVRlcm1pbmF0ZSgpCit7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNo
ZU1vZGVsKENhY2hlTW9kZWwpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323316</attachid>
            <date>2017-10-10 10:31:50 -0700</date>
            <delta_ts>2017-10-12 14:50:05 -0700</delta_ts>
            <desc>Add initial versions of WebProcess files for wincairo webkit, fixed style</desc>
            <filename>178024-3.diff</filename>
            <type>text/plain</type>
            <size>37763</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmFhZjlhYzI0MDkuLmFmODU5MTUxY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDE3LTEwLTEwICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNv
bT4KKworICAgICAgICBbV2luQ2Fpcm9dIGFkZCBXZWJQcm9jZXNzIGZpbGVzIGZvciB3aW5jYWly
byB3ZWJraXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwv
V2ViQ29va2llTWFuYWdlckN1cmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1
bmRsZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1l
dGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1Z2luUHJv
eHlXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om5lZWRzQmFj
a2luZ1N0b3JlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OmlzU3BlYWtpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c3BlYWspOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9h
ZGVyQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6YmxvY2tlZEVycm9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjYW5TYXZlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxh
dGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
YWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtVXNlckFnZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50ZXJw
cmV0S2V5RXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKwogMjAxNy0xMC0wNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBUd2VhayBzdXBwb3J0
IGZvciBjbGFzc2lmeWluZyBmb3JtIGNvbnRyb2xzIChmb2xsb3d1cCB0byByMjIyNDg3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMzc3YTQ3ODY2MjMuLmMxYzkxMDA0YTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTIzLDcgKzIzLDMzIEBAIGxpc3QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAKICAgICBTdG9yYWdlUHJvY2Vzcy93aW4vU3RvcmFnZVByb2Nlc3NNYWluV2luLmNw
cAogCisgICAgV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3Bw
CisKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5j
cHAKKworICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
LmNwcAorCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9QbHVnaW5Qcm94eVdp
bi5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkNvbnRleHRNZW51
Q2xpZW50V2luLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4v
V2ViUG9wdXBNZW51V2luLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFj
ZS5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5jcHAK
KyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKyAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAK
KworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViSW5zcGVjdG9yVUlXaW4uY3BwCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAorCiAgICAgV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCisgICAgV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKICkKIAogIyBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29va2llTWFuYWdlckN1cmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMzA2NzM1OTg3NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwvV2ViQ29v
a2llTWFuYWdlckN1cmwuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIkNoaWxkUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6
cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
Cit7Cit9CisKK0hUVFBDb29raWVBY2NlcHRQb2xpY3kgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZv
cm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCkKK3sKKyAgICByZXR1cm4gSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE2ZjM3ZjEyNDkwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRs
ZVdpbi5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKworI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlSW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0eXBlZGVmIHZv
aWQgKCpCdW5kbGVJbml0aWFsaXplRnVuY3Rpb24pKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpOwor
Citib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKK3sKKyAg
ICBITU9EVUxFIGxpYiA9IDo6TG9hZExpYnJhcnkobV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICBpZiAoIWxpYikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uIHByb2MgPSAoQnVuZGxlSW5pdGlhbGl6
ZUZ1bmN0aW9uKTo6R2V0UHJvY0FkZHJlc3MobGliLCAiV0tCdW5kbGVJbml0aWFsaXplIik7Cisg
ICAgaWYgKCFwcm9jKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAoKnByb2MpKHRvQVBJ
KHRoaXMpLCB0b0FQSShpbml0aWFsaXphdGlvblVzZXJEYXRhKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcihXVEY6OlN0cmlu
ZyBjb25zdCYsIElQQzo6RGF0YVJlZmVyZW5jZSBjb25zdCYpCit7Cit9CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IGYwNDY2
OWFkNWI3Li4wN2E0ZTIyMGQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9PYmplY3RQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vblZNLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lkZW50aWZp
ZXJSZXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93QmFzZS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1Z2luUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL1BsdWdpblByb3h5V2luLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2FhN2YyYWUxMWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1
Z2luUHJveHlXaW4uY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2lu
L1dlYkNvbnRleHRNZW51Q2xpZW50V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC93aW4vV2ViQ29udGV4dE1lbnVDbGllbnRXaW4uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YTI0NzA3NDg5NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViQ29udGV4
dE1lbnVDbGllbnRXaW4uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgorCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpp
c1NwZWFraW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c3BlYWsoY29uc3QgU3RyaW5nJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
dG9wU3BlYWtpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmUxOWRkMTZmMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCisKKyNpbmNs
dWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TZXR0aW5ncy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisg
ICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgcmV0dXJuOworI2lmIDAKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBTdHJpbmc6Om51bWJlcihzZXNzaW9u
SUQuc2Vzc2lvbklEKCkpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9u
SUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoc2Vzc2lvbklEKSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lv
bihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQKK30KKworV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dChXZWJGcmFtZSogZnJhbWUpCisgICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1l
LT5jb3JlRnJhbWUoKSkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgaWYgKGZyYW1l
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpKSkKKyAg
ICAgICAgICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247CisgICAgfQorICAgIHJldHVybiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworfQorCitXZWJGcmFt
ZUxvYWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJD
bGllbnQoKSBjb25zdAoreworICAgIGlmICghZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZSgpLT5sb2FkZXIo
KS5jbGllbnQoKSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDBhYTRiOGNjYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oPgorI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkZyYW1lOworY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CitzdHJ1Y3QgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM7CisKK2NsYXNzIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQgOiBwdWJs
aWMgV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGUoV2ViRnJhbWUqIGZyYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dChmcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworCisgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CisKKwor
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQoV2ViRnJhbWUqKTsKKworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51
V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2Vi
UG9wdXBNZW51V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZTg3NmM2ZWEyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBN
ZW51LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRh
KGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1M2IwY2VlOTdjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYklu
c3BlY3RvclVJV2luLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaW5jbHVkZSAi
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQoreworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFJlbW90ZVdlYkluc3BlY3RvclVJOjpsb2Nh
bGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL1dlYlBhZ2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li45YjU1Yjk4ZjcyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1
ZGUgIkVkaXRvclN0YXRlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJXZWJFdmVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudE5hbWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQoreworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKK3sKK30KKwor
dm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3Rh
dGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExh
eW91dERhdGEpIGNvbnN0Cit7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNl
c0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlF
dmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQoreworICAgIGlmIChr
ZXlib2FyZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93biAmJiBrZXlib2FyZEV2ZW50
LnR5cGUoKSAhPSBXZWJFdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc3dpdGNoIChrZXlib2FyZEV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Cisg
ICAgY2FzZSBWS19TUEFDRToKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwga2V5Ym9hcmRF
dmVudC5zaGlmdEtleSgpID8gU2Nyb2xsVXAgOiBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX0xFRlQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVktfUklHSFQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBT
Y3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX1VQOgorICAgICAgICBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWS19ET1dOOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3Jv
bGxEb3duLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX0hPTUU6
CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19FTkQ6CisgICAgICAgIHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFZLX1BSSU9SOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxV
cCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19ORVhUOgorICAg
ICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERh
dGFGb3JVUkwoY29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JV
UkwoY29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJM
KGNvbnN0IFVSTCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0
YUZvclVSTChjb25zdCBVUkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK1N0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmIHVy
bCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpIHx8ICFtX3BhZ2UtPnNldHRpbmdzKCku
bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9
IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkg
eworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAg
IGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7CisgICAgdW5z
aWduZWQgY2hhckNvZGU7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIq
IG5hbWU7Cit9OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10g
PSB7CisgICAgeyBWS19MRUZULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAor
ICAgIHsgVktfTEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNl
bGVjdGlvbiIgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdv
cmRMZWZ0IiB9LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29y
ZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19SSUdIVCwgIDAsICAgICAgICAg
ICAgICAgICAgIk1vdmVSaWdodCIgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXksICAgICAg
ICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktfUklHSFQsICBD
dHJsS2V5LCAgICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiB9LAorICAgIHsgVktfUklHSFQsICBD
dHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAor
ICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVXAiIH0sCisgICAgeyBW
S19VUCwgICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1v
ZGlmeVNlbGVjdGlvbiIgfSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAi
TW92ZURvd24iIH0sCisgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAg
ICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19QUklP
UiwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiIH0sCisgICAgeyBWS19ORVhULCAg
IDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIgfSwKKyAgICB7IFZLX0hPTUUsICAg
MCwgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAorICAgIHsgVktf
SE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXksICAgICAgICAgICAgIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXkgfCBT
aGlmdEtleSwgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0s
CisKKyAgICB7IFZLX0VORCwgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5l
IiB9LAorICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXksICAgICAg
ICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXkg
fCBTaGlmdEtleSwgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisK
KyAgICB7IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0s
CisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiB9
LAorICAgIHsgVktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9
LAorICAgIHsgVktfQkFDSywgICBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3JkQmFja3dh
cmQiIH0sCisgICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRG
b3J3YXJkIiB9LAorCisgICAgeyAnQicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2ds
ZUJvbGQiIH0sCisgICAgeyAnSScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUl0
YWxpYyIgfSwKKworICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAgICAgICJDYW5jZWwi
IH0sCisgICAgeyBWS19PRU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIgfSwKKyAg
ICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiB9LAorICAgIHsg
VktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiB9LAorICAgIHsg
VktfUkVUVVJOLCAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsg
VktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsg
VktfUkVUVVJOLCBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsg
VktfUkVUVVJOLCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsg
VktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiB9LAorCisgICAg
Ly8gSXQncyBub3QgcXVpdGUgY2xlYXIgd2hldGhlciBjbGlwYm9hcmQgc2hvcnRjdXRzIGFuZCBV
bmRvL1JlZG8gc2hvdWxkIGJlIGhhbmRsZWQKKyAgICAvLyBpbiB0aGUgYXBwbGljYXRpb24gb3Ig
aW4gV2ViS2l0LiBXZSBjaG9zZSBXZWJLaXQuCisgICAgeyAnQycsICAgICAgIEN0cmxLZXksICAg
ICAgICAgICAgIkNvcHkiIH0sCisgICAgeyAnVicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAg
IlBhc3RlIiB9LAorICAgIHsgJ1gnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJDdXQiIH0s
CisgICAgeyAnQScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwKKyAg
ICB7IFZLX0lOU0VSVCwgQ3RybEtleSwgICAgICAgICAgICAiQ29weSIgfSwKKyAgICB7IFZLX0RF
TEVURSwgU2hpZnRLZXksICAgICAgICAgICAiQ3V0IiB9LAorICAgIHsgVktfSU5TRVJULCBTaGlm
dEtleSwgICAgICAgICAgICJQYXN0ZSIgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSwgICAg
ICAgICAgICAiVW5kbyIgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAi
UmVkbyIgfSwKK307CisKK3N0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmll
c1tdID0geworICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiIH0s
CisgICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiIH0sCisg
ICAgeyAnXHInLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAg
eyAnXHInLCAgIEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAn
XHInLCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAnXHIn
LCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAnXHInLCAg
IEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiIH0sCit9OworCitjb25zdCBjaGFy
KiBXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50
KiBldnQpCit7CisgICAgQVNTRVJUKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpOworCisg
ICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5kc01hcCA9
IDA7CisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVByZXNzQ29tbWFu
ZHNNYXAgPSAwOworCisgICAgaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsKKyAgICAgICAga2V5
RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CisgICAgICAg
IGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5RG93bkVu
dHJpZXMpOyArK2kpCisgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3du
RW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5
LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5UHJlc3NFbnRyaWVzKTsgKytpKQorICAgICAgICAgICAg
a2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwg
MTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1l
KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldnQtPnNo
aWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZ0LT5h
bHRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZ0LT5jdHJs
S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaWYgKGV2dC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9
IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOworICAgICAgICByZXR1cm4gbWFwS2V5
ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CisgICAgfQorCisgICAgaW50
IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+Y2hhckNvZGUoKTsKKyAgICByZXR1cm4g
bWFwS2V5ID8ga2V5UHJlc3NDb21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworfQorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggYjdjMTM2NjgxYmEuLjM5ZTc4NjVjZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25W
TS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5oPgpAQCAtMTE3OSw2ICsxMTgwLDggQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpOwogI2VsaWYgT1MoREFSV0lOKQogICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXIucG9ydCgpKTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRl
bnRpZmllci5oYW5kbGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWNiNjJjYjBhNzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4u
Y3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewordm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJikKK3sKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCit7Cit9
CisKK3ZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="343118"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323569</attachid>
            <date>2017-10-12 14:50:05 -0700</date>
            <delta_ts>2017-10-12 14:50:05 -0700</delta_ts>
            <desc>Add initial versions of WebProcess files for wincairo webkit, removed if 0ed code</desc>
            <filename>178024-4.diff</filename>
            <type>text/plain</type>
            <size>37526</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNWMzNDdjMzFmN2UuLjUzYmE4MDQ4YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDE3LTEwLTEyICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNv
bT4KKworICAgICAgICBbV2luQ2Fpcm9dIGFkZCBXZWJQcm9jZXNzIGZpbGVzIGZvciB3aW5jYWly
byB3ZWJraXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwv
V2ViQ29va2llTWFuYWdlckN1cmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1
bmRsZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1l
dGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1Z2luUHJv
eHlXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om5lZWRzQmFj
a2luZ1N0b3JlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OmlzU3BlYWtpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c3BlYWspOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9h
ZGVyQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6YmxvY2tlZEVycm9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjYW5TYXZlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxh
dGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
YWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtVXNlckFnZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50ZXJw
cmV0S2V5RXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKwogMjAxNy0xMC0xMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtHZW9sb2NhdGlvbl0gRXhwb3NlIENvb3Jk
aW5hdGVzLmZsb29yTGV2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDM3N2E0Nzg2NjIz
Li5jMWM5MTAwNGExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yMyw3ICsyMywzMyBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgU3RvcmFnZVByb2Nlc3Mvd2luL1N0
b3JhZ2VQcm9jZXNzTWFpbldpbi5jcHAKIAorICAgIFdlYlByb2Nlc3MvQ29va2llcy9jdXJsL1dl
YkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93
aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS93aW4vUGx1Z2luUHJveHlXaW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3dpbi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorICAgIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKKworICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0FyZWFBbGxvY2F0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVXBkYXRlQXRsYXMuY3BwCisKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYklu
c3BlY3RvclVJV2luLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5j
cHAKKwogICAgIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAorICAgIFdlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCiApCiAKICMgRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5h
Z2VyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNv
b2tpZU1hbmFnZXJDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzMwNjczNTk4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb29r
aWVNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShI
VFRQQ29va2llQWNjZXB0UG9saWN5KQoreworfQorCitIVFRQQ29va2llQWNjZXB0UG9saWN5IFdl
YkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpCit7Cisg
ICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVX
aW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNmYzN2YxMjQ5
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgi
CisKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUluaXRp
YWxpemUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordHlwZWRlZiB2b2lkICgqQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uKShXS0J1
bmRsZVJlZiwgV0tUeXBlUmVmKTsKKworYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpCit7CisgICAgSE1PRFVMRSBsaWIgPSA6OkxvYWRMaWJyYXJ5KG1fcGF0
aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgaWYgKCFsaWIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEJ1bmRsZUluaXRpYWxpemVGdW5jdGlvbiBw
cm9jID0gKEJ1bmRsZUluaXRpYWxpemVGdW5jdGlvbik6OkdldFByb2NBZGRyZXNzKGxpYiwgIldL
QnVuZGxlSW5pdGlhbGl6ZSIpOworICAgIGlmICghcHJvYykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgKCpwcm9jKSh0b0FQSSh0aGlzKSwgdG9BUEkoaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSkpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5k
bGVQYXJhbWV0ZXIoV1RGOjpTdHJpbmcgY29uc3QmLCBJUEM6OkRhdGFSZWZlcmVuY2UgY29uc3Qm
KQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXJzKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcAppbmRleCBmMDQ2NjlhZDViNy4uMDdhNGUyMjBkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Db21tb25WTS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JZGVudGlmaWVyUmVwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdp
bmRvd0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL1BsdWdpblByb3h5V2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9QbHVn
aW5Qcm94eVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNh
YTdmMmFlMTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvd2luL1BsdWdpblByb3h5V2luLmNwcApAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm94
eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBQbHVnaW5Qcm94
eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkNvbnRleHRNZW51Q2xp
ZW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGEyNDcw
NzQ4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd2luL1dlYkNvbnRleHRNZW51Q2xpZW50V2luLmNwcApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4
dE1lbnVDbGllbnQuaCIKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcElu
RGljdGlvbmFyeShGcmFtZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBX
ZWJDb250ZXh0TWVudUNsaWVudDo6aXNTcGVha2luZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNw
ZWFrKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBX
ZWJDb250ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYTQ5OWNhODcwZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93
aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJT
ZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKHNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKTsKKworICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHJldHVybjsKK30KKwordm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKwor
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJG
cmFtZSogZnJhbWUpCisgICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lLT5jb3JlRnJh
bWUoKSkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgaWYgKGZyYW1lKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpKSkKKyAgICAgICAgICAg
IHJldHVybiAqc3RvcmFnZVNlc3Npb247CisgICAgfQorICAgIHJldHVybiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworfQorCitXZWJGcmFtZUxvYWRlckNs
aWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBj
b25zdAoreworICAgIGlmICghZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZDBhYTRiOGNjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oPgorI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOwor
Y2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CitzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM7CisKK2NsYXNzIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29y
ZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGUoV2ViRnJhbWUqIGZyYW1lKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFt
ZSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworCisgICAgV2ViRnJhbWVM
b2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CisKKworICAgIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQo
V2ViRnJhbWUqKTsKKworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51
V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTg3NmM2ZWEy
ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IElu
dFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdpbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1M2IwY2VlOTdjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJ
V2luLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaW5jbHVkZSAiUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBX
ZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJp
bmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQoreworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIFJlbW90ZVdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJp
bmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dl
YlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBh
Z2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YjU1Yjk4
ZjcyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkVkaXRv
clN0YXRlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJFdmVu
dC5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJk
Q29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5h
bWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQor
eworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKK3sKK30KKwordm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3Vs
dCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEp
IGNvbnN0Cit7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5n
ZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQoreworICAgIGlmIChrZXlib2FyZEV2
ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93biAmJiBrZXlib2FyZEV2ZW50LnR5cGUoKSAh
PSBXZWJFdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dp
dGNoIChrZXlib2FyZEV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CisgICAgY2FzZSBW
S19TUEFDRToKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwga2V5Ym9hcmRFdmVudC5zaGlm
dEtleSgpID8gU2Nyb2xsVXAgOiBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFZLX0xFRlQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfUklH
SFQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxp
bmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX1VQOgorICAgICAgICBzY3JvbGwobV9w
YWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBWS19ET1dOOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBT
Y3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX0hPTUU6CisgICAgICAg
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWS19FTkQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFZLX1BSSU9SOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xs
QnlQYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19ORVhUOgorICAgICAgICBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwo
Y29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3Qg
VVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFVS
TCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChj
b25zdCBVUkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K1N0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QK
K3sKKyAgICBpZiAodXJsLmlzTnVsbCgpIHx8ICFtX3BhZ2UtPnNldHRpbmdzKCkubmVlZHNTaXRl
U3BlY2lmaWNRdWlya3MoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5z
aWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVu
c2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNo
YXIqIG5hbWU7Cit9OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7CisgICAgdW5zaWduZWQgY2hh
ckNvZGU7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9
OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10gPSB7CisgICAg
eyBWS19MRUZULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAorICAgIHsgVktf
TEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiB9
LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRN
b2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19SSUdIVCwgIDAsICAgICAgICAgICAgICAgICAg
Ik1vdmVSaWdodCIgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXksICAgICAgICAgICAiTW92
ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5LCAg
ICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5IHwg
U2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktf
VVAsICAgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVXAiIH0sCisgICAgeyBWS19VUCwgICAg
IFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKyAgICB7
IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
IH0sCisgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJN
b3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19QUklPUiwgIDAsICAg
ICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiIH0sCisgICAgeyBWS19ORVhULCAgIDAsICAgICAg
ICAgICAgICAgICAgIk1vdmVQYWdlRG93biIgfSwKKyAgICB7IFZLX0hPTUUsICAgMCwgICAgICAg
ICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAorICAgIHsgVktfSE9NRSwgICBT
aGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rp
b24iIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0JlZ2lu
bmluZ09mRG9jdW1lbnQiIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXkgfCBTaGlmdEtleSwg
Ik1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisKKyAgICB7
IFZLX0VORCwgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiB9LAorICAg
IHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXksICAgICAgICAgICAgIk1v
dmVUb0VuZE9mRG9jdW1lbnQiIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXkgfCBTaGlmdEtl
eSwgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisKKyAgICB7IFZL
X0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0sCisgICAgeyBW
S19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiB9LAorICAgIHsg
VktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9LAorICAgIHsg
VktfQkFDSywgICBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3JkQmFja3dhcmQiIH0sCisg
ICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiB9
LAorCisgICAgeyAnQicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUJvbGQiIH0s
CisgICAgeyAnSScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUl0YWxpYyIgfSwK
KworICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAgICAgICJDYW5jZWwiIH0sCisgICAg
eyBWS19PRU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIgfSwKKyAgICB7IFZLX1RB
QiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiB9LAorICAgIHsgVktfVEFCLCAg
ICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiB9LAorICAgIHsgVktfUkVUVVJO
LCAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgVktfUkVUVVJO
LCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgVktfUkVUVVJO
LCBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgVktfUkVUVVJO
LCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgVktfUkVUVVJO
LCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiB9LAorCisgICAgLy8gSXQncyBu
b3QgcXVpdGUgY2xlYXIgd2hldGhlciBjbGlwYm9hcmQgc2hvcnRjdXRzIGFuZCBVbmRvL1JlZG8g
c2hvdWxkIGJlIGhhbmRsZWQKKyAgICAvLyBpbiB0aGUgYXBwbGljYXRpb24gb3IgaW4gV2ViS2l0
LiBXZSBjaG9zZSBXZWJLaXQuCisgICAgeyAnQycsICAgICAgIEN0cmxLZXksICAgICAgICAgICAg
IkNvcHkiIH0sCisgICAgeyAnVicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlBhc3RlIiB9
LAorICAgIHsgJ1gnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJDdXQiIH0sCisgICAgeyAn
QScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwKKyAgICB7IFZLX0lO
U0VSVCwgQ3RybEtleSwgICAgICAgICAgICAiQ29weSIgfSwKKyAgICB7IFZLX0RFTEVURSwgU2hp
ZnRLZXksICAgICAgICAgICAiQ3V0IiB9LAorICAgIHsgVktfSU5TRVJULCBTaGlmdEtleSwgICAg
ICAgICAgICJQYXN0ZSIgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAi
VW5kbyIgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiUmVkbyIgfSwK
K307CisKK3N0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0gewor
ICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiIH0sCisgICAgeyAn
XHQnLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiIH0sCisgICAgeyAnXHIn
LCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAnXHInLCAg
IEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAnXHInLCAgIEFs
dEtleSwgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAnXHInLCAgIFNoaWZ0
S2V5LCAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAnXHInLCAgIEFsdEtleSB8
IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiIH0sCit9OworCitjb25zdCBjaGFyKiBXZWJQYWdl
OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiBldnQpCit7
CisgICAgQVNTRVJUKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwg
ZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpOworCisgICAgc3RhdGlj
IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5kc01hcCA9IDA7CisgICAg
c3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVByZXNzQ29tbWFuZHNNYXAgPSAw
OworCisgICAgaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsKKyAgICAgICAga2V5RG93bkNvbW1h
bmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CisgICAgICAgIGtleVByZXNz
Q29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5RG93bkVudHJpZXMpOyAr
K2kpCisgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tp
XS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3du
RW50cmllc1tpXS5uYW1lKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9B
UlJBWV9MRU5HVEgoa2V5UHJlc3NFbnRyaWVzKTsgKytpKQorICAgICAgICAgICAga2V5UHJlc3ND
b21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlQ
cmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldnQtPnNoaWZ0S2V5KCkp
CisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZ0LT5hbHRLZXkoKSkK
KyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZ0LT5jdHJsS2V5KCkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaWYgKGV2dC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVy
cyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOworICAgICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93
bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CisgICAgfQorCisgICAgaW50IG1hcEtleSA9
IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+Y2hhckNvZGUoKTsKKyAgICByZXR1cm4gbWFwS2V5ID8g
a2V5UHJlc3NDb21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworfQorfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMmYyZmFj
ZGQyMjAuLmE0NjZmNGQ5MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25WTS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJh
c2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
PgpAQCAtMTE3Nyw2ICsxMTc4LDggQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VG
aWxlRGVzY3JpcHRvcigpOwogI2VsaWYgT1MoREFSV0lOKQogICAgIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIucG9ydCgpKTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5o
YW5kbGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWNiNjJjYjBhNzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJikKK3sK
K30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCit7Cit9CisKK3ZvaWQg
V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpCit7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323570</attachid>
            <date>2017-10-12 14:51:45 -0700</date>
            <delta_ts>2017-10-12 15:36:58 -0700</delta_ts>
            <desc>Add initial versions of WebProcess files for wincairo webkit, dummy injected bundle initialization</desc>
            <filename>178024-4-noib.diff</filename>
            <type>text/plain</type>
            <size>37199</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNWMzNDdjMzFmN2UuLjUzYmE4MDQ4YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDE3LTEwLTEyICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bzb255LmNv
bT4KKworICAgICAgICBbV2luQ2Fpcm9dIGFkZCBXZWJQcm9jZXNzIGZpbGVzIGZvciB3aW5jYWly
byB3ZWJraXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL2N1cmwv
V2ViQ29va2llTWFuYWdlckN1cmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1
bmRsZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1l
dGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vUGx1Z2luUHJv
eHlXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om5lZWRzQmFj
a2luZ1N0b3JlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OmlzU3BlYWtpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c3BlYWspOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9h
ZGVyQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6YmxvY2tlZEVycm9yIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjYW5TYXZlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxh
dGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
YWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtVXNlckFnZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50ZXJw
cmV0S2V5RXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDogQWRkZWQu
CisgICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKwogMjAxNy0xMC0xMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtHZW9sb2NhdGlvbl0gRXhwb3NlIENvb3Jk
aW5hdGVzLmZsb29yTGV2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDM3N2E0Nzg2NjIz
Li5jMWM5MTAwNGExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yMyw3ICsyMywzMyBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgU3RvcmFnZVByb2Nlc3Mvd2luL1N0
b3JhZ2VQcm9jZXNzTWFpbldpbi5jcHAKIAorICAgIFdlYlByb2Nlc3MvQ29va2llcy9jdXJsL1dl
YkNvb2tpZU1hbmFnZXJDdXJsLmNwcAorCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93
aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS93aW4vUGx1Z2luUHJveHlXaW4uY3BwCisKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3dpbi9XZWJDb250ZXh0TWVudUNsaWVudFdpbi5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorICAgIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKKworICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5jcHAKKworICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0FyZWFBbGxvY2F0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVXBkYXRlQXRsYXMuY3BwCisKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYklu
c3BlY3RvclVJV2luLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5j
cHAKKwogICAgIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAorICAgIFdlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCiApCiAKICMgRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvY3VybC9XZWJDb29raWVNYW5h
Z2VyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNv
b2tpZU1hbmFnZXJDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzMwNjczNTk4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb29r
aWVNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShI
VFRQQ29va2llQWNjZXB0UG9saWN5KQoreworfQorCitIVFRQQ29va2llQWNjZXB0UG9saWN5IFdl
YkNvb2tpZU1hbmFnZXI6OnBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpCit7Cisg
ICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVX
aW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kMjVjYmZiNjE1
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgi
CisKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUluaXRp
YWxpemUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordHlwZWRlZiB2b2lkICgqQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uKShXS0J1
bmRsZVJlZiwgV0tUeXBlUmVmKTsKKworYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEluamVjdGVk
QnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIoV1RGOjpTdHJpbmcgY29uc3QmLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgY29uc3QmKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQ
YXJhbWV0ZXJzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCBmMDQ2NjlhZDViNy4uMDdhNGUyMjBkNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25WTS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9N
V2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JZGVudGlmaWVyUmVwLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0RPTVdpbmRvd0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2lu
L1BsdWdpblByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3dpbi9QbHVnaW5Qcm94eVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmNhYTdmMmFlMTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL1BsdWdpblByb3h5V2luLmNwcApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQbHVnaW5Qcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ym9vbCBQbHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJDb250ZXh0TWVudUNsaWVu
dFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dl
YkNvbnRleHRNZW51Q2xpZW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uOGEyNDcwNzQ4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkNvbnRleHRNZW51Q2xpZW50V2luLmNwcApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBXZWJDb250ZXh0TWVudUNsaWVudDo6aXNTcGVha2luZygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNwZWFrKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x
YTQ5OWNhODcwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKKyNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKworICAgIGlmIChOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHJldHVybjsKK30K
Kwordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3Jl
U2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQKK30KKworV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCisgICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
KGZyYW1lLT5jb3JlRnJhbWUoKSkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgaWYg
KGZyYW1lKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgp
KSkKKyAgICAgICAgICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247CisgICAgfQorICAgIHJldHVy
biBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworfQorCitX
ZWJGcmFtZUxvYWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVM
b2FkZXJDbGllbnQoKSBjb25zdAoreworICAgIGlmICghZnJhbWUoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKSk7Cit9CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDBhYTRiOGNjYWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
PgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkZyYW1lOworY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CitzdHJ1Y3QgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM7CisKK2NsYXNzIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQg
OiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGUoV2ViRnJhbWUqIGZy
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dChmcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIGVuc3Vy
ZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwor
CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7
CisKKworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqKTsKKworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9w
dXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93
aW4vV2ViUG9wdXBNZW51V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZTg3NmM2ZWEyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZv
cm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYkluc3BlY3RvclVJV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJJbnNwZWN0b3JVSVdp
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1M2IwY2VlOTdj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L1dlYkluc3BlY3RvclVJV2luLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaW5j
bHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQor
eworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFJlbW90ZVdlYkluc3BlY3RvclVJ
Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi45YjU1Yjk4ZjcyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMCwwICsxLDI2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKwor
I2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
V2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29u
dHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9FdmVudE5hbWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZp
ZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bUluaXRpYWxpemUoKQoreworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKK3sK
K30KKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW91dERhdGEpIGNvbnN0Cit7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVm
ZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JG
b3JLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQoreworICAg
IGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93biAmJiBrZXlib2Fy
ZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc3dpdGNoIChrZXlib2FyZEV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgp
KSB7CisgICAgY2FzZSBWS19TUEFDRToKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwga2V5
Ym9hcmRFdmVudC5zaGlmdEtleSgpID8gU2Nyb2xsVXAgOiBTY3JvbGxEb3duLCBTY3JvbGxCeVBh
Z2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX0xFRlQ6CisgICAgICAgIHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVktfUklHSFQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJp
Z2h0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX1VQOgorICAg
ICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWS19ET1dOOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZL
X0hPTUU6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURv
Y3VtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19FTkQ6CisgICAgICAgIHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFZLX1BSSU9SOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBT
Y3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19ORVhU
OgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2Up
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNM
b2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5
cGVGb3JVUkwoY29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1l
Rm9yVVJMKGNvbnN0IFVSTCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3Bv
bnNlRGF0YUZvclVSTChjb25zdCBVUkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK1N0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBV
UkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpIHx8ICFtX3BhZ2UtPnNldHRp
bmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3Ry
bEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3du
RW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJz
OworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7Cisg
ICAgdW5zaWduZWQgY2hhckNvZGU7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0
IGNoYXIqIG5hbWU7Cit9OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRy
aWVzW10gPSB7CisgICAgeyBWS19MRUZULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0
IiB9LAorICAgIHsgVktfTEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1v
ZGlmeVNlbGVjdGlvbiIgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAi
TW92ZVdvcmRMZWZ0IiB9LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJN
b3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19SSUdIVCwgIDAsICAg
ICAgICAgICAgICAgICAgIk1vdmVSaWdodCIgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktfUklH
SFQsICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiB9LAorICAgIHsgVktfUklH
SFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9u
IiB9LAorICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVXAiIH0sCisg
ICAgeyBWS19VUCwgICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VV
cEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAg
ICAgICAiTW92ZURvd24iIH0sCisgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAgICAgICAgICAg
Ik1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtl
eSwgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBW
S19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiIH0sCisgICAgeyBWS19O
RVhULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIgfSwKKyAgICB7IFZLX0hP
TUUsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAorICAg
IHsgVktfSE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVB
bmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXksICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxL
ZXkgfCBTaGlmdEtleSwgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rp
b24iIH0sCisKKyAgICB7IFZLX0VORCwgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5k
T2ZMaW5lIiB9LAorICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9F
bmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXks
ICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiIH0sCisgICAgeyBWS19FTkQsICAgIEN0
cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCisKKyAgICB7IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dh
cmQiIH0sCisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3
YXJkIiB9LAorICAgIHsgVktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3
YXJkIiB9LAorICAgIHsgVktfQkFDSywgICBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3Jk
QmFja3dhcmQiIH0sCisgICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0
ZVdvcmRGb3J3YXJkIiB9LAorCisgICAgeyAnQicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAg
IlRvZ2dsZUJvbGQiIH0sCisgICAgeyAnSScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRv
Z2dsZUl0YWxpYyIgfSwKKworICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAgICAgICJD
YW5jZWwiIH0sCisgICAgeyBWS19PRU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIg
fSwKKyAgICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiB9LAor
ICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiB9LAor
ICAgIHsgVktfUkVUVVJOLCAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAor
ICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAor
ICAgIHsgVktfUkVUVVJOLCBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAor
ICAgIHsgVktfUkVUVVJOLCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAor
ICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiB9LAor
CisgICAgLy8gSXQncyBub3QgcXVpdGUgY2xlYXIgd2hldGhlciBjbGlwYm9hcmQgc2hvcnRjdXRz
IGFuZCBVbmRvL1JlZG8gc2hvdWxkIGJlIGhhbmRsZWQKKyAgICAvLyBpbiB0aGUgYXBwbGljYXRp
b24gb3IgaW4gV2ViS2l0LiBXZSBjaG9zZSBXZWJLaXQuCisgICAgeyAnQycsICAgICAgIEN0cmxL
ZXksICAgICAgICAgICAgIkNvcHkiIH0sCisgICAgeyAnVicsICAgICAgIEN0cmxLZXksICAgICAg
ICAgICAgIlBhc3RlIiB9LAorICAgIHsgJ1gnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJD
dXQiIH0sCisgICAgeyAnQScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlNlbGVjdEFsbCIg
fSwKKyAgICB7IFZLX0lOU0VSVCwgQ3RybEtleSwgICAgICAgICAgICAiQ29weSIgfSwKKyAgICB7
IFZLX0RFTEVURSwgU2hpZnRLZXksICAgICAgICAgICAiQ3V0IiB9LAorICAgIHsgVktfSU5TRVJU
LCBTaGlmdEtleSwgICAgICAgICAgICJQYXN0ZSIgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtl
eSwgICAgICAgICAgICAiVW5kbyIgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSB8IFNoaWZ0
S2V5LCAiUmVkbyIgfSwKK307CisKK3N0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNz
RW50cmllc1tdID0geworICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRU
YWIiIH0sCisgICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIi
IH0sCisgICAgeyAnXHInLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0s
CisgICAgeyAnXHInLCAgIEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisg
ICAgeyAnXHInLCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAg
eyAnXHInLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisgICAgeyAn
XHInLCAgIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiIH0sCit9OworCitjb25z
dCBjaGFyKiBXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50KiBldnQpCit7CisgICAgQVNTRVJUKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5r
ZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQp
OworCisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5k
c01hcCA9IDA7CisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVByZXNz
Q29tbWFuZHNNYXAgPSAwOworCisgICAgaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsKKyAgICAg
ICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47Cisg
ICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIq
PjsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5
RG93bkVudHJpZXMpOyArK2kpCisgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChr
ZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0
dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa2V5UHJlc3NFbnRyaWVzKTsgKytpKQorICAgICAg
ICAgICAga2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmll
cnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tp
XS5uYW1lKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChl
dnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAo
ZXZ0LT5hbHRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZ0
LT5jdHJsS2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaWYgKGV2
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1h
cEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+a2V5Q29kZSgpOworICAgICAgICByZXR1cm4g
bWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CisgICAgfQorCisg
ICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2dC0+Y2hhckNvZGUoKTsKKyAgICBy
ZXR1cm4gbWFwS2V5ID8ga2V5UHJlc3NDb21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworfQor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggMmYyZmFjZGQyMjAuLmE0NjZmNGQ5MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
b21tb25WTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01X
aW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oPgpAQCAtMTE3Nyw2ICsxMTc4LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpl
bnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVu
dGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpOwogI2VsaWYgT1MoREFSV0lOKQogICAgIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllci5oYW5kbGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2lu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWNiNjJjYjBhNzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NXaW4uY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5h
bWUpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewordm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJikKK3sKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgp
Cit7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9k
ZWwpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>