<?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>50758</bug_id>
          
          <creation_ts>2010-12-09 06:36:05 -0800</creation_ts>
          <short_desc>Defer loading print stylesheets</short_desc>
          <delta_ts>2010-12-20 13:52:24 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://nytimes.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mathias</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>319438</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 06:36:05 -0800</bug_when>
    <thetext>Currently stylesheets for media=&quot;print&quot; are loaded with the same high priority as the rest. This can slow down first display. 

With Wireshark you can see that for example nytimes.com loads a print stylesheet very early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319439</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 06:38:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/8722094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319642</commentid>
    <comment_count>2</comment_count>
      <attachid>76104</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 12:12:49 -0800</bug_when>
    <thetext>Created attachment 76104
patch

- Make preload scanner skip stylesheets with non-screen media types.
- Make link element skip stylesheets for media types other than screen or print.
- Make it possible to specify non-default load priority from the client.
- Use this mechanism to load print stylesheets using very low priority so they get loaded after everything else.
- Move default priority code from Loader to CachedResource.
- Move ResourceLoadScheduler::Priority enum to a separate file (as ResourceLoadPriority).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319660</commentid>
    <comment_count>3</comment_count>
      <attachid>76113</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 12:40:05 -0800</bug_when>
    <thetext>Created attachment 76113
fixed a bug that was causing drt crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319681</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 13:14:16 -0800</bug_when>
    <thetext>Now I see that bug 22429 &quot;document.styleSheets collection ignores media=presentation&quot; deliberately enabled loading all stylesheets no matter how useless they are. 

I can rip that portion out from this patch but that change was not a very good idea in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319683</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-09 13:20:33 -0800</bug_when>
    <thetext>If some stylesheets are omitted, then code like document.styleSheets[5] won&apos;t work, and that&apos;s almost certainly an issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319684</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-09 13:21:45 -0800</bug_when>
    <thetext>I can also imagine a witty Web developer moving CSS rules from an otherwise unused stylesheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319690</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 13:32:59 -0800</bug_when>
    <thetext>We(In reply to comment #5)
&gt; If some stylesheets are omitted, then code like document.styleSheets[5] won&apos;t work, and that&apos;s almost certainly an issue.

Having empty sheets should work fine for that.

I&apos;m not really worried about braille sheets, but the inability to optimize this:

http://broadcast.oreilly.com/2010/04/using-css-media-queries-ipad.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319694</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-09 13:41:27 -0800</bug_when>
    <thetext>&gt; Having empty sheets should work fine for that.

Is giving unused stylesheets lowest priority insufficient? Breaking something that&apos;s mandated by CSSOM spec and works in every browser doesn&apos;t seem great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319700</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 13:57:55 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Having empty sheets should work fine for that.
&gt; 
&gt; Is giving unused stylesheets lowest priority insufficient? Breaking something that&apos;s mandated by CSSOM spec and works in every browser doesn&apos;t seem great.

Not exactly the only place where we ignore CSSOM, or other browsers. Anyway I&apos;m not convinced that this is anything more than a theoretical compatibility issue. The behavior was changed (based on &quot;other browsers do this&quot; only) very late, in 2009, which indicates that the case was actually not seen in the real world much or at all.

But yeah, I&apos;ll turn this one into a prioritization only patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321079</commentid>
    <comment_count>10</comment_count>
      <attachid>76378</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 06:08:20 -0800</bug_when>
    <thetext>Created attachment 76378
updated patch

- Load all stylesheets, just use lower prioritization for non-screen sheets
- Implement load order serialization so we can test this reliably in DRT
- Add some resource load ordering tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321096</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 07:06:02 -0800</bug_when>
    <thetext>Attachment 76378 did not build on gtk:
Build output: http://queues.webkit.org/results/7024090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321104</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-13 07:24:09 -0800</bug_when>
    <thetext>Attachment 76378 did not build on win:
Build output: http://queues.webkit.org/results/6989109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321114</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-13 07:44:21 -0800</bug_when>
    <thetext>Attachment 76378 did not build on win:
Build output: http://queues.webkit.org/results/7037040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321142</commentid>
    <comment_count>14</comment_count>
      <attachid>76390</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 08:53:15 -0800</bug_when>
    <thetext>Created attachment 76390
fix drt build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321151</commentid>
    <comment_count>15</comment_count>
      <attachid>76378</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-13 09:25:01 -0800</bug_when>
    <thetext>Comment on attachment 76378
updated patch

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

I&apos;ve been reviewing the previous version (without build fixes). Looks good, and I&apos;m especially happy about test coverage.

Please fix minor comments. I&apos;m not quite sure what to do about the two bigger ones (possibility of printing problems, and breaking preloading for complex media). Is this something to discuss with Hyatt, or are you sure about this being fine?

&gt; WebCore/ChangeLog:11
&gt; +        - Use this mechanism to load print stylesheets using very low priority so they get loaded after everything else.

I&apos;m slightly worried that this may increase problem rate when actually printing. It will be more likely that a page will not be printable yet when it looks complete on screen. The user would press Cmd+P, and observe broken layout.

&gt; WebCore/ChangeLog:20
&gt; +        * WebCore.xcodeproj/project.pbxproj:

Please modify other project files.

&gt; WebCore/css/MediaQueryEvaluator.h:77
&gt; -    bool eval(const MediaList*, CSSStyleSelector* = 0) const;
&gt; +    bool eval(PassRefPtr&lt;MediaList&gt;, CSSStyleSelector* = 0) const;

This change is wrong. PassRefPtr should be used when passing ownership - but MediaQueryEvaluator doesn&apos;t take ownership of the MediaList.

&gt; WebCore/html/HTMLLinkElement.cpp:227
&gt; +    // FIXME: We shouldn&apos;t load unnecessary stylesheets at all.

Please remove this FIXME. There is no such thing as &quot;unnecessary stylesheet&quot;.

&gt; WebCore/html/HTMLLinkElement.cpp:261
&gt; +        // Load print stylesheets with low priority so they don&apos;t affect normal page loading.
&gt; +        ResourceLoadPriority priority = mediaIsScreen ? ResourceLoadPriorityUnresolved : ResourceLoadPriorityVeryLow;
&gt; +        m_cachedSheet = document()-&gt;cachedResourceLoader()-&gt;requestCSSStyleSheet(m_url, charset, priority);

s/print/non-screen/?

&gt; WebCore/html/parser/HTMLPreloadScanner.cpp:92
&gt; +    bool linkMediaAttributeMatches(const String&amp; attributeValue)

This function doesn&apos;t use class members, so it should be static. Also, the name implies matching something in class state, which is misleading. I suggest something like &quot;linkMediaAttributeMatchesRenderingIntent&quot; or linkMediaAttributeIsScreen&quot;.

&gt; WebCore/html/parser/HTMLPreloadScanner.cpp:100
&gt; +        // Only preload screen media stylesheets. Used this way, the evaluator evaluates to false for any 
&gt; +        // rules containing complex queries (full evaluation is possible but it requires frame and style selector which
&gt; +        // may be problematic here). Cases where picking these for preloading would help are probably rare.

Will this prevent preloading for screen size and resolution specific stylesheets? How bad is that for embedded devices?

&gt; WebKitTools/ChangeLog:5
&gt; +        Add setSerializeHTTPLoads function to allow testing resource load order on OS X.

Please consider also implementing this at least for WebKit2.

&gt; WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm:1004
&gt; +    [WebView _setLoadResourcesSerially:serialize forHost:@&quot;127.0.0.1&quot;];

What is the use case for passing a host here? We&apos;ll want at least localhost, too.

&gt; LayoutTests/ChangeLog:1
&gt; +2010-12-13  Antti Koivisto  &lt;antti@apple.com&gt;

Duplicated ChangeLog in LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321153</commentid>
    <comment_count>16</comment_count>
      <attachid>76390</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-13 09:26:29 -0800</bug_when>
    <thetext>Comment on attachment 76390
fix drt build

There&apos;s a bunch of minor comments and some questions to discuss, seems worth another round. But this looks technically sound, and very promising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321229</commentid>
    <comment_count>17</comment_count>
      <attachid>76406</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 10:37:20 -0800</bug_when>
    <thetext>Created attachment 76406
updated based on ap&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321240</commentid>
    <comment_count>18</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 10:49:17 -0800</bug_when>
    <thetext>(In reply to comment #15)

&gt; &gt; WebCore/ChangeLog:11
&gt; &gt; +        - Use this mechanism to load print stylesheets using very low priority so they get loaded after everything else.
&gt; 
&gt; I&apos;m slightly worried that this may increase problem rate when actually printing. It will be more likely that a page will not be printable yet when it looks complete on screen. The user would press Cmd+P, and observe broken layout.

It shouldn&apos;t be a significant concern. People don&apos;t normally print before the page is visually complete. Parallel loading ensures that small number of hanging resources won&apos;t prevent the print sheet from getting loaded.

&gt; Please modify other project files.

Done.

&gt; This change is wrong. PassRefPtr should be used when passing ownership - but MediaQueryEvaluator doesn&apos;t take ownership of the MediaList.

Oh ok. Fixed.

&gt; &gt; WebCore/html/HTMLLinkElement.cpp:227
&gt; &gt; +    // FIXME: We shouldn&apos;t load unnecessary stylesheets at all.
&gt; 
&gt; Please remove this FIXME. There is no such thing as &quot;unnecessary stylesheet&quot;.

Stylesheets that are never used are unnecessary to load. This is major performance concern. I have bug open to fix this too.

&gt; This function doesn&apos;t use class members, so it should be static. Also, the name implies matching something in class state, which is misleading. I suggest something like &quot;linkMediaAttributeMatchesRenderingIntent&quot; or linkMediaAttributeIsScreen&quot;.

Fixed.

&gt; Will this prevent preloading for screen size and resolution specific stylesheets? How bad is that for embedded devices?

Changed to load by default. This can be optimized later.

&gt; &gt; WebKitTools/ChangeLog:5
&gt; &gt; +        Add setSerializeHTTPLoads function to allow testing resource load order on OS X.
&gt; 
&gt; Please consider also implementing this at least for WebKit2.

Later.

&gt; &gt; WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm:1004
&gt; &gt; +    [WebView _setLoadResourcesSerially:serialize forHost:@&quot;127.0.0.1&quot;];
&gt; 
&gt; What is the use case for passing a host here? We&apos;ll want at least localhost, too.

Nothing really. I got rid of it and simplified the code in the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321260</commentid>
    <comment_count>19</comment_count>
      <attachid>76406</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-13 11:14:07 -0800</bug_when>
    <thetext>Comment on attachment 76406
updated based on ap&apos;s comments

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

&gt;&gt; Please modify other project files.
&gt; Done.

Please also update the ChangeLog.

&gt; &gt; Please remove this FIXME. There is no such thing as &quot;unnecessary stylesheet&quot;.
&gt; Stylesheets that are never used are unnecessary to load. This is major performance concern. I have bug open to fix this too.

How do we know that they are never used? The only thing we could do is block on CSSOM access and load the stylesheet on demand, but that&apos;s even worse, as that would use a synchronous load. And even that could have compatibility implications - servers heavily rely on getting exactly one request for a Web font, for example.

Please do remove the FIXME - it&apos;s not really necessary if there&apos;s a bug, and we can continue the discussion in the bug.

&gt; &gt; Please consider also implementing this at least for WebKit2.
&gt; Later.

OK. Generally, we should treat WebKit2 as first class citizen now, and if I were making this patch, implementing a WebKit2 DRT hook while I was still fully in the context of this work would be easiest for me.

&gt; LayoutTests/platform/win/Skipped:1098
&gt; +# For https://bugs.webkit.org/show_bug.cgi?id=50758
&gt; +# These require DRT setSerializeHTTPLoads implementation to be reliable.

As a courtesy, we try to modify other platforms&apos; Skipped lists, too (when it&apos;s straightforward).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321282</commentid>
    <comment_count>20</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 11:33:44 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Later.
&gt; 
&gt; OK. Generally, we should treat WebKit2 as first class citizen now, and if I were making this patch, implementing a WebKit2 DRT hook while I was still fully in the context of this work would be easiest for me.

This patch is alrady rather large. I just don&apos;t want it to rot while I figure out how to do that.

&gt; &gt; LayoutTests/platform/win/Skipped:1098
&gt; &gt; +# For https://bugs.webkit.org/show_bug.cgi?id=50758
&gt; &gt; +# These require DRT setSerializeHTTPLoads implementation to be reliable.
&gt; 
&gt; As a courtesy, we try to modify other platforms&apos; Skipped lists, too (when it&apos;s straightforward).

If other platforms have more deterministic HTTP stacks than CFNetwork, they might not need this hack at all. I&apos;ll see what the build bots say before modifying the Skipped lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321283</commentid>
    <comment_count>21</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 11:34:04 -0800</bug_when>
    <thetext>Thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321300</commentid>
    <comment_count>22</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 11:50:15 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321357</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 13:12:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73938 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/dom/gc-11.html
http/tests/local/link-stylesheet-load-order-preload.html
http/tests/local/link-stylesheet-load-order.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321362</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-13 13:29:26 -0800</bug_when>
    <thetext>The load order tests need to be added to Skipped list, gc-11 is probably unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321443</commentid>
    <comment_count>25</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-13 14:46:08 -0800</bug_when>
    <thetext>      (In reply to comment #24)
&gt; The load order tests need to be added to Skipped list, gc-11 is probably unrelated.

Gtk was skipped in http://trac.webkit.org/changeset/73954. I did add them to other skipped lists that I saw failing too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76104</attachid>
            <date>2010-12-09 12:12:49 -0800</date>
            <delta_ts>2010-12-09 12:40:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>defer-print-stylesheets.patch</filename>
            <type>text/plain</type>
            <size>50145</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzYzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjggQEAKKzIwMTAtMTItMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODcyMjA5ND4gCisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVz
aGVldHMKKyAgICAgICAgCisgICAgICAgIC0gTWFrZSBwcmVsb2FkIHNjYW5uZXIgc2tpcCBzdHls
ZXNoZWV0cyB3aXRoIG5vbi1zY3JlZW4gbWVkaWEgdHlwZXMuCisgICAgICAgIC0gTWFrZSBsaW5r
IGVsZW1lbnQgc2tpcCBzdHlsZXNoZWV0cyBmb3IgbWVkaWEgdHlwZXMgb3RoZXIgdGhhbiBzY3Jl
ZW4gb3IgcHJpbnQuCisgICAgICAgIC0gTWFrZSBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IG5vbi1k
ZWZhdWx0IGxvYWQgcHJpb3JpdHkgZnJvbSB0aGUgY2xpZW50LgorICAgICAgICAtIFVzZSB0aGlz
IG1lY2hhbmlzbSB0byBsb2FkIHByaW50IHN0eWxlc2hlZXRzIHVzaW5nIHZlcnkgbG93IHByaW9y
aXR5IHNvIHRoZXkgZ2V0IGxvYWRlZCBhZnRlciBldmVyeXRoaW5nIGVsc2UuCisgICAgICAgIC0g
TW92ZSBkZWZhdWx0IHByaW9yaXR5IGNvZGUgZnJvbSBMb2FkZXIgdG8gQ2FjaGVkUmVzb3VyY2Uu
CisgICAgICAgIC0gTW92ZSBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlByaW9yaXR5IGVudW0gdG8g
YSBzZXBhcmF0ZSBmaWxlIChhcyBSZXNvdXJjZUxvYWRQcmlvcml0eSkuCisKKyAgICAgICAgVGVz
dHM6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbWVkaWEuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5
RXZhbHVhdG9yOjpldmFsKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oOgor
ICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVF
bGVtZW50OjpjcmVhdGVTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6UHJlbG9hZFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cHJvY2Vzc0F0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6bGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OlByZWxvYWRUYXNrOjpwcmVsb2FkKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRQcmlvcml0eS5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlv
bjo6fkhvc3RJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb246OnJlbW92ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6aGFzUmVxdWVz
dHMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpyZXF1ZXN0
c1BlbmRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpsb2FkUHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OnNldExvYWRQcmlvcml0eSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UHJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2FkKToKKwogMjAxMC0xMi0wOSAgQW50b25p
byBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IGJ5
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzM1MTApCisrKyBX
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsNyArNDg1LDcgQEAg
X19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zVwogX19aTjdXZWJDb3JlMjFC
YWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9fWk43V2ViQ29yZTIxUGxhdGZv
cm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlMwXzRUeXBlRWIKIF9f
Wk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdOU0V2ZW50Ci1fX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlMwXzhQcmlv
cml0eUUKK19fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RQogX19aTjdXZWJDb3JlMjFSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNfNUZyYW1lRVBOU18z
Mk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
CiBfX1pON1dlYkNvcmUyMVNWR0RvY3VtZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0aW9uQXRU
aW1lRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNWR1NNSUxFbGVtZW50RWQKIF9fWk43V2ViQ29yZTIx
U2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBL
MTNPcGFxdWVKU1ZhbHVlCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQ3Niw2ICs1NDc2LDcgQEAKIAkJRTFG
RjU3QTYwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTUwRjAxMjU2QjAwODkx
RUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwICovOyB9OwogCQlFNDE1RjE2OTBEOUExNjVEMDAz
M0NFOTcgLyogRE9NRWxlbWVudFRpbWVDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE1RjE2ODBEOUExNjVEMDAzM0NFOTcgLyogRE9NRWxl
bWVudFRpbWVDb250cm9sLmggKi87IH07CiAJCUU0MTVGMTg0MEQ5QTFBODMwMDMzQ0U5NyAvKiBF
bGVtZW50VGltZUNvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wu
aCAqLzsgfTsKKwkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9y
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI5
NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDQ2MTNBMTBDRDYzMzEw
MDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ2MTM4RjBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1
ZGlvRWxlbWVudC5jcHAgKi87IH07CiAJCUU0NDYxM0EyMENENjMzMTAwMEZBREE3NSAvKiBIVE1M
QXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDQ2MTM5MDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5oICovOyB9
OwogCQlFNDQ2MTNBNDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ2MTM5MjBDRDYz
MzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMTU5NSw2ICsx
MTU5Niw3IEBACiAJCUU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRy
b2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudFRpbWVDb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJD
NSAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDFFQTAzOTExOTgzNzQ5MDA3MTBCQzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQyOTVGQTMxMkIwNjE0RTAwRDFBQ0UwIC8qIFJl
c291cmNlTG9hZFByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlTG9hZFByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYx
MzhGMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDQ2MTM5MDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlv
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQXVkaW9FbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYxMzkxMENENjMzMTAwMEZB
REE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1M
QXVkaW9FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDc4LDYg
KzE3NDgwLDcgQEAKIAkJCQk2NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2Fk
ZXIuaCAqLywKIAkJCQk5NzNFMzI1NDEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwICovLAogCQkJCTk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxv
YWROb3RpZmllci5oICovLAorCQkJCUU0Mjk1RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJj
ZUxvYWRQcmlvcml0eS5oICovLAogCQkJCUQwQ0U1OEY2MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwICovLAogCQkJCUQwQ0U1OEY3MTI1RTRDQzIwMEYzRjE5OSAv
KiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCAqLywKIAkJCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlE
NjUgLyogU2lua0RvY3VtZW50LmNwcCAqLywKQEAgLTIxNTE1LDYgKzIxNTE4LDcgQEAKIAkJCQk0
OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8q
IFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuY3BwCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0lt
YWdlVmFsdWU6OmNhY2hlZEkKICAgICAgICAgICAgIGNhY2hlZEltYWdlID0gbG9hZGVyLT5yZXF1
ZXN0SW1hZ2UodXJsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIGZpbmQgYSB3YXkgdG8gbWFrZSB0aGVzZSBpbWFnZXMgc2l0IGluIHRoZWlyIG93biBtZW1v
cnkgcGFydGl0aW9uLCBzaW5jZSB0aGV5IGFyZSB1c2VyIGFnZW50IGltYWdlcy4KLSAgICAgICAg
ICAgIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihjYWNoZSgpLT5yZXF1
ZXN0UmVzb3VyY2UoMCwgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSkpOworICAgICAgICAgICAgY2FjaGVkSW1hZ2UgPSBz
dGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSgwLCBDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0
cmluZygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChjYWNoZWRJbWFnZSkgewpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBhcHBs
eVJlc3RyaWN0b3IoTWVkaWFRdWVyeTo6CiAgICAgcmV0dXJuIHIgPT0gTWVkaWFRdWVyeTo6Tm90
ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChj
b25zdCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3Rv
cikgY29uc3QKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChQYXNzUmVmUHRyPE1lZGlh
TGlzdD4gbWVkaWFMaXN0LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKSBjb25zdAog
ewogICAgIGlmICghbWVkaWFMaXN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIG1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoY29uc3QgY2hhciogbWVkaWFUeXBl
VG9NYXRjaCkgY29uc3Q7CiAKICAgICAvKiogRXZhbHVhdGVzIGEgbGlzdCBvZiBtZWRpYSBxdWVy
aWVzICovCi0gICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhTGlzdCosIENTU1N0eWxlU2VsZWN0b3Iq
ID0gMCkgY29uc3Q7CisgICAgYm9vbCBldmFsKFBhc3NSZWZQdHI8TWVkaWFMaXN0PiwgQ1NTU3R5
bGVTZWxlY3RvciogPSAwKSBjb25zdDsKIAogICAgIC8qKiBFdmFsdWF0ZXMgbWVkaWEgcXVlcnkg
c3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0ICovCiAg
ICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhUXVlcnlFeHAqKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
ZG9tL1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KEVsZW1lbnQqIAogICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYUxpc3Qg
PSBNZWRpYUxpc3Q6OmNyZWF0ZShtZWRpYSgpLCBlLT5pc0hUTUxFbGVtZW50KCkpOwogICAgICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIHRydWUpOwogICAgICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiLCB0cnVlKTsKLSAgICAgICAg
aWYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3QuZ2V0KCkpIHx8IHByaW50RXZhbC5ldmFsKG1l
ZGlhTGlzdC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3Qp
IHx8IHByaW50RXZhbC5ldmFsKG1lZGlhTGlzdCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50LT5h
ZGRQZW5kaW5nU2hlZXQoKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7CiAgICAgICAg
ICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGUsIFN0cmluZygpLCBLVVJMKCks
IGRvY3VtZW50LT5pbnB1dEVuY29kaW5nKCkpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNCwxMCArMjI0LDIzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNo
ZWV0KCk7CiAKLSAgICAvLyBTdHlsZXNoZWV0Ci0gICAgLy8gVGhpcyB3YXMgYnVnZ3kgYW5kIHdv
dWxkIGluY29ycmVjdGx5IG1hdGNoIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIj4sIHdoaWNoIGhhcyBh
IGRpZmZlcmVudCBzcGVjaWZpZWQgbWVhbmluZy4gLWR3aAotICAgIGlmIChtX2Rpc2FibGVkU3Rh
dGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2Nl
cHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpICYm
IGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIGFs
c28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25lIGRvY3VtZW50cworICAg
IC8vIERvbid0IGxvYWQgYW55dGhpbmcgZWxzZSB0aGFuIHNjcmVlbiBhbmQgcHJpbnQgc2hlZXRz
LiBMb2FkIHNoZWV0cyBldmVuIGlmIHRoZSBjb21wbGV4IHF1ZXJpZXMgZXZhbHVhdGUgdG8gZmFs
c2UuCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG9ubHkgbG9hZCBzaGVldHMgd2l0aCBkeW5h
bWljIHF1ZXJpZXMgdGhhdCBtYXkgYWN0dWFsbHkgZXZhbHVhdGUgdG8gdHJ1ZSBvbiB0aGUgY3Vy
cmVudCBwbGF0Zm9ybS4KKyAgICBib29sIG1lZGlhTWF0Y2hlcyA9IHRydWU7CisgICAgYm9vbCBt
ZWRpYUlzUHJpbnQgPSBmYWxzZTsKKyAgICBpZiAoIW1fbWVkaWEuaXNFbXB0eSgpKSB7CisgICAg
ICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gTWVkaWFMaXN0OjpjcmVhdGVBbGxvd2luZ0Rl
c2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOworICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNj
cmVlbkV2YWx1YXRvcigic2NyZWVuIiwgdHJ1ZSk7CisgICAgICAgIG1lZGlhTWF0Y2hlcyA9IHNj
cmVlbkV2YWx1YXRvci5ldmFsKG1lZGlhKTsKKyAgICAgICAgaWYgKCFtZWRpYU1hdGNoZXMpIHsK
KyAgICAgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsdWF0b3IoInByaW50Iiwg
dHJ1ZSk7CisgICAgICAgICAgICBtZWRpYUlzUHJpbnQgPSBwcmludEV2YWx1YXRvci5ldmFsKG1l
ZGlhKTsKKyAgICAgICAgICAgIG1lZGlhTWF0Y2hlcyA9IG1lZGlhTWF0Y2hlcyB8fCBtZWRpYUlz
UHJpbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKG1fZGlzYWJsZWRTdGF0ZSAh
PSBEaXNhYmxlZCAmJiAobV9yZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgfHwgKGFjY2VwdElm
VHlwZUNvbnRhaW5zVGV4dENTUyAmJiB0eXBlLmNvbnRhaW5zKCJ0ZXh0L2NzcyIpKSkgCisgICAg
ICAgICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpICYmIG1lZGlhTWF0
Y2hlcykgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBnZXRBdHRyaWJ1dGUo
Y2hhcnNldEF0dHIpOwogICAgICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkgJiYgZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKQEAgLTI1MCw3ICsyNjMsOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgICAgIGlmICghaXNBbHRlcm5hdGUoKSkKICAgICAgICAgICAgIGRvY3VtZW50
KCktPmFkZFBlbmRpbmdTaGVldCgpOwogCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVTaGVldChtX3VybCwg
Y2hhcnNldCk7CisgICAgICAgIC8vIExvYWQgcHJpbnQgc3R5bGVzaGVldHMgd2l0aCBsb3cgcHJp
b3JpdHkgc28gdGhleSBkb24ndCBhZmZlY3Qgbm9ybWFsIHBhZ2UgbG9hZGluZy4KKyAgICAgICAg
UmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBtZWRpYUlzUHJpbnQgPyBSZXNvdXJjZUxv
YWRQcmlvcml0eVZlcnlMb3cgOiBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQ7CisgICAg
ICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5y
ZXF1ZXN0Q1NTU3R5bGVTaGVldChtX3VybCwgY2hhcnNldCwgcHJpb3JpdHkpOwogICAgICAgICAK
ICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5h
ZGRDbGllbnQodGhpcyk7CkluZGV4OiBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1
ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiAr
NDksNyBAQCBwdWJsaWM6CiAgICAgUHJlbG9hZFRhc2soY29uc3QgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgOiBtX3RhZ05hbWUodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNp
emUoKSkKICAgICAgICAgLCBtX2xpbmtJc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICwgbV9s
aW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKHRydWUpCiAgICAgewogICAgICAgICBwcm9jZXNzQXR0
cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwogICAgIH0KQEAgLTcyLDYgKzc1LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwog
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVsQXR0cikKICAgICAg
ICAgICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVO
YW1lID09IG1lZGlhQXR0cikKKyAgICAgICAgICAgICAgICAgICAgbV9saW5rTWVkaWFBdHRyaWJ1
dGVNYXRjaGVzID0gbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyhhdHRyaWJ1dGVWYWx1ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC04Myw2ICs4OCwxOSBAQCBwdWJsaWM6
CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmlidXRl
VmFsdWUsIHJlbCk7CiAgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5t
X2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAg
ICAgfQorICAgIAorICAgIGJvb2wgbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIGF0dHJpYnV0ZVZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBSZWZQdHI8TWVkaWFM
aXN0PiBtZWRpYUxpc3QgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50
YXgoYXR0cmlidXRlVmFsdWUpOworICAgIAorICAgICAgICAvLyBPbmx5IHByZWxvYWQgc2NyZWVu
IG1lZGlhIHN0eWxlc2hlZXRzLiBVc2VkIHRoaXMgd2F5LCB0aGUgZXZhbHVhdG9yIGV2YWx1YXRl
cyB0byBmYWxzZSBmb3IgYW55IAorICAgICAgICAvLyBydWxlcyBjb250YWluaW5nIGNvbXBsZXgg
cXVlcmllcyAoZnVsbCBldmFsdWF0aW9uIGlzIHBvc3NpYmxlIGJ1dCBpdCByZXF1aXJlcyBmcmFt
ZSBhbmQgc3R5bGUgc2VsZWN0b3Igd2hpY2gKKyAgICAgICAgLy8gbWF5IGJlIHByb2JsZW1hdGlj
IGhlcmUpLiBDYXNlcyB3aGVyZSBwaWNraW5nIHRoZXNlIGZvciBwcmVsb2FkaW5nIHdvdWxkIGhl
bHAgYXJlIHByb2JhYmx5IHJhcmUuCisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgbWVkaWFR
dWVyeUV2YWx1YXRvcigic2NyZWVuIiwgZmFsc2UpOworICAgICAgICByZXR1cm4gbWVkaWFRdWVy
eUV2YWx1YXRvci5ldmFsKG1lZGlhTGlzdCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRVcmxUb0xv
YWQoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKICAgICB7CkBAIC0xMDMsNyArMTIxLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2Fj
aGVkUmVzb3VyY2U6OlNjcmlwdCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5
KTsKICAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGltZ1RhZykgCiAgICAgICAgICAgICBj
YWNoZWRSZXNvdXJjZUxvYWRlci0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJj
ZSwgbV91cmxUb0xvYWQsIFN0cmluZygpLCBzY2FubmluZ0JvZHkpOwotICAgICAgICBlbHNlIGlm
IChtX3RhZ05hbWUgPT0gbGlua1RhZyAmJiBtX2xpbmtJc1N0eWxlU2hlZXQpIAorICAgICAgICBl
bHNlIGlmIChtX3RhZ05hbWUgPT0gbGlua1RhZyAmJiBtX2xpbmtJc1N0eWxlU2hlZXQgJiYgbV9s
aW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKSAKICAgICAgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCBtX3VybFRvTG9hZCwg
bV9jaGFyc2V0LCBzY2FubmluZ0JvZHkpOwogICAgIH0KIApAQCAtMTE0LDYgKzEzMiw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsVG9Mb2FkOwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAg
ICAgYm9vbCBtX2xpbmtJc1N0eWxlU2hlZXQ7CisgICAgYm9vbCBtX2xpbmtNZWRpYUF0dHJpYnV0
ZU1hdGNoZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
MCw3ICszMjAsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAK
ICAgICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFja3MgZnJvbSBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBsb2FkZXIuCiAg
ICAgICAgIG1fbG9hZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhp
cywgcmVxdWVzdCwgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpNZWRpdW0sIHNlY3VyaXR5Q2hlY2ss
IHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlmZkNvbnRlbnQpOworICAgICAgICBtX2xvYWRlciA9IHJl
c291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2RvY3VtZW50
LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSwgc2Vj
dXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsIHNuaWZmQ29udGVudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRQcmlv
cml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFByaW9yaXR5
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRQcmlvcml0eS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZXNv
dXJjZUxvYWRQcmlvcml0eV9oCisjZGVmaW5lIFJlc291cmNlTG9hZFByaW9yaXR5X2gKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsgCisgICAgUmVz
b3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCAKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywg
CisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIAorICAgIFJlc291cmNlTG9hZFByaW9y
aXR5SGlnaCwgCisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3dlc3QgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eVZlcnlMb3csIAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCA9IFJlc291
cmNlTG9hZFByaW9yaXR5SGlnaCwgCisgICAgLy8gVGhlIHVucmVzb2x2ZWQgcHJpb3JpdHkgaXMg
aGVyZSBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBjbGllbnRzLiBJdCBzaG91bGQgbm90IGJl
IHBhc3NlZCB0byB0aGUgUmVzb3VyY2VMb2FkU2NoZWR1bGVyLgorICAgIFJlc291cmNlTG9hZFBy
aW9yaXR5VW5yZXNvbHZlZCwKK307CisKK30KKworI2VuZGlmCisKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UmVzb3VyY2VMb2FkU2NoZWQKICNlbmRp
ZgogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcmlvcml0
eSBwcmlvcml0eSwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFzc1JlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJl
c291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJp
b3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKIHsKICAgICBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgaWYgKGxvYWRlcikKQEAgLTk0LDcg
Kzk0LDcgQEAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUgogewogICAg
IFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAg
aWYgKGxvYWRlcikKLSAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgTG93KTsKKyAg
ICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cp
OwogICAgIHJldHVybiBsb2FkZXI7CiB9CiAKQEAgLTEwMywxMSArMTAzLDEyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjphZGRNYWluUmVzb3UKICAgICBob3N0Rm9yVVJMKHJlc291cmNl
TG9hZGVyLT51cmwoKSwgQ3JlYXRlSWZOb3RGb3VuZCktPmFkZExvYWRJblByb2dyZXNzKHJlc291
cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9h
ZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFByaW9yaXR5IHByaW9yaXR5KQordm9p
ZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVz
b3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIEFTU0VS
VChyZXNvdXJjZUxvYWRlcik7CisgICAgQVNTRVJUKHByaW9yaXR5ICE9IFJlc291cmNlTG9hZFBy
aW9yaXR5VW5yZXNvbHZlZCk7CiAjaWYgIVJFUVVFU1RfTUFOQUdFTUVOVF9FTkFCTEVECi0gICAg
cHJpb3JpdHkgPSBIaWdoZXN0UHJpb3JpdHk7CisgICAgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUhpZ2hlc3Q7CiAjZW5kaWYKIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmxvYWQgcmVzb3VyY2UgJXAgJyVzJyIsIHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKQEAgLTEx
NSw3ICsxMTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkCiAg
ICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2No
ZWR1bGUocmVzb3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotICAgIGlmIChwcmlvcml0eSA+IExv
dyB8fCAhcmVzb3VyY2VMb2FkZXItPnVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgKHBy
aW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CisgICAgaWYgKHByaW9yaXR5ID4gUmVz
b3VyY2VMb2FkUHJpb3JpdHlMb3cgfHwgIXJlc291cmNlTG9hZGVyLT51cmwoKS5wcm90b2NvbElu
SFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdyAmJiAh
aGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNv
dXJjZXMgaW1tZWRpYXRlbHkuCiAgICAgICAgIHNlcnZlUGVuZGluZ1JlcXVlc3RzKGhvc3QsIHBy
aW9yaXR5KTsKICAgICB9IGVsc2UgewpAQCAtMTQ4LDcgKzE0OSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblIKICAgICBvbGRIb3N0LT5yZW1vdmUocmVzb3VyY2VM
b2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVx
dWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5KQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlv
cml0eSkKIHsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cy4gbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM9JWQi
LCBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cyk7IAogICAgIGlmIChtX2lzU3VzcGVuZGlu
Z1BlbmRpbmdSZXF1ZXN0cykKQEAgLTE3NCwxMiArMTc1LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmcKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFByaW9y
aXR5IG1pbmltdW1Qcmlvcml0eSkKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFJlc291cmNlTG9hZFByaW9yaXR5
IG1pbmltdW1Qcmlvcml0eSkKIHsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyBIb3N0SW5mb3JtYXRpb24ubV9uYW1l
PSclcyciLCBob3N0LT5uYW1lKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIGZvciAoaW50IHBy
aW9yaXR5ID0gSGlnaGVzdFByaW9yaXR5OyBwcmlvcml0eSA+PSBtaW5pbXVtUHJpb3JpdHk7IC0t
cHJpb3JpdHkpIHsKLSAgICAgICAgSG9zdEluZm9ybWF0aW9uOjpSZXF1ZXN0UXVldWUmIHJlcXVl
c3RzUGVuZGluZyA9IGhvc3QtPnJlcXVlc3RzUGVuZGluZygoUHJpb3JpdHkpIHByaW9yaXR5KTsK
KyAgICBmb3IgKGludCBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcHJp
b3JpdHkgPj0gbWluaW11bVByaW9yaXR5OyAtLXByaW9yaXR5KSB7CisgICAgICAgIEhvc3RJbmZv
cm1hdGlvbjo6UmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcgPSBob3N0LT5yZXF1ZXN0c1Bl
bmRpbmcoKFJlc291cmNlTG9hZFByaW9yaXR5KSBwcmlvcml0eSk7CiAKICAgICAgICAgd2hpbGUg
KCFyZXF1ZXN0c1BlbmRpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0gcmVxdWVzdHNQZW5kaW5nLmZpcnN0KCk7CkBAIC0y
MzUsMTEgKzIzNiwxMSBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6
CiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6fkhvc3RJbmZvcm1hdGlv
bigpCiB7CiAgICAgQVNTRVJUKG1fcmVxdWVzdHNMb2FkaW5nLmlzRW1wdHkoKSk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBwID0gMDsgcCA8PSBIaWdoZXN0UHJpb3JpdHk7IHArKykKKyAgICBmb3IgKHVu
c2lnbmVkIHAgPSAwOyBwIDw9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcCsrKQogICAg
ICAgICBBU1NFUlQobV9yZXF1ZXN0c1BlbmRpbmdbcF0uaXNFbXB0eSgpKTsKIH0KICAgICAKLXZv
aWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb246OnNjaGVkdWxlKFJlc291
cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgUHJpb3JpdHkgcHJpb3JpdHkpCit2b2lkIFJlc291
cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpzY2hlZHVsZShSZXNvdXJjZUxvYWRl
ciogcmVzb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAg
IG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XS5hcHBlbmQocmVzb3VyY2VMb2FkZXIpOwogfQpA
QCAtMjU3LDcgKzI1OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3Jt
YXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBmb3IgKGludCBwcmlvcml0eSA9
IEhpZ2hlc3RQcmlvcml0eTsgcHJpb3JpdHkgPj0gTG93ZXN0UHJpb3JpdHk7IC0tcHJpb3JpdHkp
IHsgIAorICAgIGZvciAoaW50IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoZXN0
OyBwcmlvcml0eSA+PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvd2VzdDsgLS1wcmlvcml0eSkgeyAg
CiAgICAgICAgIFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgZW5kID0gbV9yZXF1ZXN0c1BlbmRpbmdb
cHJpb3JpdHldLmVuZCgpOwogICAgICAgICBmb3IgKFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgaXQg
PSBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV0uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgICAgICBpZiAoKml0ID09IHJlc291cmNlTG9hZGVyKSB7CkBAIC0yNzIsNyArMjcz
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdAogewogICAgIGlm
ICghbV9yZXF1ZXN0c0xvYWRpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBmb3IgKHVuc2lnbmVkIHAgPSAwOyBwIDw9IEhpZ2hlc3RQcmlvcml0eTsgcCsrKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHAr
KykgewogICAgICAgICBpZiAoIW1fcmVxdWVzdHNQZW5kaW5nW3BdLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5oCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ3LDE0ICs0
OCwxMyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgOiBwdWJsaWMgTm9uCiBwdWJsaWM6
CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCk7CiAKLSAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywgTG93LCBNZWRpdW0sIEhpZ2gsIExv
d2VzdFByaW9yaXR5ID0gVmVyeUxvdywgSGlnaGVzdFByaW9yaXR5ID0gSGlnaCB9OwotICAgIFBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1l
KiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQcmlv
cml0eSA9IExvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYg
PSB0cnVlKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJl
c291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUxv
dywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVlKTsK
ICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdp
blN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9hZChSZXNv
dXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9p
ZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJM
JiByZWRpcmVjdFVSTCk7CiAgICAgCi0gICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlv
cml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKKyAgICB2b2lkIHNlcnZlUGVuZGluZ1Jl
cXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFJlc291cmNlTG9h
ZFByaW9yaXR5VmVyeUxvdyk7CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCk7CiAg
ICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKIApAQCAtNjIsNyArNjIsNyBAQCBwcml2
YXRlOgogICAgIFJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogICAgIH5SZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiwgUHJpb3Jp
dHkpOworICAgIHZvaWQgc2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkpOwogICAgIHZvaWQgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAg
IHZvaWQgcmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8UmVzb3VyY2VMb2FkU2NoZWR1bGVyPiopOwog
CkBAIC03MiwxNyArNzIsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgfkhvc3RJbmZvcm1hdGlvbigp
OwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9Ci0gICAgICAgIHZvaWQgc2NoZWR1bGUoUmVzb3VyY2VMb2FkZXIqLCBQcmlvcml0
eSA9IFZlcnlMb3cpOworICAgICAgICB2b2lkIHNjaGVkdWxlKFJlc291cmNlTG9hZGVyKiwgUmVz
b3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogICAgICAg
ICB2b2lkIGFkZExvYWRJblByb2dyZXNzKFJlc291cmNlTG9hZGVyKik7CiAgICAgICAgIHZvaWQg
cmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25z
dDsKICAgICAgICAgYm9vbCBsaW1pdFJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
c0xvYWRpbmcuc2l6ZSgpID49IG1fbWF4UmVxdWVzdHNJbkZsaWdodDsgfQogCiAgICAgICAgIHR5
cGVkZWYgRGVxdWU8UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RRdWV1ZTsKLSAgICAg
ICAgUmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcoUHJpb3JpdHkgcHJpb3JpdHkpIHsgcmV0
dXJuIG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XTsgfQorICAgICAgICBSZXF1ZXN0UXVldWUm
IHJlcXVlc3RzUGVuZGluZyhSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkgeyByZXR1cm4g
bV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldOyB9CiAKICAgICBwcml2YXRlOiAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgIFJlcXVlc3RRdWV1ZSBtX3JlcXVlc3RzUGVuZGluZ1tIaWdoZXN0
UHJpb3JpdHkgKyAxXTsKKyAgICAgICAgUmVxdWVzdFF1ZXVlIG1fcmVxdWVzdHNQZW5kaW5nW1Jl
c291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCArIDFdOwogICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RNYXA7CiAgICAgICAgIFJlcXVlc3RNYXAg
bV9yZXF1ZXN0c0xvYWRpbmc7CiAgICAgICAgIGNvbnN0IFN0cmluZyBtX25hbWU7CkBAIC05NSw3
ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBIb3N0SW5mb3JtYXRpb24qIGhv
c3RGb3JVUkwoY29uc3QgS1VSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7Ci0gICAg
dm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBQcmlvcml0eSk7Cisg
ICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRp
b24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwogICAgIEhvc3RNYXAgbV9ob3N0czsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9h
ZGVyLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MSwyOCArNzEsNiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRUeXBlIGNhY2hlCiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJy
ZXNvdXJjZTsKIH0KIAotc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UHJpb3JpdHkgZGV0
ZXJtaW5lUHJpb3JpdHkoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIHN3
aXRjaCAocmVzb3VyY2UtPnR5cGUoKSkgewotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpD
U1NTdHlsZVNoZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpYU0xTdHlsZVNoZWV0OgotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpIaWdoOwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6
Ci0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgICAg
IHJldHVybiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Ok1lZGl1bTsKLSAgICAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OkxvdzsKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAgICAgICAgcmV0dXJuIFJlc291
cmNlTG9hZFNjaGVkdWxlcjo6VmVyeUxvdzsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpMb3c7Ci19Ci0K
IHZvaWQgTG9hZGVyOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0
eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cykKIHsKIApAQCAtMTI4LDkgKzEwNiwxMSBAQCB2b2lkIExvYWRlcjo6bG9hZChDYWNoZWRSZXNv
dXJjZUxvYWRlciogCiAgICAgaWYgKHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnR5cGUoKSA9
PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKQogICAgICAgICByZXNvdXJjZVJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKCJYLVB1cnBvc2UiLCAicHJlZmV0Y2giKTsKICNlbmRpZgorICAg
IAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gcmVxdWVzdC0+Y2FjaGVkUmVz
b3VyY2UoKS0+bG9hZFByaW9yaXR5KCk7CiAKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9h
ZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwKLSAgICAgICAgdGhp
cywgcmVzb3VyY2VSZXF1ZXN0LCBkZXRlcm1pbmVQcmlvcml0eShyZXNvdXJjZSksIHJlcXVlc3Qt
PnNob3VsZERvU2VjdXJpdHlDaGVjaygpLCByZXF1ZXN0LT5zZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkpOworICAgICAgICB0aGlzLCByZXNvdXJjZVJlcXVlc3QsIHByaW9yaXR5LCByZXF1ZXN0
LT5zaG91bGREb1NlY3VyaXR5Q2hlY2soKSwgcmVxdWVzdC0+c2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcygpKTsKICAgICBpZiAobG9hZGVyICYmICFsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpCiAgICAgICAgIG1fcmVxdWVzdHNMb2FkaW5nLmFkZChsb2FkZXIucmVsZWFzZSgpLCByZXF1
ZXN0KTsKICAgICBlbHNlIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywyOCBAQAogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIFJlc291cmNlTG9h
ZFByaW9yaXR5IGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShYU0xUKQorICAgICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoOworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpT
Y3JpcHQ6CisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAg
ICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bTsKKyAgICAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJj
ZUxvYWRQcmlvcml0eUxvdzsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICAgICAgcmV0dXJuIFJlc291
cmNlTG9hZFByaW9yaXR5VmVyeUxvdzsKKyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7Cit9CiAKICNpZm5k
ZWYgTkRFQlVHCiBzdGF0aWMgUmVmQ291bnRlZExlYWtDb3VudGVyIGNhY2hlZFJlc291cmNlTGVh
a0NvdW50ZXIoIkNhY2hlZFJlc291cmNlIik7CkBAIC01NSw2ICs3Nyw3IEBAIHN0YXRpYyBSZWZD
b3VudGVkTGVha0NvdW50ZXIgY2FjaGVkUmVzb3UKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHVybCwgVHlwZSB0eXBlKQogICAgIDogbV91cmwodXJsKQogICAg
ICwgbV9yZXF1ZXN0KDApCisgICAgLCBtX2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JS
ZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1l
KCkpCiAgICAgLCBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6
ZSgwKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA3
MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTkwLDYgKzkxLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nICZ1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KKyAgICAKKyAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBsb2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQog
CiAgICAgdm9pZCBhZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2b2lkIHJl
bW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwpAQCAtMjE3LDYgKzIyMCw3IEBAIHBy
b3RlY3RlZDoKICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5nIG1fYWNjZXB0OwogICAgIFJl
cXVlc3QqIG1fcmVxdWVzdDsKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0
eTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBkb3VibGUgbV9yZXNw
b25zZVRpbWVzdGFtcDsKQEAgLTIzMyw2ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzcG9uc2VBZnRlclJl
dmFsaWRhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwog
ICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4g
UHVyZ2VEZWZhdWx0OyB9CisgICAgdm9pZCBzZXRMb2FkUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJp
b3JpdHkgbG9hZFByaW9yaXR5KSB7IG1fbG9hZFByaW9yaXR5ID0gbG9hZFByaW9yaXR5OyB9CiAK
ICAgICBkb3VibGUgY3VycmVudEFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBmcmVzaG5lc3NMaWZl
dGltZSgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw5ICsxNDcsOSBA
QCBDYWNoZWRGb250KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZv
bnRSZXNvdXJjZSwgdXJsLCBTdHJpbmcoKSkpOwogfQogCi1DYWNoZWRDU1NTdHlsZVNoZWV0KiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKK0NhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgdXJsLCBjaGFyc2V0KSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIHVybCwgY2hhcnNldCwgcHJpb3JpdHkpKTsKIH0K
IAogQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2Vy
Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQpA
QCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCBpc1ByZWxvYWQpCitDYWNo
ZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBpc1ByZWxvYWQpCiB7CiAg
ICAgS1VSTCBmdWxsVVJMID0gbV9kb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKTsKIApAQCAtMjY0
LDcgKzI2NCw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmUKICAg
ICBjaGVja0ZvclJlbG9hZChmdWxsVVJMKTsKIAogICAgIGJvb2wgYWxsb3dGb3JIaXN0b3J5T25s
eVJlc291cmNlcyA9IGNhY2hlUG9saWN5KCkgPT0gQ2FjaGVQb2xpY3lIaXN0b3J5QnVmZmVyOwot
ICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSh0
aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBpc1ByZWxvYWQsIGFsbG93Rm9ySGlzdG9yeU9u
bHlSZXNvdXJjZXMpOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJl
cXVlc3RSZXNvdXJjZSh0aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBwcmlvcml0eSwgaXNQ
cmVsb2FkLCBhbGxvd0Zvckhpc3RvcnlPbmx5UmVzb3VyY2VzKTsKICAgICBpZiAocmVzb3VyY2Up
IHsKICAgICAgICAgLy8gQ2hlY2sgZmluYWwgVVJMIG9mIHJlc291cmNlIHRvIGNhdGNoIHJlZGly
ZWN0cy4KICAgICAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5NjM+LgpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RQcmVsb2EKICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0
IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQpCiAgICAgICAgIGVuY29k
aW5nID0gY2hhcnNldC5pc0VtcHR5KCkgPyBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+
d3JpdGVyKCktPmVuY29kaW5nKCkgOiBjaGFyc2V0OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHVybCwgZW5jb2RpbmcsIHRydWUpOworICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCB1cmwsIGVu
Y29kaW5nLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRydWUpOwogICAgIGlmICgh
cmVzb3VyY2UgfHwgKG1fcHJlbG9hZHMgJiYgbV9wcmVsb2Fkcy0+Y29udGFpbnMocmVzb3VyY2Up
KSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc291cmNlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgp
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVQb2xpY3kuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH5DYWNoZWRS
ZXNvdXJjZUxvYWRlcigpOwogCiAgICAgQ2FjaGVkSW1hZ2UqIHJlcXVlc3RJbWFnZShjb25zdCBT
dHJpbmcmIHVybCk7Ci0gICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdENTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CisgICAgQ2FjaGVk
Q1NTU3R5bGVTaGVldCogcmVxdWVzdENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBSZXNv
dXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHJl
cXVlc3RVc2VyQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0KTsKICAgICBDYWNoZWRTY3JpcHQqIHJlcXVlc3RTY3JpcHQoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgQ2FjaGVkRm9udCogcmVxdWVzdEZvbnQo
Y29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtMTAyLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHByaW50UHJlbG9hZFN0YXRzKCk7CiAgICAgCiBwcml2YXRlOgotICAgIENhY2hlZFJlc291cmNl
KiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOworICAgIENh
Y2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9h
ZCA9IGZhbHNlKTsKICAgICB2b2lkIHJlcXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIHZvaWQg
Y2hlY2tGb3JSZWxvYWQoY29uc3QgS1VSTCYpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEwICs5NSwxMCBAQCBzdGF0aWMgQ2Fj
aGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgcmV0dXJuIDA7CiB9CiAKLUNhY2hl
ZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9h
ZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGJvb2wgcmVxdWVzdElzUHJlbG9h
ZCwgYm9vbCBmb3JIaXN0b3J5KQorQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgcmVxdWVzdElzUHJlbG9h
ZCwgYm9vbCBmb3JIaXN0b3J5KQogewotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJNZW1vcnlD
YWNoZTo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQgJyVzJywgcHJlbG9hZD0ldSwgZm9y
SGlzdG9yeT0ldSIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNoYXJzZXQubGF0aW4x
KCkuZGF0YSgpLCByZXF1ZXN0SXNQcmVsb2FkLCBmb3JIaXN0b3J5KTsKLQorICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQg
JyVzJywgcHJpb3JpdHk9JWQsIHByZWxvYWQ9JXUsIGZvckhpc3Rvcnk9JXUiLCB1cmwuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpLCBjaGFyc2V0LmxhdGluMSgpLmRhdGEoKSwgcHJpb3JpdHksIHJl
cXVlc3RJc1ByZWxvYWQsIGZvckhpc3RvcnkpOworICAgIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBy
ZWFsbHkgbmVlZCB0byBzcGVjaWFsLWNhc2UgYW4gZW1wdHkgVVJMPwogICAgIC8vIFdvdWxkIGl0
IGJlIGJldHRlciB0byBqdXN0IGdvIG9uIHdpdGggdGhlIGNhY2hlIGNvZGUgYW5kIGxldCBpdCBm
YWlsIGxhdGVyPwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtMTQ0LDYgKzE0NCwxMCBAQCBD
YWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvCiAgICAgICAgIC8vIEZJWE1F
OiBDYWNoZWRSZXNvdXJjZSBzaG91bGQganVzdCB1c2Ugbm9ybWFsIHJlZmNvdW50aW5nIGluc3Rl
YWQuCiAgICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKHRydWUpOwogICAgICAgICAKKyAgICAg
ICAgLy8gRGVmYXVsdCBwcmlvcml0eSBiYXNlZCBvbiByZXNvdXJjZSB0eXBlIGlzIHVzZWQgaWYg
dGhlIHJlcXVlc3QgZGlkIG5vdCBzcGVjaWZ5IG9uZS4KKyAgICAgICAgaWYgKHByaW9yaXR5ICE9
IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCkKKyAgICAgICAgICAgIHJlc291cmNlLT5z
ZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOworCiAgICAgICAgIHJlc291cmNlLT5sb2FkKGNhY2hl
ZFJlc291cmNlTG9hZGVyKTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpKSB7CkBAIC0xNjIsNiArMTY2LDEyIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlD
YWNoZTo6cmVxdWVzdFJlc28KICAgICAgICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKGZhbHNl
KTsKICAgICAgICAgICAgIHJlc291cmNlLT5zZXRDYWNoZWRSZXNvdXJjZUxvYWRlcihjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhN
RTogVXBncmFkaW5nIHRoZSBwcmlvcml0eSBkb2Vzbid0IHJlYWxseSBkbyBtdWNoIHNpbmNlIHRo
ZSBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZG9lcyBub3QgY3VycmVudGx5CisgICAgICAgIC8vIGFs
bG93IGNoYW5naW5nIHByaW9yaXRpZXMuIFRoaXMgbWlnaHQgYmVjb21lIGltcG9ydGFudCBpZiB3
ZSBtYWtlIHNjaGVkdWxpbmcgcHJpb3JpdGllcworICAgICAgICAvLyBtb3JlIGR5bmFtaWMuCisg
ICAgICAgIGlmIChyZXNvdXJjZS0+bG9hZFByaW9yaXR5KCkgPCBwcmlvcml0eSkKKyAgICAgICAg
ICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwogICAgIH0KIAogICAgIGlm
ICghZGlzYWJsZWQoKSkgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCShyZXZp
c2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXF1ZXN0IHJl
c291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3aWxsIGJlIGluaXRpYXRlZCBhbmQgYSBj
YWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0IGlzIG5vdAogICAgIC8vIGZvdW5kIGlu
IHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBib29sIGZvckhpc3Rv
cnkgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGJvb2wgaXNQcmVsb2Fk
ID0gZmFsc2UsIGJvb2wgZm9ySGlzdG9yeSA9IGZhbHNlKTsKIAogICAgIENhY2hlZENTU1N0eWxl
U2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNzM2MzIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMi0wOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NzIyMDk0PiAKKyAgICAgICAgRGVmZXIgbG9hZGluZyBwcmludCBzdHls
ZXNoZWV0cworICAgICAgICAKKyAgICAgICAgVGhlc2UgdGVzdHMgZG9uJ3QgYWN0dWFsbHkgdGVz
dCBkZWZlcnJpbmcsIG9ubHkgdGhhdCB0aGUgY29ycmVjdCByZXNvdXJjZXMgYXJlIGxvYWRlZC4K
KyAgICAgICAgQSBwcm9wZXIgbG9hZCBvcmRlcmluZyB0ZXN0IHdpbGwgbmVlZCBzb21lIERSVCBj
aGFuZ2VzIHRvbywgYmV0dGVyIGRvbmUgc2VwYXJhdGVseS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbWVkaWEtcHJlbG9hZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNo
ZWV0LW1lZGlhLXByZWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2Nh
bC9saW5rLXN0eWxlc2hlZXQtbWVkaWEuaHRtbDogQWRkZWQuCisKIDIwMTAtMTItMDkgIEJyaWFu
IFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIExhbmQgZmFpbGlu
ZyBleHBlY3RlZCByZXN1bHRzIGZvciBlZGl0aW5nIHRlc3RzIHRoYXQgaGF2ZSBiZWVuIGZhaWxp
bmcgc2luY2UgdGhleSB3ZXJlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xp
bmstc3R5bGVzaGVldC1tZWRpYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbWVkaWEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hl
ZXQtbWVkaWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitDaGVj
ayB0aGF0IG9ubHkgdGhlIHNjcmVlbiBhbmQgcHJpbnQgc2hlZXRzIGFyZSBsb2FkZWQuCitSZXNv
dXJjZSByZXF1ZXN0czoKKworCitsb2FkLTEuY3NzCitsb2FkLTIuY3NzCitsb2FkLTMuY3NzCits
b2FkLTQuY3NzCitsb2FkLTUuY3NzCitsb2FkLTYuY3NzCitsb2FkLTcuY3NzCittZWRpYS1xdWVy
eS1zaG91bGQtbm90LWxvYWRlZC5jc3MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXBy
ZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbWVkaWEtcHJlbG9hZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK0NoZWNrIHRoYXQgb25seSB0aGUgc2NyZWVuIGFuZCBw
cmludCBzaGVldHMgYXJlIGxvYWRlZC4KK1Jlc291cmNlIHJlcXVlc3RzOgorCisKK2xvYWQtMS5j
c3MKK2xvYWQtMi5jc3MKK2xvYWQtMy5jc3MKK2xvYWQtNC5jc3MKK2xvYWQtNS5jc3MKK2xvYWQt
Ni5jc3MKK2xvYWQtNy5jc3MKK21lZGlhLXF1ZXJ5LXNob3VsZC1ub3QtbG9hZGVkLmNzcwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbWVkaWEtcHJl
bG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgi
PgorICA8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gQ2Fs
bENvbW1hbmQoY21kKQorICAgIHsKKyAgICAgdHJ5IHsKKyAgICAgICAgIHZhciByZXEgPSBuZXcg
WE1MSHR0cFJlcXVlc3Q7CisgICAgICAgICByZXEub3BlbigiR0VUIiwgImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9IiArIGNtZCwg
ZmFsc2UpOworICAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAgICByZXR1cm4gcmVxLnJl
c3BvbnNlVGV4dDsKKyAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgIHJldHVybiAiIjsKKyAg
ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGVuZFRlc3QoKQorICAgIHsKKyAgICAgICAgZ2V0
UmVzb3VyY2VMb2coKTsKKyAgICAgICAgQ2FsbENvbW1hbmQoImNsZWFyLXJlc291cmNlLXJlcXVl
c3QtbG9nIik7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMb2coKQorICAgIHsKKyAgICAgICAgdmFyIGxvZyA9IENh
bGxDb21tYW5kKCJnZXQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICAgICAgdmFyIGxvZ0xp
bmVzID0gbG9nLnNwbGl0KCdcbicpOworICAgICAgICBsb2dMaW5lcy5zb3J0KCk7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQgPSBsb2dMaW5lcy5q
b2luKCdcbicpOworICAgIH0KKworICAgIENhbGxDb21tYW5kKCJzdGFydC1yZXNvdXJjZS1yZXF1
ZXN0LWxvZyIpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZW5kVGVzdCwg
ZmFsc2UpOworICA8L3NjcmlwdD4KKyAgCisgIDwhLS0gVGhpcyBleHRlcm5hbCBzY3JpcHQgbG9h
ZCB0cmlnZ2VycyB0aGUgcHJlbG9hZCBzY2FubmVyLS0+CisgIDxzY3JpcHQgc3JjPSJkb2VzX25v
dF9leGlzdC5qcyI+PC9zY3JpcHQ+CisKKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtMS5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0iIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bG9h
ZC0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhbGwiIGhyZWY9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9
bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1sb2FkLTMuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxl
c2hlZXQgbWVkaWE9InByaW50IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9
bG9hZC00LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4iIGhyZWY9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1sb2FkLTUuY3NzIj4KKyAgPGxpbmsgcmVs
PXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMXB4KSIgaHJlZj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtNi5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0iYnJhaWxsZSwgc2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bG9hZC03LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJz
Y3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDAwMDBweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNl
LXJlcXVlc3QmcGF0aD1tZWRpYS1xdWVyeS1zaG91bGQtbm90LWxvYWRlZC5jc3MiPgorICA8bGlu
ayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYXVyYWwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJl
cXVlc3QmcGF0aD1ub3QtbG9hZGVkLTEuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVk
aWE9ImJyYWlsbGUiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29y
ay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1ub3QtbG9h
ZGVkLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImhhbmRoZWxkIiBocmVm
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9j
b21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC0zLmNzcyI+CisgIDxs
aW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJwcm9qZWN0aW9uIiBocmVmPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNv
dXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC00LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNo
ZWV0IG1lZGlhPSJ0dHkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1ub3Qt
bG9hZGVkLTUuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InR2IiBocmVmPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21t
YW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC02LmNzcyI+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgQ2hlY2sgdGhhdCBvbmx5IHRoZSBzY3JlZW4gYW5kIHByaW50IHNoZWV0cyBh
cmUgbG9hZGVkLgorCisgIDxoMj5SZXNvdXJjZSByZXF1ZXN0czo8L2gyPgorICA8cHJlIGlkPSJy
ZXN1bHQiPlJlcXVlc3QgbG9nIGdvZXMgaGVyZSBpbiBEUlQ8L3ByZT4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1l
ZGlhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5r
LXN0eWxlc2hlZXQtbWVkaWEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKyAgPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIENhbGxDb21tYW5kKGNtZCkKKyAg
ICB7CisgICAgIHRyeSB7CisgICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0Owor
ICAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPSIgKyBjbWQsIGZhbHNlKTsKKyAgICAgICAg
IHJlcS5zZW5kKG51bGwpOworICAgICAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7CisgICAg
IH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICByZXR1cm4gIiI7CisgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBlbmRUZXN0KCkKKyAgICB7CisgICAgICAgIGdldFJlc291cmNlTG9nKCk7Cisg
ICAgICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOworCisgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFJl
c291cmNlTG9nKCkKKyAgICB7CisgICAgICAgIHZhciBsb2cgPSBDYWxsQ29tbWFuZCgiZ2V0LXJl
c291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgICAgIHZhciBsb2dMaW5lcyA9IGxvZy5zcGxpdCgn
XG4nKTsKKyAgICAgICAgbG9nTGluZXMuc29ydCgpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gbG9nTGluZXMuam9pbignXG4nKTsKKyAgICB9
CisKKyAgICBDYWxsQ29tbWFuZCgic3RhcnQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGVuZFRlc3QsIGZhbHNlKTsKKyAgPC9zY3Jp
cHQ+CisKKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVx
dWVzdCZwYXRoPWxvYWQtMS5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iIiBo
cmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBo
cD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bG9hZC0yLmNzcyI+CisgIDxsaW5r
IHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhbGwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9y
ZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVl
c3QmcGF0aD1sb2FkLTMuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InByaW50
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bG9hZC00LmNzcyI+CisgIDxs
aW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4iIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNl
LXJlcXVlc3QmcGF0aD1sb2FkLTUuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9
InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMXB4KSIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVx
dWVzdCZwYXRoPWxvYWQtNi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYnJh
aWxsZSwgc2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdv
cmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bG9hZC03
LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lk
dGg6IDEwMDAwMDBweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YS1xdWVyeS1zaG91bGQtbm90LWxvYWRlZC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBt
ZWRpYT0iYXVyYWwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29y
ay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1ub3QtbG9h
ZGVkLTEuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUiIGhyZWY9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1ub3QtbG9hZGVkLTIuY3NzIj4KKyAgPGxp
bmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImhhbmRoZWxkIiBocmVmPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJj
ZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC0zLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0
IG1lZGlhPSJwcm9qZWN0aW9uIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9
bm90LWxvYWRlZC00LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJ0dHkiIGhy
ZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhw
P2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1ub3QtbG9hZGVkLTUuY3NzIj4KKyAg
PGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InR2IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC02LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgQ2hlY2sg
dGhhdCBvbmx5IHRoZSBzY3JlZW4gYW5kIHByaW50IHNoZWV0cyBhcmUgbG9hZGVkLgorCisgIDxo
Mj5SZXNvdXJjZSByZXF1ZXN0czo8L2gyPgorICA8cHJlIGlkPSJyZXN1bHQiPlJlcXVlc3QgbG9n
IGdvZXMgaGVyZSBpbiBEUlQ8L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76113</attachid>
            <date>2010-12-09 12:40:05 -0800</date>
            <delta_ts>2010-12-13 06:08:20 -0800</delta_ts>
            <desc>fixed a bug that was causing drt crashes</desc>
            <filename>defer-print-stylesheets-2.patch</filename>
            <type>text/plain</type>
            <size>50191</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzYzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjggQEAKKzIwMTAtMTItMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODcyMjA5ND4gCisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVz
aGVldHMKKyAgICAgICAgCisgICAgICAgIC0gTWFrZSBwcmVsb2FkIHNjYW5uZXIgc2tpcCBzdHls
ZXNoZWV0cyB3aXRoIG5vbi1zY3JlZW4gbWVkaWEgdHlwZXMuCisgICAgICAgIC0gTWFrZSBsaW5r
IGVsZW1lbnQgc2tpcCBzdHlsZXNoZWV0cyBmb3IgbWVkaWEgdHlwZXMgb3RoZXIgdGhhbiBzY3Jl
ZW4gb3IgcHJpbnQuCisgICAgICAgIC0gTWFrZSBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IG5vbi1k
ZWZhdWx0IGxvYWQgcHJpb3JpdHkgZnJvbSB0aGUgY2xpZW50LgorICAgICAgICAtIFVzZSB0aGlz
IG1lY2hhbmlzbSB0byBsb2FkIHByaW50IHN0eWxlc2hlZXRzIHVzaW5nIHZlcnkgbG93IHByaW9y
aXR5IHNvIHRoZXkgZ2V0IGxvYWRlZCBhZnRlciBldmVyeXRoaW5nIGVsc2UuCisgICAgICAgIC0g
TW92ZSBkZWZhdWx0IHByaW9yaXR5IGNvZGUgZnJvbSBMb2FkZXIgdG8gQ2FjaGVkUmVzb3VyY2Uu
CisgICAgICAgIC0gTW92ZSBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlByaW9yaXR5IGVudW0gdG8g
YSBzZXBhcmF0ZSBmaWxlIChhcyBSZXNvdXJjZUxvYWRQcmlvcml0eSkuCisKKyAgICAgICAgVGVz
dHM6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbWVkaWEuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5
RXZhbHVhdG9yOjpldmFsKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oOgor
ICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVF
bGVtZW50OjpjcmVhdGVTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6UHJlbG9hZFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cHJvY2Vzc0F0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6bGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OlByZWxvYWRUYXNrOjpwcmVsb2FkKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRQcmlvcml0eS5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlv
bjo6fkhvc3RJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb246OnJlbW92ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6aGFzUmVxdWVz
dHMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpyZXF1ZXN0
c1BlbmRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpsb2FkUHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OnNldExvYWRQcmlvcml0eSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UHJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2FkKToKKwogMjAxMC0xMi0wOSAgQW50b25p
byBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IGJ5
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzM1MTApCisrKyBX
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsNyArNDg1LDcgQEAg
X19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zVwogX19aTjdXZWJDb3JlMjFC
YWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9fWk43V2ViQ29yZTIxUGxhdGZv
cm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlMwXzRUeXBlRWIKIF9f
Wk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdOU0V2ZW50Ci1fX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlMwXzhQcmlv
cml0eUUKK19fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RQogX19aTjdXZWJDb3JlMjFSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNfNUZyYW1lRVBOU18z
Mk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
CiBfX1pON1dlYkNvcmUyMVNWR0RvY3VtZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0aW9uQXRU
aW1lRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNWR1NNSUxFbGVtZW50RWQKIF9fWk43V2ViQ29yZTIx
U2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBL
MTNPcGFxdWVKU1ZhbHVlCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQ3Niw2ICs1NDc2LDcgQEAKIAkJRTFG
RjU3QTYwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTUwRjAxMjU2QjAwODkx
RUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwICovOyB9OwogCQlFNDE1RjE2OTBEOUExNjVEMDAz
M0NFOTcgLyogRE9NRWxlbWVudFRpbWVDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE1RjE2ODBEOUExNjVEMDAzM0NFOTcgLyogRE9NRWxl
bWVudFRpbWVDb250cm9sLmggKi87IH07CiAJCUU0MTVGMTg0MEQ5QTFBODMwMDMzQ0U5NyAvKiBF
bGVtZW50VGltZUNvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wu
aCAqLzsgfTsKKwkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9y
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI5
NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDQ2MTNBMTBDRDYzMzEw
MDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ2MTM4RjBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1
ZGlvRWxlbWVudC5jcHAgKi87IH07CiAJCUU0NDYxM0EyMENENjMzMTAwMEZBREE3NSAvKiBIVE1M
QXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDQ2MTM5MDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlvRWxlbWVudC5oICovOyB9
OwogCQlFNDQ2MTNBNDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ2MTM5MjBDRDYz
MzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMTU5NSw2ICsx
MTU5Niw3IEBACiAJCUU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRy
b2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudFRpbWVDb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJD
NSAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDFFQTAzOTExOTgzNzQ5MDA3MTBCQzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQyOTVGQTMxMkIwNjE0RTAwRDFBQ0UwIC8qIFJl
c291cmNlTG9hZFByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlTG9hZFByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYx
MzhGMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDQ2MTM5MDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTEF1ZGlv
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQXVkaW9FbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYxMzkxMENENjMzMTAwMEZB
REE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1M
QXVkaW9FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDc4LDYg
KzE3NDgwLDcgQEAKIAkJCQk2NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2Fk
ZXIuaCAqLywKIAkJCQk5NzNFMzI1NDEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwICovLAogCQkJCTk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxv
YWROb3RpZmllci5oICovLAorCQkJCUU0Mjk1RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJj
ZUxvYWRQcmlvcml0eS5oICovLAogCQkJCUQwQ0U1OEY2MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwICovLAogCQkJCUQwQ0U1OEY3MTI1RTRDQzIwMEYzRjE5OSAv
KiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCAqLywKIAkJCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlE
NjUgLyogU2lua0RvY3VtZW50LmNwcCAqLywKQEAgLTIxNTE1LDYgKzIxNTE4LDcgQEAKIAkJCQk0
OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8q
IFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuY3BwCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0lt
YWdlVmFsdWU6OmNhY2hlZEkKICAgICAgICAgICAgIGNhY2hlZEltYWdlID0gbG9hZGVyLT5yZXF1
ZXN0SW1hZ2UodXJsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIGZpbmQgYSB3YXkgdG8gbWFrZSB0aGVzZSBpbWFnZXMgc2l0IGluIHRoZWlyIG93biBtZW1v
cnkgcGFydGl0aW9uLCBzaW5jZSB0aGV5IGFyZSB1c2VyIGFnZW50IGltYWdlcy4KLSAgICAgICAg
ICAgIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihjYWNoZSgpLT5yZXF1
ZXN0UmVzb3VyY2UoMCwgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSkpOworICAgICAgICAgICAgY2FjaGVkSW1hZ2UgPSBz
dGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSgwLCBDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0
cmluZygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChjYWNoZWRJbWFnZSkgewpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBhcHBs
eVJlc3RyaWN0b3IoTWVkaWFRdWVyeTo6CiAgICAgcmV0dXJuIHIgPT0gTWVkaWFRdWVyeTo6Tm90
ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChj
b25zdCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3Rv
cikgY29uc3QKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChQYXNzUmVmUHRyPE1lZGlh
TGlzdD4gbWVkaWFMaXN0LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yKSBjb25zdAog
ewogICAgIGlmICghbWVkaWFMaXN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIG1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoY29uc3QgY2hhciogbWVkaWFUeXBl
VG9NYXRjaCkgY29uc3Q7CiAKICAgICAvKiogRXZhbHVhdGVzIGEgbGlzdCBvZiBtZWRpYSBxdWVy
aWVzICovCi0gICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhTGlzdCosIENTU1N0eWxlU2VsZWN0b3Iq
ID0gMCkgY29uc3Q7CisgICAgYm9vbCBldmFsKFBhc3NSZWZQdHI8TWVkaWFMaXN0PiwgQ1NTU3R5
bGVTZWxlY3RvciogPSAwKSBjb25zdDsKIAogICAgIC8qKiBFdmFsdWF0ZXMgbWVkaWEgcXVlcnkg
c3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0ICovCiAg
ICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhUXVlcnlFeHAqKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
ZG9tL1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBTdHlsZUVsZW1lbnQ6OmNy
ZWF0ZVNoZWV0KEVsZW1lbnQqIAogICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYUxpc3Qg
PSBNZWRpYUxpc3Q6OmNyZWF0ZShtZWRpYSgpLCBlLT5pc0hUTUxFbGVtZW50KCkpOwogICAgICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIHRydWUpOwogICAgICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiLCB0cnVlKTsKLSAgICAgICAg
aWYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3QuZ2V0KCkpIHx8IHByaW50RXZhbC5ldmFsKG1l
ZGlhTGlzdC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3Qp
IHx8IHByaW50RXZhbC5ldmFsKG1lZGlhTGlzdCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50LT5h
ZGRQZW5kaW5nU2hlZXQoKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7CiAgICAgICAg
ICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGUsIFN0cmluZygpLCBLVVJMKCks
IGRvY3VtZW50LT5pbnB1dEVuY29kaW5nKCkpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNCwxMCArMjI0LDIzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNo
ZWV0KCk7CiAKLSAgICAvLyBTdHlsZXNoZWV0Ci0gICAgLy8gVGhpcyB3YXMgYnVnZ3kgYW5kIHdv
dWxkIGluY29ycmVjdGx5IG1hdGNoIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIj4sIHdoaWNoIGhhcyBh
IGRpZmZlcmVudCBzcGVjaWZpZWQgbWVhbmluZy4gLWR3aAotICAgIGlmIChtX2Rpc2FibGVkU3Rh
dGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2Nl
cHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpICYm
IGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIGFs
c28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25lIGRvY3VtZW50cworICAg
IC8vIERvbid0IGxvYWQgYW55dGhpbmcgZWxzZSB0aGFuIHNjcmVlbiBhbmQgcHJpbnQgc2hlZXRz
LiBMb2FkIHNoZWV0cyBldmVuIGlmIHRoZSBjb21wbGV4IHF1ZXJpZXMgZXZhbHVhdGUgdG8gZmFs
c2UuCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG9ubHkgbG9hZCBzaGVldHMgd2l0aCBkeW5h
bWljIHF1ZXJpZXMgdGhhdCBtYXkgYWN0dWFsbHkgZXZhbHVhdGUgdG8gdHJ1ZSBvbiB0aGUgY3Vy
cmVudCBwbGF0Zm9ybS4KKyAgICBib29sIG1lZGlhTWF0Y2hlcyA9IHRydWU7CisgICAgYm9vbCBt
ZWRpYUlzUHJpbnQgPSBmYWxzZTsKKyAgICBpZiAoIW1fbWVkaWEuaXNFbXB0eSgpKSB7CisgICAg
ICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gTWVkaWFMaXN0OjpjcmVhdGVBbGxvd2luZ0Rl
c2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOworICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNj
cmVlbkV2YWx1YXRvcigic2NyZWVuIiwgdHJ1ZSk7CisgICAgICAgIG1lZGlhTWF0Y2hlcyA9IHNj
cmVlbkV2YWx1YXRvci5ldmFsKG1lZGlhKTsKKyAgICAgICAgaWYgKCFtZWRpYU1hdGNoZXMpIHsK
KyAgICAgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsdWF0b3IoInByaW50Iiwg
dHJ1ZSk7CisgICAgICAgICAgICBtZWRpYUlzUHJpbnQgPSBwcmludEV2YWx1YXRvci5ldmFsKG1l
ZGlhKTsKKyAgICAgICAgICAgIG1lZGlhTWF0Y2hlcyA9IG1lZGlhTWF0Y2hlcyB8fCBtZWRpYUlz
UHJpbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKG1fZGlzYWJsZWRTdGF0ZSAh
PSBEaXNhYmxlZCAmJiAobV9yZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgfHwgKGFjY2VwdElm
VHlwZUNvbnRhaW5zVGV4dENTUyAmJiB0eXBlLmNvbnRhaW5zKCJ0ZXh0L2NzcyIpKSkgCisgICAg
ICAgICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpICYmIG1lZGlhTWF0
Y2hlcykgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBnZXRBdHRyaWJ1dGUo
Y2hhcnNldEF0dHIpOwogICAgICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkgJiYgZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKQEAgLTI1MCw3ICsyNjMsOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgICAgIGlmICghaXNBbHRlcm5hdGUoKSkKICAgICAgICAgICAgIGRvY3VtZW50
KCktPmFkZFBlbmRpbmdTaGVldCgpOwogCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVTaGVldChtX3VybCwg
Y2hhcnNldCk7CisgICAgICAgIC8vIExvYWQgcHJpbnQgc3R5bGVzaGVldHMgd2l0aCBsb3cgcHJp
b3JpdHkgc28gdGhleSBkb24ndCBhZmZlY3Qgbm9ybWFsIHBhZ2UgbG9hZGluZy4KKyAgICAgICAg
UmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBtZWRpYUlzUHJpbnQgPyBSZXNvdXJjZUxv
YWRQcmlvcml0eVZlcnlMb3cgOiBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQ7CisgICAg
ICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5y
ZXF1ZXN0Q1NTU3R5bGVTaGVldChtX3VybCwgY2hhcnNldCwgcHJpb3JpdHkpOwogICAgICAgICAK
ICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5h
ZGRDbGllbnQodGhpcyk7CkluZGV4OiBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1
ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiAr
NDksNyBAQCBwdWJsaWM6CiAgICAgUHJlbG9hZFRhc2soY29uc3QgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgOiBtX3RhZ05hbWUodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNp
emUoKSkKICAgICAgICAgLCBtX2xpbmtJc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICwgbV9s
aW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKHRydWUpCiAgICAgewogICAgICAgICBwcm9jZXNzQXR0
cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwogICAgIH0KQEAgLTcyLDYgKzc1LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwog
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVsQXR0cikKICAgICAg
ICAgICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVO
YW1lID09IG1lZGlhQXR0cikKKyAgICAgICAgICAgICAgICAgICAgbV9saW5rTWVkaWFBdHRyaWJ1
dGVNYXRjaGVzID0gbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyhhdHRyaWJ1dGVWYWx1ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC04Myw2ICs4OCwxOSBAQCBwdWJsaWM6
CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmlidXRl
VmFsdWUsIHJlbCk7CiAgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5t
X2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAg
ICAgfQorICAgIAorICAgIGJvb2wgbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIGF0dHJpYnV0ZVZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBSZWZQdHI8TWVkaWFM
aXN0PiBtZWRpYUxpc3QgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50
YXgoYXR0cmlidXRlVmFsdWUpOworICAgIAorICAgICAgICAvLyBPbmx5IHByZWxvYWQgc2NyZWVu
IG1lZGlhIHN0eWxlc2hlZXRzLiBVc2VkIHRoaXMgd2F5LCB0aGUgZXZhbHVhdG9yIGV2YWx1YXRl
cyB0byBmYWxzZSBmb3IgYW55IAorICAgICAgICAvLyBydWxlcyBjb250YWluaW5nIGNvbXBsZXgg
cXVlcmllcyAoZnVsbCBldmFsdWF0aW9uIGlzIHBvc3NpYmxlIGJ1dCBpdCByZXF1aXJlcyBmcmFt
ZSBhbmQgc3R5bGUgc2VsZWN0b3Igd2hpY2gKKyAgICAgICAgLy8gbWF5IGJlIHByb2JsZW1hdGlj
IGhlcmUpLiBDYXNlcyB3aGVyZSBwaWNraW5nIHRoZXNlIGZvciBwcmVsb2FkaW5nIHdvdWxkIGhl
bHAgYXJlIHByb2JhYmx5IHJhcmUuCisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgbWVkaWFR
dWVyeUV2YWx1YXRvcigic2NyZWVuIiwgZmFsc2UpOworICAgICAgICByZXR1cm4gbWVkaWFRdWVy
eUV2YWx1YXRvci5ldmFsKG1lZGlhTGlzdCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRVcmxUb0xv
YWQoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKICAgICB7CkBAIC0xMDMsNyArMTIxLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2Fj
aGVkUmVzb3VyY2U6OlNjcmlwdCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5
KTsKICAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGltZ1RhZykgCiAgICAgICAgICAgICBj
YWNoZWRSZXNvdXJjZUxvYWRlci0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJj
ZSwgbV91cmxUb0xvYWQsIFN0cmluZygpLCBzY2FubmluZ0JvZHkpOwotICAgICAgICBlbHNlIGlm
IChtX3RhZ05hbWUgPT0gbGlua1RhZyAmJiBtX2xpbmtJc1N0eWxlU2hlZXQpIAorICAgICAgICBl
bHNlIGlmIChtX3RhZ05hbWUgPT0gbGlua1RhZyAmJiBtX2xpbmtJc1N0eWxlU2hlZXQgJiYgbV9s
aW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKSAKICAgICAgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCBtX3VybFRvTG9hZCwg
bV9jaGFyc2V0LCBzY2FubmluZ0JvZHkpOwogICAgIH0KIApAQCAtMTE0LDYgKzEzMiw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsVG9Mb2FkOwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAg
ICAgYm9vbCBtX2xpbmtJc1N0eWxlU2hlZXQ7CisgICAgYm9vbCBtX2xpbmtNZWRpYUF0dHJpYnV0
ZU1hdGNoZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
MCw3ICszMjAsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAK
ICAgICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFja3MgZnJvbSBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBsb2FkZXIuCiAg
ICAgICAgIG1fbG9hZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhp
cywgcmVxdWVzdCwgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpNZWRpdW0sIHNlY3VyaXR5Q2hlY2ss
IHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlmZkNvbnRlbnQpOworICAgICAgICBtX2xvYWRlciA9IHJl
c291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2RvY3VtZW50
LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSwgc2Vj
dXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsIHNuaWZmQ29udGVudCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRQcmlv
cml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFByaW9yaXR5
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRQcmlvcml0eS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZXNv
dXJjZUxvYWRQcmlvcml0eV9oCisjZGVmaW5lIFJlc291cmNlTG9hZFByaW9yaXR5X2gKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsgCisgICAgUmVz
b3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCAKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywg
CisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIAorICAgIFJlc291cmNlTG9hZFByaW9y
aXR5SGlnaCwgCisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3dlc3QgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eVZlcnlMb3csIAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCA9IFJlc291
cmNlTG9hZFByaW9yaXR5SGlnaCwgCisgICAgLy8gVGhlIHVucmVzb2x2ZWQgcHJpb3JpdHkgaXMg
aGVyZSBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBjbGllbnRzLiBJdCBzaG91bGQgbm90IGJl
IHBhc3NlZCB0byB0aGUgUmVzb3VyY2VMb2FkU2NoZWR1bGVyLgorICAgIFJlc291cmNlTG9hZFBy
aW9yaXR5VW5yZXNvbHZlZCwKK307CisKK30KKworI2VuZGlmCisKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UmVzb3VyY2VMb2FkU2NoZWQKICNlbmRp
ZgogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcmlvcml0
eSBwcmlvcml0eSwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFzc1JlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJl
c291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJp
b3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKIHsKICAgICBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgaWYgKGxvYWRlcikKQEAgLTk0LDcg
Kzk0LDcgQEAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUgogewogICAg
IFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAg
aWYgKGxvYWRlcikKLSAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgTG93KTsKKyAg
ICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cp
OwogICAgIHJldHVybiBsb2FkZXI7CiB9CiAKQEAgLTEwMywxMSArMTAzLDEyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjphZGRNYWluUmVzb3UKICAgICBob3N0Rm9yVVJMKHJlc291cmNl
TG9hZGVyLT51cmwoKSwgQ3JlYXRlSWZOb3RGb3VuZCktPmFkZExvYWRJblByb2dyZXNzKHJlc291
cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9h
ZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFByaW9yaXR5IHByaW9yaXR5KQordm9p
ZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVz
b3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIEFTU0VS
VChyZXNvdXJjZUxvYWRlcik7CisgICAgQVNTRVJUKHByaW9yaXR5ICE9IFJlc291cmNlTG9hZFBy
aW9yaXR5VW5yZXNvbHZlZCk7CiAjaWYgIVJFUVVFU1RfTUFOQUdFTUVOVF9FTkFCTEVECi0gICAg
cHJpb3JpdHkgPSBIaWdoZXN0UHJpb3JpdHk7CisgICAgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUhpZ2hlc3Q7CiAjZW5kaWYKIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmxvYWQgcmVzb3VyY2UgJXAgJyVzJyIsIHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKQEAgLTEx
NSw3ICsxMTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkCiAg
ICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2No
ZWR1bGUocmVzb3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotICAgIGlmIChwcmlvcml0eSA+IExv
dyB8fCAhcmVzb3VyY2VMb2FkZXItPnVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgKHBy
aW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CisgICAgaWYgKHByaW9yaXR5ID4gUmVz
b3VyY2VMb2FkUHJpb3JpdHlMb3cgfHwgIXJlc291cmNlTG9hZGVyLT51cmwoKS5wcm90b2NvbElu
SFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdyAmJiAh
aGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNv
dXJjZXMgaW1tZWRpYXRlbHkuCiAgICAgICAgIHNlcnZlUGVuZGluZ1JlcXVlc3RzKGhvc3QsIHBy
aW9yaXR5KTsKICAgICB9IGVsc2UgewpAQCAtMTQ4LDcgKzE0OSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblIKICAgICBvbGRIb3N0LT5yZW1vdmUocmVzb3VyY2VM
b2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVx
dWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5KQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlv
cml0eSkKIHsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cy4gbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM9JWQi
LCBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cyk7IAogICAgIGlmIChtX2lzU3VzcGVuZGlu
Z1BlbmRpbmdSZXF1ZXN0cykKQEAgLTE3NCwxMiArMTc1LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmcKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFByaW9y
aXR5IG1pbmltdW1Qcmlvcml0eSkKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFJlc291cmNlTG9hZFByaW9yaXR5
IG1pbmltdW1Qcmlvcml0eSkKIHsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyBIb3N0SW5mb3JtYXRpb24ubV9uYW1l
PSclcyciLCBob3N0LT5uYW1lKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIGZvciAoaW50IHBy
aW9yaXR5ID0gSGlnaGVzdFByaW9yaXR5OyBwcmlvcml0eSA+PSBtaW5pbXVtUHJpb3JpdHk7IC0t
cHJpb3JpdHkpIHsKLSAgICAgICAgSG9zdEluZm9ybWF0aW9uOjpSZXF1ZXN0UXVldWUmIHJlcXVl
c3RzUGVuZGluZyA9IGhvc3QtPnJlcXVlc3RzUGVuZGluZygoUHJpb3JpdHkpIHByaW9yaXR5KTsK
KyAgICBmb3IgKGludCBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcHJp
b3JpdHkgPj0gbWluaW11bVByaW9yaXR5OyAtLXByaW9yaXR5KSB7CisgICAgICAgIEhvc3RJbmZv
cm1hdGlvbjo6UmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcgPSBob3N0LT5yZXF1ZXN0c1Bl
bmRpbmcoKFJlc291cmNlTG9hZFByaW9yaXR5KSBwcmlvcml0eSk7CiAKICAgICAgICAgd2hpbGUg
KCFyZXF1ZXN0c1BlbmRpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0gcmVxdWVzdHNQZW5kaW5nLmZpcnN0KCk7CkBAIC0y
MzUsMTEgKzIzNiwxMSBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6
CiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6fkhvc3RJbmZvcm1hdGlv
bigpCiB7CiAgICAgQVNTRVJUKG1fcmVxdWVzdHNMb2FkaW5nLmlzRW1wdHkoKSk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBwID0gMDsgcCA8PSBIaWdoZXN0UHJpb3JpdHk7IHArKykKKyAgICBmb3IgKHVu
c2lnbmVkIHAgPSAwOyBwIDw9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcCsrKQogICAg
ICAgICBBU1NFUlQobV9yZXF1ZXN0c1BlbmRpbmdbcF0uaXNFbXB0eSgpKTsKIH0KICAgICAKLXZv
aWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb246OnNjaGVkdWxlKFJlc291
cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgUHJpb3JpdHkgcHJpb3JpdHkpCit2b2lkIFJlc291
cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpzY2hlZHVsZShSZXNvdXJjZUxvYWRl
ciogcmVzb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAg
IG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XS5hcHBlbmQocmVzb3VyY2VMb2FkZXIpOwogfQpA
QCAtMjU3LDcgKzI1OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3Jt
YXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBmb3IgKGludCBwcmlvcml0eSA9
IEhpZ2hlc3RQcmlvcml0eTsgcHJpb3JpdHkgPj0gTG93ZXN0UHJpb3JpdHk7IC0tcHJpb3JpdHkp
IHsgIAorICAgIGZvciAoaW50IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoZXN0
OyBwcmlvcml0eSA+PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvd2VzdDsgLS1wcmlvcml0eSkgeyAg
CiAgICAgICAgIFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgZW5kID0gbV9yZXF1ZXN0c1BlbmRpbmdb
cHJpb3JpdHldLmVuZCgpOwogICAgICAgICBmb3IgKFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgaXQg
PSBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV0uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgICAgICBpZiAoKml0ID09IHJlc291cmNlTG9hZGVyKSB7CkBAIC0yNzIsNyArMjcz
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdAogewogICAgIGlm
ICghbV9yZXF1ZXN0c0xvYWRpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBmb3IgKHVuc2lnbmVkIHAgPSAwOyBwIDw9IEhpZ2hlc3RQcmlvcml0eTsgcCsrKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHAr
KykgewogICAgICAgICBpZiAoIW1fcmVxdWVzdHNQZW5kaW5nW3BdLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5oCShyZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ3LDE0ICs0
OCwxMyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgOiBwdWJsaWMgTm9uCiBwdWJsaWM6
CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCk7CiAKLSAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywgTG93LCBNZWRpdW0sIEhpZ2gsIExv
d2VzdFByaW9yaXR5ID0gVmVyeUxvdywgSGlnaGVzdFByaW9yaXR5ID0gSGlnaCB9OwotICAgIFBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1l
KiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQcmlv
cml0eSA9IExvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYg
PSB0cnVlKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJl
c291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUxv
dywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVlKTsK
ICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdp
blN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9hZChSZXNv
dXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9p
ZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJM
JiByZWRpcmVjdFVSTCk7CiAgICAgCi0gICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlv
cml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKKyAgICB2b2lkIHNlcnZlUGVuZGluZ1Jl
cXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFJlc291cmNlTG9h
ZFByaW9yaXR5VmVyeUxvdyk7CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCk7CiAg
ICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKIApAQCAtNjIsNyArNjIsNyBAQCBwcml2
YXRlOgogICAgIFJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogICAgIH5SZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiwgUHJpb3Jp
dHkpOworICAgIHZvaWQgc2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkpOwogICAgIHZvaWQgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAg
IHZvaWQgcmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8UmVzb3VyY2VMb2FkU2NoZWR1bGVyPiopOwog
CkBAIC03MiwxNyArNzIsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgfkhvc3RJbmZvcm1hdGlvbigp
OwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9Ci0gICAgICAgIHZvaWQgc2NoZWR1bGUoUmVzb3VyY2VMb2FkZXIqLCBQcmlvcml0
eSA9IFZlcnlMb3cpOworICAgICAgICB2b2lkIHNjaGVkdWxlKFJlc291cmNlTG9hZGVyKiwgUmVz
b3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogICAgICAg
ICB2b2lkIGFkZExvYWRJblByb2dyZXNzKFJlc291cmNlTG9hZGVyKik7CiAgICAgICAgIHZvaWQg
cmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25z
dDsKICAgICAgICAgYm9vbCBsaW1pdFJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
c0xvYWRpbmcuc2l6ZSgpID49IG1fbWF4UmVxdWVzdHNJbkZsaWdodDsgfQogCiAgICAgICAgIHR5
cGVkZWYgRGVxdWU8UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RRdWV1ZTsKLSAgICAg
ICAgUmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcoUHJpb3JpdHkgcHJpb3JpdHkpIHsgcmV0
dXJuIG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XTsgfQorICAgICAgICBSZXF1ZXN0UXVldWUm
IHJlcXVlc3RzUGVuZGluZyhSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkgeyByZXR1cm4g
bV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldOyB9CiAKICAgICBwcml2YXRlOiAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgIFJlcXVlc3RRdWV1ZSBtX3JlcXVlc3RzUGVuZGluZ1tIaWdoZXN0
UHJpb3JpdHkgKyAxXTsKKyAgICAgICAgUmVxdWVzdFF1ZXVlIG1fcmVxdWVzdHNQZW5kaW5nW1Jl
c291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCArIDFdOwogICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RNYXA7CiAgICAgICAgIFJlcXVlc3RNYXAg
bV9yZXF1ZXN0c0xvYWRpbmc7CiAgICAgICAgIGNvbnN0IFN0cmluZyBtX25hbWU7CkBAIC05NSw3
ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBIb3N0SW5mb3JtYXRpb24qIGhv
c3RGb3JVUkwoY29uc3QgS1VSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7Ci0gICAg
dm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBQcmlvcml0eSk7Cisg
ICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRp
b24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwogICAgIEhvc3RNYXAgbV9ob3N0czsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9h
ZGVyLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MSwyOCArNzEsNiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRUeXBlIGNhY2hlCiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJy
ZXNvdXJjZTsKIH0KIAotc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UHJpb3JpdHkgZGV0
ZXJtaW5lUHJpb3JpdHkoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIHN3
aXRjaCAocmVzb3VyY2UtPnR5cGUoKSkgewotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpD
U1NTdHlsZVNoZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpYU0xTdHlsZVNoZWV0OgotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpIaWdoOwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6
Ci0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgICAg
IHJldHVybiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Ok1lZGl1bTsKLSAgICAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OkxvdzsKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAgICAgICAgcmV0dXJuIFJlc291
cmNlTG9hZFNjaGVkdWxlcjo6VmVyeUxvdzsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpMb3c7Ci19Ci0K
IHZvaWQgTG9hZGVyOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0
eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cykKIHsKIApAQCAtMTI4LDkgKzEwNiwxMSBAQCB2b2lkIExvYWRlcjo6bG9hZChDYWNoZWRSZXNv
dXJjZUxvYWRlciogCiAgICAgaWYgKHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnR5cGUoKSA9
PSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKQogICAgICAgICByZXNvdXJjZVJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKCJYLVB1cnBvc2UiLCAicHJlZmV0Y2giKTsKICNlbmRpZgorICAg
IAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gcmVxdWVzdC0+Y2FjaGVkUmVz
b3VyY2UoKS0+bG9hZFByaW9yaXR5KCk7CiAKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9h
ZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwKLSAgICAgICAgdGhp
cywgcmVzb3VyY2VSZXF1ZXN0LCBkZXRlcm1pbmVQcmlvcml0eShyZXNvdXJjZSksIHJlcXVlc3Qt
PnNob3VsZERvU2VjdXJpdHlDaGVjaygpLCByZXF1ZXN0LT5zZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkpOworICAgICAgICB0aGlzLCByZXNvdXJjZVJlcXVlc3QsIHByaW9yaXR5LCByZXF1ZXN0
LT5zaG91bGREb1NlY3VyaXR5Q2hlY2soKSwgcmVxdWVzdC0+c2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcygpKTsKICAgICBpZiAobG9hZGVyICYmICFsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpCiAgICAgICAgIG1fcmVxdWVzdHNMb2FkaW5nLmFkZChsb2FkZXIucmVsZWFzZSgpLCByZXF1
ZXN0KTsKICAgICBlbHNlIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAJKHJldmlzaW9uIDczNTEwKQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywyOCBAQAogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIFJlc291cmNlTG9h
ZFByaW9yaXR5IGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShYU0xUKQorICAgICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoOworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpT
Y3JpcHQ6CisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAg
ICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bTsKKyAgICAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJj
ZUxvYWRQcmlvcml0eUxvdzsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICAgICAgcmV0dXJuIFJlc291
cmNlTG9hZFByaW9yaXR5VmVyeUxvdzsKKyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7Cit9CiAKICNpZm5k
ZWYgTkRFQlVHCiBzdGF0aWMgUmVmQ291bnRlZExlYWtDb3VudGVyIGNhY2hlZFJlc291cmNlTGVh
a0NvdW50ZXIoIkNhY2hlZFJlc291cmNlIik7CkBAIC01NSw2ICs3Nyw3IEBAIHN0YXRpYyBSZWZD
b3VudGVkTGVha0NvdW50ZXIgY2FjaGVkUmVzb3UKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHVybCwgVHlwZSB0eXBlKQogICAgIDogbV91cmwodXJsKQogICAg
ICwgbV9yZXF1ZXN0KDApCisgICAgLCBtX2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JS
ZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1l
KCkpCiAgICAgLCBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6
ZSgwKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA3
MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTkwLDYgKzkxLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nICZ1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KKyAgICAKKyAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBsb2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQog
CiAgICAgdm9pZCBhZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2b2lkIHJl
bW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwpAQCAtMjE3LDYgKzIyMCw3IEBAIHBy
b3RlY3RlZDoKICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5nIG1fYWNjZXB0OwogICAgIFJl
cXVlc3QqIG1fcmVxdWVzdDsKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0
eTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBkb3VibGUgbV9yZXNw
b25zZVRpbWVzdGFtcDsKQEAgLTIzMyw2ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzcG9uc2VBZnRlclJl
dmFsaWRhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwog
ICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4g
UHVyZ2VEZWZhdWx0OyB9CisgICAgdm9pZCBzZXRMb2FkUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJp
b3JpdHkgbG9hZFByaW9yaXR5KSB7IG1fbG9hZFByaW9yaXR5ID0gbG9hZFByaW9yaXR5OyB9CiAK
ICAgICBkb3VibGUgY3VycmVudEFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBmcmVzaG5lc3NMaWZl
dGltZSgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw5ICsxNDcsOSBA
QCBDYWNoZWRGb250KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkZv
bnRSZXNvdXJjZSwgdXJsLCBTdHJpbmcoKSkpOwogfQogCi1DYWNoZWRDU1NTdHlsZVNoZWV0KiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKK0NhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgdXJsLCBjaGFyc2V0KSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIHVybCwgY2hhcnNldCwgcHJpb3JpdHkpKTsKIH0K
IAogQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2Vy
Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQpA
QCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCBpc1ByZWxvYWQpCitDYWNo
ZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBpc1ByZWxvYWQpCiB7CiAg
ICAgS1VSTCBmdWxsVVJMID0gbV9kb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKTsKIApAQCAtMjY0
LDcgKzI2NCw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmUKICAg
ICBjaGVja0ZvclJlbG9hZChmdWxsVVJMKTsKIAogICAgIGJvb2wgYWxsb3dGb3JIaXN0b3J5T25s
eVJlc291cmNlcyA9IGNhY2hlUG9saWN5KCkgPT0gQ2FjaGVQb2xpY3lIaXN0b3J5QnVmZmVyOwot
ICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSh0
aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBpc1ByZWxvYWQsIGFsbG93Rm9ySGlzdG9yeU9u
bHlSZXNvdXJjZXMpOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGNhY2hlKCktPnJl
cXVlc3RSZXNvdXJjZSh0aGlzLCB0eXBlLCBmdWxsVVJMLCBjaGFyc2V0LCBwcmlvcml0eSwgaXNQ
cmVsb2FkLCBhbGxvd0Zvckhpc3RvcnlPbmx5UmVzb3VyY2VzKTsKICAgICBpZiAocmVzb3VyY2Up
IHsKICAgICAgICAgLy8gQ2hlY2sgZmluYWwgVVJMIG9mIHJlc291cmNlIHRvIGNhdGNoIHJlZGly
ZWN0cy4KICAgICAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5NjM+LgpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RQcmVsb2EKICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0
IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQpCiAgICAgICAgIGVuY29k
aW5nID0gY2hhcnNldC5pc0VtcHR5KCkgPyBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+
d3JpdGVyKCktPmVuY29kaW5nKCkgOiBjaGFyc2V0OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHVybCwgZW5jb2RpbmcsIHRydWUpOworICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCB1cmwsIGVu
Y29kaW5nLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRydWUpOwogICAgIGlmICgh
cmVzb3VyY2UgfHwgKG1fcHJlbG9hZHMgJiYgbV9wcmVsb2Fkcy0+Y29udGFpbnMocmVzb3VyY2Up
KSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc291cmNlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgp
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiA3MzUxMCkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVQb2xpY3kuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH5DYWNoZWRS
ZXNvdXJjZUxvYWRlcigpOwogCiAgICAgQ2FjaGVkSW1hZ2UqIHJlcXVlc3RJbWFnZShjb25zdCBT
dHJpbmcmIHVybCk7Ci0gICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdENTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CisgICAgQ2FjaGVk
Q1NTU3R5bGVTaGVldCogcmVxdWVzdENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBSZXNv
dXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHJl
cXVlc3RVc2VyQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0KTsKICAgICBDYWNoZWRTY3JpcHQqIHJlcXVlc3RTY3JpcHQoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgQ2FjaGVkRm9udCogcmVxdWVzdEZvbnQo
Y29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtMTAyLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHByaW50UHJlbG9hZFN0YXRzKCk7CiAgICAgCiBwcml2YXRlOgotICAgIENhY2hlZFJlc291cmNl
KiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOworICAgIENh
Y2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9h
ZCA9IGZhbHNlKTsKICAgICB2b2lkIHJlcXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIHZvaWQg
Y2hlY2tGb3JSZWxvYWQoY29uc3QgS1VSTCYpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAkocmV2aXNpb24gNzM1MTApCisrKyBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEwICs5NSwxMCBAQCBzdGF0aWMgQ2Fj
aGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgcmV0dXJuIDA7CiB9CiAKLUNhY2hl
ZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9h
ZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGJvb2wgcmVxdWVzdElzUHJlbG9h
ZCwgYm9vbCBmb3JIaXN0b3J5KQorQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgcmVxdWVzdElzUHJlbG9h
ZCwgYm9vbCBmb3JIaXN0b3J5KQogewotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJNZW1vcnlD
YWNoZTo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQgJyVzJywgcHJlbG9hZD0ldSwgZm9y
SGlzdG9yeT0ldSIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNoYXJzZXQubGF0aW4x
KCkuZGF0YSgpLCByZXF1ZXN0SXNQcmVsb2FkLCBmb3JIaXN0b3J5KTsKLQorICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJNZW1vcnlDYWNoZTo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQg
JyVzJywgcHJpb3JpdHk9JWQsIHByZWxvYWQ9JXUsIGZvckhpc3Rvcnk9JXUiLCB1cmwuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpLCBjaGFyc2V0LmxhdGluMSgpLmRhdGEoKSwgcHJpb3JpdHksIHJl
cXVlc3RJc1ByZWxvYWQsIGZvckhpc3RvcnkpOworICAgIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBy
ZWFsbHkgbmVlZCB0byBzcGVjaWFsLWNhc2UgYW4gZW1wdHkgVVJMPwogICAgIC8vIFdvdWxkIGl0
IGJlIGJldHRlciB0byBqdXN0IGdvIG9uIHdpdGggdGhlIGNhY2hlIGNvZGUgYW5kIGxldCBpdCBm
YWlsIGxhdGVyPwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtMTQ0LDYgKzE0NCwxMCBAQCBD
YWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvCiAgICAgICAgIC8vIEZJWE1F
OiBDYWNoZWRSZXNvdXJjZSBzaG91bGQganVzdCB1c2Ugbm9ybWFsIHJlZmNvdW50aW5nIGluc3Rl
YWQuCiAgICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKHRydWUpOwogICAgICAgICAKKyAgICAg
ICAgLy8gRGVmYXVsdCBwcmlvcml0eSBiYXNlZCBvbiByZXNvdXJjZSB0eXBlIGlzIHVzZWQgaWYg
dGhlIHJlcXVlc3QgZGlkIG5vdCBzcGVjaWZ5IG9uZS4KKyAgICAgICAgaWYgKHByaW9yaXR5ICE9
IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCkKKyAgICAgICAgICAgIHJlc291cmNlLT5z
ZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOworCiAgICAgICAgIHJlc291cmNlLT5sb2FkKGNhY2hl
ZFJlc291cmNlTG9hZGVyKTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpKSB7CkBAIC0xNjIsNiArMTY2LDEyIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlD
YWNoZTo6cmVxdWVzdFJlc28KICAgICAgICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKGZhbHNl
KTsKICAgICAgICAgICAgIHJlc291cmNlLT5zZXRDYWNoZWRSZXNvdXJjZUxvYWRlcihjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhN
RTogVXBncmFkaW5nIHRoZSBwcmlvcml0eSBkb2Vzbid0IHJlYWxseSBkbyBtdWNoIHNpbmNlIHRo
ZSBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZG9lcyBub3QgY3VycmVudGx5CisgICAgICAgIC8vIGFs
bG93IGNoYW5naW5nIHByaW9yaXRpZXMuIFRoaXMgbWlnaHQgYmVjb21lIGltcG9ydGFudCBpZiB3
ZSBtYWtlIHNjaGVkdWxpbmcgcHJpb3JpdGllcworICAgICAgICAvLyBtb3JlIGR5bmFtaWMuCisg
ICAgICAgIGlmIChwcmlvcml0eSAhPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQgJiYg
cmVzb3VyY2UtPmxvYWRQcmlvcml0eSgpIDwgcHJpb3JpdHkpCisgICAgICAgICAgICByZXNvdXJj
ZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKICAgICB9CiAKICAgICBpZiAoIWRpc2FibGVk
KCkpIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkocmV2aXNpb24gNzM1MTAp
CisrKyBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmVxdWVzdCByZXNvdXJjZXMgZnJv
bSB0aGUgY2FjaGUuICBBIGxvYWQgd2lsbCBiZSBpbml0aWF0ZWQgYW5kIGEgY2FjaGUgb2JqZWN0
IGNyZWF0ZWQgaWYgdGhlIG9iamVjdCBpcyBub3QKICAgICAvLyBmb3VuZCBpbiB0aGUgY2FjaGUu
Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRl
ciosIENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSwgYm9vbCBmb3JIaXN0b3J5ID0gZmFsc2Up
OworICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBi
b29sIGZvckhpc3RvcnkgPSBmYWxzZSk7CiAKICAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1
ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICAKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcz
NjMyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTAtMTItMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODcyMjA5ND4gCisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVzaGVldHMKKyAg
ICAgICAgCisgICAgICAgIFRoZXNlIHRlc3RzIGRvbid0IGFjdHVhbGx5IHRlc3QgZGVmZXJyaW5n
LCBvbmx5IHRoYXQgdGhlIGNvcnJlY3QgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCisgICAgICAgIEEg
cHJvcGVyIGxvYWQgb3JkZXJpbmcgdGVzdCB3aWxsIG5lZWQgc29tZSBEUlQgY2hhbmdlcyB0b28s
IGJldHRlciBkb25lIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xp
bmstc3R5bGVzaGVldC1tZWRpYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1tZWRpYS1w
cmVsb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHls
ZXNoZWV0LW1lZGlhLmh0bWw6IEFkZGVkLgorCiAyMDEwLTEyLTA5ICBCcmlhbiBXZWluc3RlaW4g
IDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBMYW5kIGZhaWxpbmcgZXhwZWN0ZWQg
cmVzdWx0cyBmb3IgZWRpdGluZyB0ZXN0cyB0aGF0IGhhdmUgYmVlbiBmYWlsaW5nIHNpbmNlIHRo
ZXkgd2VyZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hl
ZXQtbWVkaWEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorQ2hlY2sgdGhhdCBvbmx5
IHRoZSBzY3JlZW4gYW5kIHByaW50IHNoZWV0cyBhcmUgbG9hZGVkLgorUmVzb3VyY2UgcmVxdWVz
dHM6CisKKworbG9hZC0xLmNzcworbG9hZC0yLmNzcworbG9hZC0zLmNzcworbG9hZC00LmNzcwor
bG9hZC01LmNzcworbG9hZC02LmNzcworbG9hZC03LmNzcworbWVkaWEtcXVlcnktc2hvdWxkLW5v
dC1sb2FkZWQuY3NzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5
bGVzaGVldC1tZWRpYS1wcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1tZWRpYS1wcmVsb2FkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyIEBACitDaGVjayB0aGF0IG9ubHkgdGhlIHNjcmVlbiBhbmQgcHJpbnQgc2hlZXRz
IGFyZSBsb2FkZWQuCitSZXNvdXJjZSByZXF1ZXN0czoKKworCitsb2FkLTEuY3NzCitsb2FkLTIu
Y3NzCitsb2FkLTMuY3NzCitsb2FkLTQuY3NzCitsb2FkLTUuY3NzCitsb2FkLTYuY3NzCitsb2Fk
LTcuY3NzCittZWRpYS1xdWVyeS1zaG91bGQtbm90LWxvYWRlZC5jc3MKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LW1lZGlhLXByZWxvYWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVl
dC1tZWRpYS1wcmVsb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1tZWRpYS1wcmVsb2FkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjcgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKyAgPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIENhbGxDb21tYW5kKGNt
ZCkKKyAgICB7CisgICAgIHRyeSB7CisgICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1
ZXN0OworICAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPSIgKyBjbWQsIGZhbHNlKTsKKyAg
ICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7
CisgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICByZXR1cm4gIiI7CisgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiBlbmRUZXN0KCkKKyAgICB7CisgICAgICAgIGdldFJlc291cmNlTG9n
KCk7CisgICAgICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOwor
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGdldFJlc291cmNlTG9nKCkKKyAgICB7CisgICAgICAgIHZhciBsb2cgPSBDYWxsQ29tbWFuZCgi
Z2V0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgICAgIHZhciBsb2dMaW5lcyA9IGxvZy5z
cGxpdCgnXG4nKTsKKyAgICAgICAgbG9nTGluZXMuc29ydCgpOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gbG9nTGluZXMuam9pbignXG4nKTsK
KyAgICB9CisKKyAgICBDYWxsQ29tbWFuZCgic3RhcnQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsK
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGVuZFRlc3QsIGZhbHNlKTsKKyAg
PC9zY3JpcHQ+CisgIAorICA8IS0tIFRoaXMgZXh0ZXJuYWwgc2NyaXB0IGxvYWQgdHJpZ2dlcnMg
dGhlIHByZWxvYWQgc2Nhbm5lci0tPgorICA8c2NyaXB0IHNyYz0iZG9lc19ub3RfZXhpc3QuanMi
Pjwvc2NyaXB0PgorCisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291
cmNlLXJlcXVlc3QmcGF0aD1sb2FkLTEuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVk
aWE9IiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVs
YXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtMi5jc3MiPgor
ICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYWxsIiBocmVmPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJj
ZS1yZXF1ZXN0JnBhdGg9bG9hZC0zLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlh
PSJwcmludCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtNC5jc3Mi
PgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIiBocmVmPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1y
ZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bG9hZC01LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0
IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDFweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291
cmNlLXJlcXVlc3QmcGF0aD1sb2FkLTYuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVk
aWE9ImJyYWlsbGUsIHNjcmVlbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNl
cy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRo
PWxvYWQtNy5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAo
bWluLXdpZHRoOiAxMDAwMDAwcHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9bWVkaWEtcXVlcnktc2hvdWxkLW5vdC1sb2FkZWQuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxl
c2hlZXQgbWVkaWE9ImF1cmFsIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9
bm90LWxvYWRlZC0xLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJicmFpbGxl
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC0yLmNzcyI+
CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJoYW5kaGVsZCIgaHJlZj0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ct
cmVzb3VyY2UtcmVxdWVzdCZwYXRoPW5vdC1sb2FkZWQtMy5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0icHJvamVjdGlvbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jl
c291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVz
dCZwYXRoPW5vdC1sb2FkZWQtNC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0i
dHR5IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxh
dG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC01LmNz
cyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJ0diIgaHJlZj0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVz
b3VyY2UtcmVxdWVzdCZwYXRoPW5vdC1sb2FkZWQtNi5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cisg
IENoZWNrIHRoYXQgb25seSB0aGUgc2NyZWVuIGFuZCBwcmludCBzaGVldHMgYXJlIGxvYWRlZC4K
KworICA8aDI+UmVzb3VyY2UgcmVxdWVzdHM6PC9oMj4KKyAgPHByZSBpZD0icmVzdWx0Ij5SZXF1
ZXN0IGxvZyBnb2VzIGhlcmUgaW4gRFJUPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1tZWRpYS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0
LW1lZGlhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L2xpbmstc3R5bGVzaGVldC1tZWRpYS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBA
Cis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBDYWxsQ29tbWFuZChjbWQpCisgICAgeworICAgICB0
cnkgeworICAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAgIHJl
cS5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD0iICsgY21kLCBmYWxzZSk7CisgICAgICAgICByZXEuc2VuZChu
dWxsKTsKKyAgICAgICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0OworICAgICB9IGNhdGNoIChl
eCkgeworICAgICAgICAgcmV0dXJuICIiOworICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
ZW5kVGVzdCgpCisgICAgeworICAgICAgICBnZXRSZXNvdXJjZUxvZygpOworICAgICAgICBDYWxs
Q29tbWFuZCgiY2xlYXItcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRSZXNvdXJjZUxvZygp
CisgICAgeworICAgICAgICB2YXIgbG9nID0gQ2FsbENvbW1hbmQoImdldC1yZXNvdXJjZS1yZXF1
ZXN0LWxvZyIpOworICAgICAgICB2YXIgbG9nTGluZXMgPSBsb2cuc3BsaXQoJ1xuJyk7CisgICAg
ICAgIGxvZ0xpbmVzLnNvcnQoKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVyVGV4dCA9IGxvZ0xpbmVzLmpvaW4oJ1xuJyk7CisgICAgfQorCisgICAgQ2Fs
bENvbW1hbmQoInN0YXJ0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBlbmRUZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorCisgIDxs
aW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMv
bmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1s
b2FkLTEuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9IiIgaHJlZj0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1s
b2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVz
aGVldCBtZWRpYT0iYWxsIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bG9h
ZC0zLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJwcmludCIgaHJlZj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtNC5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0ic2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9bG9hZC01LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4gYW5k
IChtaW4td2lkdGg6IDFweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMv
bmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1s
b2FkLTYuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUsIHNjcmVl
biIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRv
ci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWxvYWQtNy5jc3MiPgorICA8
bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAwMDAw
cHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxh
dG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtcXVlcnktc2hv
dWxkLW5vdC1sb2FkZWQuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImF1cmFs
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC0xLmNzcyI+
CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJicmFpbGxlIiBocmVmPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1y
ZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHls
ZXNoZWV0IG1lZGlhPSJoYW5kaGVsZCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW5vdC1sb2FkZWQtMy5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0icHJv
amVjdGlvbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW5vdC1sb2FkZWQt
NC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0idHR5IiBocmVmPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxv
Zy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm90LWxvYWRlZC01LmNzcyI+CisgIDxsaW5rIHJlbD1z
dHlsZXNoZWV0IG1lZGlhPSJ0diIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNl
cy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRo
PW5vdC1sb2FkZWQtNi5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgIENoZWNrIHRoYXQgb25seSB0
aGUgc2NyZWVuIGFuZCBwcmludCBzaGVldHMgYXJlIGxvYWRlZC4KKworICA8aDI+UmVzb3VyY2Ug
cmVxdWVzdHM6PC9oMj4KKyAgPHByZSBpZD0icmVzdWx0Ij5SZXF1ZXN0IGxvZyBnb2VzIGhlcmUg
aW4gRFJUPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76378</attachid>
            <date>2010-12-13 06:08:20 -0800</date>
            <delta_ts>2010-12-13 09:25:01 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>defer-print-stylesheets-3.patch</filename>
            <type>text/plain</type>
            <size>62327</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzkxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTAtMTItMTMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODcyMjA5ND4gCisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVz
aGVldHMKKyAgICAgICAgCisgICAgICAgIC0gTWFrZSBwcmVsb2FkIHNjYW5uZXIgc2tpcCBzdHls
ZXNoZWV0cyB3aXRoIG5vbi1zY3JlZW4gbWVkaWEgdHlwZXMuCisgICAgICAgIC0gTWFrZSBpdCBw
b3NzaWJsZSB0byBzcGVjaWZ5IG5vbi1kZWZhdWx0IGxvYWQgcHJpb3JpdHkgZnJvbSB0aGUgY2xp
ZW50LgorICAgICAgICAtIFVzZSB0aGlzIG1lY2hhbmlzbSB0byBsb2FkIHByaW50IHN0eWxlc2hl
ZXRzIHVzaW5nIHZlcnkgbG93IHByaW9yaXR5IHNvIHRoZXkgZ2V0IGxvYWRlZCBhZnRlciBldmVy
eXRoaW5nIGVsc2UuCisgICAgICAgIC0gTW92ZSBkZWZhdWx0IHByaW9yaXR5IGNvZGUgZnJvbSBM
b2FkZXIgdG8gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAgIC0gTW92ZSBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OlByaW9yaXR5IGVudW0gdG8gYSBzZXBhcmF0ZSBmaWxlIChhcyBSZXNvdXJjZUxvYWRQ
cmlvcml0eSkuCisgICAgICAgIC0gQWRkIGEgd2F5IHRvIG1ha2UgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyIGxvYWQgcmVzb3VyY2VzIG9uZSBhdCB0aGUgdGltZSBzbyB0aGUgYWJvdmUgZnVuY3Rpb25h
bGl0eSBjYW4gYmUgdGVzdGVkIHJlbGlhYmx5LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3Rz
L2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAqIGNzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFs
dWF0b3I6OmV2YWwpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CisgICAg
ICAgICogZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1l
bnQ6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OlByZWxvYWRUYXNrOjpQcmVsb2FkVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OlByZWxvYWRUYXNrOjpwcm9jZXNzQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTmFtZXM6OlByZWxvYWRUYXNrOjpsaW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnByZWxvYWQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZFByaW9yaXR5Lmg6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjp+
SG9zdEluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6SG9zdEluZm9ybWF0aW9uOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpoYXNSZXF1ZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlv
bjo6c2V0TG9hZFNlcmlhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2V0TG9hZFNlcmlhbGx5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJ
bmZvcm1hdGlvbjo6cmVxdWVzdHNQZW5kaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFByaW9yaXR5Rm9yUmVz
b3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNv
dXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZFByaW9yaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAg
KiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9hZCk6CisK
IDIwMTAtMTItMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3Mzg5OC4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC00OTEsNyArNDkxLDggQEAgX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04z
VwogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9f
Wk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnRFTlMwXzRUeXBlRWIKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdO
U0V2ZW50Ci1fX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5n
UmVxdWVzdHNFTlMwXzhQcmlvcml0eUUKK19fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1
bGVyMTVzZXRMb2FkU2VyaWFsbHlFUktOM1dURjZTdHJpbmdFYgorX19aTjdXZWJDb3JlMjFSZXNv
dXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2Fk
UHJpb3JpdHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1l
bnRFeHRlbnNpb25zMjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0
U1ZHU01JTEVsZW1lbnRFZAogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRl
c2VyaWFsaXplRVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3Mzg5NSkK
KysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NDg2LDYgKzU0ODYsNyBAQAogCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyog
VGhyZWFkR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5j
cHAgKi87IH07CiAJCUU0MTVGMTY5MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNv
bnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
MTVGMTY4MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wuaCAqLzsgfTsK
IAkJRTQxNUYxODQwRDlBMUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxNUYxODMwRDlBMUE4
MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovOyB9OworCQlFNDI5NUZBNDEyQjA2
MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Mjk1RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBS
ZXNvdXJjZUxvYWRQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0NDYxM0ExMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
NDYxMzhGMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCAqLzsgfTsKIAkJ
RTQ0NjEzQTIwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDYxMzkwMENENjMzMTAwMEZB
REE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggKi87IH07CiAJCUU0NDYxM0E0MENENjMzMTAwMEZB
REE3NSAvKiBIVE1MTWVkaWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDYxMzkyMENENjMzMTAwMEZBREE3NSAvKiBIVE1MTWVkaWFF
bGVtZW50LmNwcCAqLzsgfTsKQEAgLTExNzc5LDYgKzExNzgwLDcgQEAKIAkJRTQxNUYxODMwRDlB
MUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFbGVtZW50VGltZUNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlOYW1lcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM5MTE5ODM3NDkwMDcxMEJD
NSAvKiBDU1NWYWx1ZUtleXdvcmRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1ZhbHVlS2V5d29yZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNDI5NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkUHJpb3JpdHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0NjEzOEYwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhU
TUxBdWRpb0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTEF1ZGlvRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYx
MzkwMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQ0NjEzOTEwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4NzAsNiArMTc4NzIsNyBAQAogCQkJCTY1NkQzNzI3
MEFEQkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTk3M0UzMjU0MTA4
ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8sCiAJCQkJOTczRTMy
NTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi8sCisJCQkJRTQy
OTVGQTMxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggKi8sCiAJCQkJ
RDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgKi8s
CiAJCQkJRDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5o
ICovLAogCQkJCTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICov
LApAQCAtMjIxMTQsNiArMjIxMTcsNyBAQAogCQkJCTQ5OUIzRUM1MTI4Q0NDNDcwMEU3MjZDMiAv
KiBQbGF0Zm9ybUNBTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRURE
MTI4REI1MDIwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRjkxMkIwMjY3NjAwQzFB
MzU5IC8qIEF1ZGlvQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGQzEyQjAyNjc2
MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0eWxlQ2FjaGVk
SW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEkKICAgICAgICAgICAgIGNhY2hlZEltYWdlID0g
bG9hZGVyLT5yZXF1ZXN0SW1hZ2UodXJsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIGZpbmQgYSB3YXkgdG8gbWFrZSB0aGVzZSBpbWFnZXMgc2l0IGluIHRo
ZWlyIG93biBtZW1vcnkgcGFydGl0aW9uLCBzaW5jZSB0aGV5IGFyZSB1c2VyIGFnZW50IGltYWdl
cy4KLSAgICAgICAgICAgIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihj
YWNoZSgpLT5yZXF1ZXN0UmVzb3VyY2UoMCwgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSkpOworICAgICAgICAgICAgY2Fj
aGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hlKCktPnJlcXVlc3RSZXNv
dXJjZSgwLCBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIFN0cmluZygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChjYWNoZWRJbWFnZSkgewpJbmRleDogV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0
aWMgYm9vbCBhcHBseVJlc3RyaWN0b3IoTWVkaWFRdWVyeTo6CiAgICAgcmV0dXJuIHIgPT0gTWVk
aWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2YWx1
YXRvcjo6ZXZhbChjb25zdCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciog
c3R5bGVTZWxlY3RvcikgY29uc3QKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChQYXNz
UmVmUHRyPE1lZGlhTGlzdD4gbWVkaWFMaXN0LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVj
dG9yKSBjb25zdAogewogICAgIGlmICghbWVkaWFMaXN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDczODk1KQorKysgV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIG1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoY29uc3QgY2hh
ciogbWVkaWFUeXBlVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvKiogRXZhbHVhdGVzIGEgbGlzdCBv
ZiBtZWRpYSBxdWVyaWVzICovCi0gICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhTGlzdCosIENTU1N0
eWxlU2VsZWN0b3IqID0gMCkgY29uc3Q7CisgICAgYm9vbCBldmFsKFBhc3NSZWZQdHI8TWVkaWFM
aXN0PiwgQ1NTU3R5bGVTZWxlY3RvciogPSAwKSBjb25zdDsKIAogICAgIC8qKiBFdmFsdWF0ZXMg
bWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTogdmFsdWUp
IiBwYXJ0ICovCiAgICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhUXVlcnlFeHAqKSBjb25zdDsKSW5k
ZXg6IFdlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL2RvbS9TdHls
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBTdHls
ZUVsZW1lbnQ6OmNyZWF0ZVNoZWV0KEVsZW1lbnQqIAogICAgICAgICBSZWZQdHI8TWVkaWFMaXN0
PiBtZWRpYUxpc3QgPSBNZWRpYUxpc3Q6OmNyZWF0ZShtZWRpYSgpLCBlLT5pc0hUTUxFbGVtZW50
KCkpOwogICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIHRy
dWUpOwogICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiLCB0cnVl
KTsKLSAgICAgICAgaWYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3QuZ2V0KCkpIHx8IHByaW50
RXZhbC5ldmFsKG1lZGlhTGlzdC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHNjcmVlbkV2YWwuZXZh
bChtZWRpYUxpc3QpIHx8IHByaW50RXZhbC5ldmFsKG1lZGlhTGlzdCkpIHsKICAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRQZW5kaW5nU2hlZXQoKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRy
dWU7CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGUsIFN0cmlu
ZygpLCBLVVJMKCksIGRvY3VtZW50LT5pbnB1dEVuY29kaW5nKCkpOwpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCwxMCArMjI0LDE2IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNU
ZXh0Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGlu
Z3MoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NM
aW5rQXNTdHlsZXNoZWV0KCk7CiAKLSAgICAvLyBTdHlsZXNoZWV0Ci0gICAgLy8gVGhpcyB3YXMg
YnVnZ3kgYW5kIHdvdWxkIGluY29ycmVjdGx5IG1hdGNoIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIj4s
IHdoaWNoIGhhcyBhIGRpZmZlcmVudCBzcGVjaWZpZWQgbWVhbmluZy4gLWR3aAotICAgIGlmICht
X2Rpc2FibGVkU3RhdGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4
dC9jc3MiKSkpICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIC8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25lIGRv
Y3VtZW50cworICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbG9hZCB1bm5lY2Vzc2FyeSBzdHls
ZXNoZWV0cyBhdCBhbGwuCisgICAgYm9vbCBtZWRpYUlzU2NyZWVuID0gdHJ1ZTsKKyAgICBpZiAo
IW1fbWVkaWEuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0g
TWVkaWFMaXN0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOworICAg
ICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWx1YXRvcigic2NyZWVuIiwgdHJ1ZSk7
CisgICAgICAgIG1lZGlhSXNTY3JlZW4gPSBzY3JlZW5FdmFsdWF0b3IuZXZhbChtZWRpYSk7Cisg
ICAgfQorICAgIAorICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVs
QXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1Mg
JiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpIAorICAgICAgICAmJiBkb2N1bWVudCgpLT5m
cmFtZSgpICYmIG1fdXJsLmlzVmFsaWQoKSkgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNo
YXJzZXQgPSBnZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIpOwogICAgICAgICBpZiAoY2hhcnNldC5p
c0VtcHR5KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKQEAgLTI1MCw3ICsyNTYsOSBAQCB2b2lk
IEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIGlmICghaXNBbHRlcm5hdGUoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOwogCi0gICAgICAgIG1f
Y2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0
Q1NTU3R5bGVTaGVldChtX3VybCwgY2hhcnNldCk7CisgICAgICAgIC8vIExvYWQgcHJpbnQgc3R5
bGVzaGVldHMgd2l0aCBsb3cgcHJpb3JpdHkgc28gdGhleSBkb24ndCBhZmZlY3Qgbm9ybWFsIHBh
Z2UgbG9hZGluZy4KKyAgICAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBtZWRp
YUlzU2NyZWVuID8gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkIDogUmVzb3VyY2VMb2Fk
UHJpb3JpdHlWZXJ5TG93OworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdENTU1N0eWxlU2hlZXQobV91cmwsIGNoYXJzZXQs
IHByaW9yaXR5KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAg
ICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwpJbmRleDogV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiTWVk
aWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRUYXNrKGNv
bnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIDogbV90YWdOYW1lKHRva2VuLm5hbWUoKS5k
YXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpCiAgICAgICAgICwgbV9saW5rSXNTdHlsZVNoZWV0
KGZhbHNlKQorICAgICAgICAsIG1fbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyh0cnVlKQogICAg
IHsKICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAgICB9
CkBAIC03Miw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgc2V0VXJsVG9M
b2FkKGF0dHJpYnV0ZVZhbHVlKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVO
YW1lID09IHJlbEF0dHIpCiAgICAgICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9
IHJlbEF0dHJpYnV0ZUlzU3R5bGVTaGVldChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBtZWRpYUF0dHIpCisgICAgICAgICAgICAgICAg
ICAgIG1fbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyA9IGxpbmtNZWRpYUF0dHJpYnV0ZU1hdGNo
ZXMoYXR0cmlidXRlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
ODMsNiArODgsMTkgQEAgcHVibGljOgogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXpl
UmVsQXR0cmlidXRlKGF0dHJpYnV0ZVZhbHVlLCByZWwpOwogICAgICAgICByZXR1cm4gcmVsLm1f
aXNTdHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFy
ZWwubV9pc0ROU1ByZWZldGNoOwogICAgIH0KKyAgICAKKyAgICBib29sIGxpbmtNZWRpYUF0dHJp
YnV0ZU1hdGNoZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB7CisgICAgICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWFMaXN0ID0gTWVkaWFMaXN0OjpjcmVhdGVB
bGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAKKyAgICAgICAg
Ly8gT25seSBwcmVsb2FkIHNjcmVlbiBtZWRpYSBzdHlsZXNoZWV0cy4gVXNlZCB0aGlzIHdheSwg
dGhlIGV2YWx1YXRvciBldmFsdWF0ZXMgdG8gZmFsc2UgZm9yIGFueSAKKyAgICAgICAgLy8gcnVs
ZXMgY29udGFpbmluZyBjb21wbGV4IHF1ZXJpZXMgKGZ1bGwgZXZhbHVhdGlvbiBpcyBwb3NzaWJs
ZSBidXQgaXQgcmVxdWlyZXMgZnJhbWUgYW5kIHN0eWxlIHNlbGVjdG9yIHdoaWNoCisgICAgICAg
IC8vIG1heSBiZSBwcm9ibGVtYXRpYyBoZXJlKS4gQ2FzZXMgd2hlcmUgcGlja2luZyB0aGVzZSBm
b3IgcHJlbG9hZGluZyB3b3VsZCBoZWxwIGFyZSBwcm9iYWJseSByYXJlLgorICAgICAgICBNZWRp
YVF1ZXJ5RXZhbHVhdG9yIG1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiIsIGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIG1lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbChtZWRpYUxpc3QpOworICAgIH0K
IAogICAgIHZvaWQgc2V0VXJsVG9Mb2FkKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAg
ICAgewpAQCAtMTAzLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhY2hlZFJlc291
cmNlTG9hZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIG1fdXJsVG9Mb2FkLCBt
X2NoYXJzZXQsIHNjYW5uaW5nQm9keSk7CiAgICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBp
bWdUYWcpIAogICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIG1fdXJsVG9Mb2FkLCBTdHJpbmcoKSwgc2Nhbm5pbmdC
b2R5KTsKLSAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9saW5rSXNT
dHlsZVNoZWV0KSAKKyAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9s
aW5rSXNTdHlsZVNoZWV0ICYmIG1fbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcykgCiAgICAgICAg
ICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5KTsKICAgICB9CiAK
QEAgLTExNCw2ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VybFRvTG9hZDsKICAg
ICBTdHJpbmcgbV9jaGFyc2V0OwogICAgIGJvb2wgbV9saW5rSXNTdHlsZVNoZWV0OworICAgIGJv
b2wgbV9saW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNp
b24gNzM4OTUpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZQogCiAgICAgICAgIC8vIENsZWFyIHRoZSBsb2FkZXIgc28gdGhh
dCBhbnkgY2FsbGJhY2tzIGZyb20gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSB3aWxsIG5vdCBo
YXZlIHRoZSBvbGQgbG9hZGVyLgogICAgICAgICBtX2xvYWRlciA9IDA7Ci0gICAgICAgIG1fbG9h
ZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1f
ZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6
TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBzZW5kTG9hZENhbGxiYWNrcywgc25pZmZDb250ZW50KTsK
KyAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJy
ZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHlNZWRpdW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlm
ZkNvbnRlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkUHJpb3JpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRQcmlvcml0eS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkUHJpb3JpdHlfaAorI2RlZmluZSBSZXNvdXJj
ZUxvYWRQcmlvcml0eV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBSZXNvdXJjZUxv
YWRQcmlvcml0eSB7IAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdywgCisgICAgUmVz
b3VyY2VMb2FkUHJpb3JpdHlMb3csIAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCAK
KyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2gsIAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5
TG93ZXN0ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCAKKyAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eUhpZ2hlc3QgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2gsIAorICAgIC8vIFRoZSB1
bnJlc29sdmVkIHByaW9yaXR5IGlzIGhlcmUgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiB0aGUgY2xp
ZW50cy4gSXQgc2hvdWxkIG5vdCBiZSBwYXNzZWQgdG8gdGhlIFJlc291cmNlTG9hZFNjaGVkdWxl
ci4KKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsCit9OworCit9CisKKyNlbmRp
ZgorCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlz
aW9uIDczODk1KQorKysgV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlJl
c291cmNlTG9hZFNjaGVkCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSog
ZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2Vj
dXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZikKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJj
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5
Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50
U25pZmYpCiB7CiAgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3Vi
cmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0LCBzZWN1cml0eUNo
ZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91bGRDb250ZW50U25pZmYpOwogICAg
IGlmIChsb2FkZXIpCkBAIC05NCw3ICs5NCw3IEBAIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI+IFIKIHsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBj
bGllbnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChs
b2FkZXIuZ2V0KCksIExvdyk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIFJl
c291cmNlTG9hZFByaW9yaXR5TG93KTsKICAgICByZXR1cm4gbG9hZGVyOwogfQogCkBAIC0xMDMs
MTEgKzEwMywxMiBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6YWRkTWFpblJlc291CiAg
ICAgaG9zdEZvclVSTChyZXNvdXJjZUxvYWRlci0+dXJsKCksIENyZWF0ZUlmTm90Rm91bmQpLT5h
ZGRMb2FkSW5Qcm9ncmVzcyhyZXNvdXJjZUxvYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBQ
cmlvcml0eSBwcmlvcml0eSkKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBw
cmlvcml0eSkKIHsKICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXIpOworICAgIEFTU0VSVChwcmlv
cml0eSAhPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogI2lmICFSRVFVRVNUX01B
TkFHRU1FTlRfRU5BQkxFRAotICAgIHByaW9yaXR5ID0gSGlnaGVzdFByaW9yaXR5OworICAgIHBy
aW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoZXN0OwogI2VuZGlmCiAKICAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkIHJlc291cmNlICVw
ICclcyciLCByZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7CkBAIC0xMTUsNyArMTE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnNjaGVkdWxlTG9hZAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNSZXF1
ZXN0cygpOwogICAgIGhvc3QtPnNjaGVkdWxlKHJlc291cmNlTG9hZGVyLCBwcmlvcml0eSk7CiAK
LSAgICBpZiAocHJpb3JpdHkgPiBMb3cgfHwgIXJlc291cmNlTG9hZGVyLT51cmwoKS5wcm90b2Nv
bEluSFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBMb3cgJiYgIWhhZFJlcXVlc3RzKSkgewor
ICAgIGlmIChwcmlvcml0eSA+IFJlc291cmNlTG9hZFByaW9yaXR5TG93IHx8ICFyZXNvdXJjZUxv
YWRlci0+dXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSB8fCAocHJpb3JpdHkgPT0gUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlMb3cgJiYgIWhhZFJlcXVlc3RzKSkgewogICAgICAgICAvLyBUcnkgdG8g
cmVxdWVzdCBpbXBvcnRhbnQgcmVzb3VyY2VzIGltbWVkaWF0ZWx5LgogICAgICAgICBzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cyhob3N0LCBwcmlvcml0eSk7CiAgICAgfSBlbHNlIHsKQEAgLTE0OCw3ICsx
NDksNyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jvc3NPcmlnaW5SCiAgICAgb2xk
SG9zdC0+cmVtb3ZlKHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSkKK3Zv
aWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhSZXNvdXJjZUxv
YWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
IlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMuIG1faXNTdXNwZW5k
aW5nUGVuZGluZ1JlcXVlc3RzPSVkIiwgbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMpOyAK
ICAgICBpZiAobV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMpCkBAIC0xNzQsMTIgKzE3NSwx
MiBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nCiAgICAgfQogfQog
Ci12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdElu
Zm9ybWF0aW9uKiBob3N0LCBQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCit2b2lkIFJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdEluZm9ybWF0aW9uKiBob3N0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7CiAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMg
SG9zdEluZm9ybWF0aW9uLm1fbmFtZT0nJXMnIiwgaG9zdC0+bmFtZSgpLmxhdGluMSgpLmRhdGEo
KSk7CiAKLSAgICBmb3IgKGludCBwcmlvcml0eSA9IEhpZ2hlc3RQcmlvcml0eTsgcHJpb3JpdHkg
Pj0gbWluaW11bVByaW9yaXR5OyAtLXByaW9yaXR5KSB7Ci0gICAgICAgIEhvc3RJbmZvcm1hdGlv
bjo6UmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcgPSBob3N0LT5yZXF1ZXN0c1BlbmRpbmco
KFByaW9yaXR5KSBwcmlvcml0eSk7CisgICAgZm9yIChpbnQgcHJpb3JpdHkgPSBSZXNvdXJjZUxv
YWRQcmlvcml0eUhpZ2hlc3Q7IHByaW9yaXR5ID49IG1pbmltdW1Qcmlvcml0eTsgLS1wcmlvcml0
eSkgeworICAgICAgICBIb3N0SW5mb3JtYXRpb246OlJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5k
aW5nID0gaG9zdC0+cmVxdWVzdHNQZW5kaW5nKChSZXNvdXJjZUxvYWRQcmlvcml0eSkgcHJpb3Jp
dHkpOwogCiAgICAgICAgIHdoaWxlICghcmVxdWVzdHNQZW5kaW5nLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IHJlcXVlc3Rz
UGVuZGluZy5maXJzdCgpOwpAQCAtMjM1LDExICsyMzYsMTEgQEAgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpIb3N0SW5mb3JtYXRpb246OgogUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3Jt
YXRpb246On5Ib3N0SW5mb3JtYXRpb24oKQogewogICAgIEFTU0VSVChtX3JlcXVlc3RzTG9hZGlu
Zy5pc0VtcHR5KCkpOwotICAgIGZvciAodW5zaWduZWQgcCA9IDA7IHAgPD0gSGlnaGVzdFByaW9y
aXR5OyBwKyspCisgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlv
cml0eUhpZ2hlc3Q7IHArKykKICAgICAgICAgQVNTRVJUKG1fcmVxdWVzdHNQZW5kaW5nW3BdLmlz
RW1wdHkoKSk7CiB9CiAgICAgCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9y
bWF0aW9uOjpzY2hlZHVsZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFByaW9yaXR5
IHByaW9yaXR5KQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6
c2NoZWR1bGUoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRQcmlv
cml0eSBwcmlvcml0eSkKIHsKICAgICBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV0uYXBwZW5k
KHJlc291cmNlTG9hZGVyKTsKIH0KQEAgLTI1Nyw3ICsyNTgsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgZm9yIChpbnQgcHJpb3JpdHkgPSBIaWdoZXN0UHJpb3JpdHk7IHByaW9yaXR5ID49IExvd2Vz
dFByaW9yaXR5OyAtLXByaW9yaXR5KSB7ICAKKyAgICBmb3IgKGludCBwcmlvcml0eSA9IFJlc291
cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcHJpb3JpdHkgPj0gUmVzb3VyY2VMb2FkUHJpb3JpdHlM
b3dlc3Q7IC0tcHJpb3JpdHkpIHsgIAogICAgICAgICBSZXF1ZXN0UXVldWU6Oml0ZXJhdG9yIGVu
ZCA9IG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XS5lbmQoKTsKICAgICAgICAgZm9yIChSZXF1
ZXN0UXVldWU6Oml0ZXJhdG9yIGl0ID0gbV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCppdCA9PSByZXNvdXJjZUxv
YWRlcikgewpAQCAtMjcyLDExICsyNzMsMjggQEAgYm9vbCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
Okhvc3RJbmZvcm1hdAogewogICAgIGlmICghbV9yZXF1ZXN0c0xvYWRpbmcuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIHAgPSAwOyBwIDw9IEhpZ2hl
c3RQcmlvcml0eTsgcCsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJj
ZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHArKykgewogICAgICAgICBpZiAoIW1fcmVxdWVzdHNQZW5k
aW5nW3BdLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3Jt
YXRpb246OnNldExvYWRTZXJpYWxseShib29sIHNlcmlhbGl6ZSkKK3sKKyAgICBpZiAoc2VyaWFs
aXplKQorICAgICAgICBtX21heFJlcXVlc3RzSW5GbGlnaHQgPSAxOworICAgIGVsc2UKKyAgICAg
ICAgbV9tYXhSZXF1ZXN0c0luRmxpZ2h0ID0gbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7Cit9
CisKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXRMb2FkU2VyaWFsbHkoY29uc3QgU3Ry
aW5nJiBob3N0TmFtZSwgYm9vbCBzZXJpYWxpemUpCit7CisgICAgSG9zdEluZm9ybWF0aW9uKiBo
b3N0ID0gbV9ob3N0cy5nZXQoaG9zdE5hbWUpOworICAgIGlmIChob3N0KQorICAgICAgICBob3N0
LT5zZXRMb2FkU2VyaWFsbHkoc2VyaWFsaXplKTsKKyAgICBlbHNlIGlmIChzZXJpYWxpemUpCisg
ICAgICAgIG1faG9zdHMuYWRkKGhvc3ROYW1lLCBuZXcgSG9zdEluZm9ybWF0aW9uKGhvc3ROYW1l
LCAxKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTQ3LDIyICs0OCwyMyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgOiBwdWJsaWMgTm9u
CiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCk7CiAKLSAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywgTG93LCBNZWRpdW0s
IEhpZ2gsIExvd2VzdFByaW9yaXR5ID0gVmVyeUxvdywgSGlnaGVzdFByaW9yaXR5ID0gSGlnaCB9
OwotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQcmlvcml0eSA9IExvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVj
aywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250
ZW50U25pZmYgPSB0cnVlKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hl
ZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYg
PSB0cnVlKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291cmNl
TG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7
CiAgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBLVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgCi0gICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKKyAgICB2b2lkIHNlcnZl
UGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFJl
c291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyk7CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVl
c3RzKCk7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICAKKyAgICB2b2lk
IHNldExvYWRTZXJpYWxseShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBib29sKTsKIAogcHJpdmF0
ZToKICAgICBSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKICAgICB+UmVzb3VyY2VMb2FkU2NoZWR1
bGVyKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciosIFByaW9yaXR5
KTsKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlTG9hZFBy
aW9yaXR5KTsKICAgICB2b2lkIHNjaGVkdWxlU2VydmVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICB2
b2lkIHJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPFJlc291cmNlTG9hZFNjaGVkdWxlcj4qKTsKIApA
QCAtNzIsMjEgKzc0LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIH5Ib3N0SW5mb3JtYXRpb24oKTsK
ICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZTsgfQotICAgICAgICB2b2lkIHNjaGVkdWxlKFJlc291cmNlTG9hZGVyKiwgUHJpb3JpdHkg
PSBWZXJ5TG93KTsKKyAgICAgICAgdm9pZCBzY2hlZHVsZShSZXNvdXJjZUxvYWRlciosIFJlc291
cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KTsKICAgICAgICAg
dm9pZCBhZGRMb2FkSW5Qcm9ncmVzcyhSZXNvdXJjZUxvYWRlciopOwogICAgICAgICB2b2lkIHJl
bW92ZShSZXNvdXJjZUxvYWRlciopOwogICAgICAgICBib29sIGhhc1JlcXVlc3RzKCkgY29uc3Q7
CiAgICAgICAgIGJvb2wgbGltaXRSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdHNM
b2FkaW5nLnNpemUoKSA+PSBtX21heFJlcXVlc3RzSW5GbGlnaHQ7IH0KIAogICAgICAgICB0eXBl
ZGVmIERlcXVlPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gPiBSZXF1ZXN0UXVldWU7Ci0gICAgICAg
IFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nKFByaW9yaXR5IHByaW9yaXR5KSB7IHJldHVy
biBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV07IH0KKyAgICAgICAgUmVxdWVzdFF1ZXVlJiBy
ZXF1ZXN0c1BlbmRpbmcoUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpIHsgcmV0dXJuIG1f
cmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XTsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRM
b2FkU2VyaWFsbHkoYm9vbCk7CiAKICAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgIFJlcXVlc3RRdWV1ZSBtX3JlcXVlc3RzUGVuZGluZ1tIaWdoZXN0UHJpb3JpdHkgKyAx
XTsKKyAgICAgICAgUmVxdWVzdFF1ZXVlIG1fcmVxdWVzdHNQZW5kaW5nW1Jlc291cmNlTG9hZFBy
aW9yaXR5SGlnaGVzdCArIDFdOwogICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFJlc291
cmNlTG9hZGVyPiA+IFJlcXVlc3RNYXA7CiAgICAgICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0c0xv
YWRpbmc7CiAgICAgICAgIGNvbnN0IFN0cmluZyBtX25hbWU7Ci0gICAgICAgIGNvbnN0IGludCBt
X21heFJlcXVlc3RzSW5GbGlnaHQ7CisgICAgICAgIGludCBtX21heFJlcXVlc3RzSW5GbGlnaHQ7
CiAgICAgfTsKIAogICAgIGVudW0gQ3JlYXRlSG9zdFBvbGljeSB7CkBAIC05NSw3ICs5OSw3IEBA
IHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwo
Y29uc3QgS1VSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7Ci0gICAgdm9pZCBzZXJ2
ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBQcmlvcml0eSk7CisgICAgdm9pZCBz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlvcml0
eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJp
bmdIYXNoPiBIb3N0TWFwOwogICAgIEhvc3RNYXAgbV9ob3N0czsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAko
cmV2aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSwyOCArNjUsNiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBl
IGNhY2hlCiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsK
IH0KIAotc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UHJpb3JpdHkgZGV0ZXJtaW5lUHJp
b3JpdHkoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIHN3aXRjaCAocmVz
b3VyY2UtPnR5cGUoKSkgewotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNo
ZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xT
dHlsZVNoZWV0OgotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpIaWdoOwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Ci0gICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6Ok1lZGl1bTsKLSAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OkxvdzsKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6VmVyeUxvdzsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpMb3c7Ci19Ci0KIExvYWRlcjo6
TG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsKQogICAgIDogbV9jYWNoZWRSZXNv
dXJjZUxvYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAsIG1fcmVzb3VyY2UocmVzb3Vy
Y2UpCkBAIC0xMzMsOSArMTExLDExIEBAIFBhc3NSZWZQdHI8TG9hZGVyPiBMb2FkZXI6OmxvYWQo
Q2FjaGVkUmUKICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoKQogICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJY
LVB1cnBvc2UiLCAicHJlZmV0Y2giKTsKICNlbmRpZgorICAgIAorICAgIFJlc291cmNlTG9hZFBy
aW9yaXR5IHByaW9yaXR5ID0gcmVzb3VyY2UtPmxvYWRQcmlvcml0eSgpOwogCiAgICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZy
YW1lKCksCi0gICAgICAgIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgZGV0ZXJtaW5l
UHJpb3JpdHkocmVzb3VyY2UpLCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKTsKKyAgICAgICAgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwg
c2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgaWYgKCFsb2Fk
ZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlz
IHJldmFsaWRhdGlvbj8KICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFy
dCBsb2FkaW5nICclcyciLCByZXNvdXJjZS0+dXJsKCkubGF0aW4xKCkuZGF0YSgpKTsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDczODk1KQor
KysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0NywyOCBAQAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAorc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcml0
eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0Ogor
I2lmIEVOQUJMRShYU0xUKQorICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNo
ZWV0OgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdo
OworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CisgICAgICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxv
YWRQcmlvcml0eU1lZGl1bTsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1By
ZWZldGNoOgorICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzsK
KyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUmVz
b3VyY2VMb2FkUHJpb3JpdHlMb3c7Cit9CiAKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgUmVmQ291
bnRlZExlYWtDb3VudGVyIGNhY2hlZFJlc291cmNlTGVha0NvdW50ZXIoIkNhY2hlZFJlc291cmNl
Iik7CkBAIC01NSw2ICs3Nyw3IEBAIHN0YXRpYyBSZWZDb3VudGVkTGVha0NvdW50ZXIgY2FjaGVk
UmVzb3UKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwg
VHlwZSB0eXBlKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9yZXF1ZXN0KDApCisgICAgLCBt
X2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAg
LCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiAgICAgLCBtX2xhc3REZWNvZGVk
QWNjZXNzVGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6ZSgwKQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJp
b3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTkwLDYgKzkxLDgg
QEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nICZ1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1f
dHlwZSk7IH0KKyAgICAKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCopOwpAQCAtMjE3LDYgKzIyMCw3IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV91
cmw7CiAgICAgU3RyaW5nIG1fYWNjZXB0OwogICAgIExvYWRlciogbV9yZXF1ZXN0OworICAgIFJl
c291cmNlTG9hZFByaW9yaXR5IG1fbG9hZFByaW9yaXR5OwogCiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogICAgIGRvdWJsZSBtX3Jlc3BvbnNlVGltZXN0YW1wOwpAQCAtMjMzLDYg
KzIzNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7
CiAgICAgdm9pZCB1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5
IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJnZURlZmF1bHQ7IH0KKyAgICB2b2lk
IHNldExvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkpIHsgbV9s
b2FkUHJpb3JpdHkgPSBsb2FkUHJpb3JpdHk7IH0KIAogICAgIGRvdWJsZSBjdXJyZW50QWdlKCkg
Y29uc3Q7CiAgICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA3
Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ1LDkgKzE0NSw5IEBAIENhY2hlZEZvbnQqIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCB1cmwsIFN0cmluZygp
KSk7CiB9CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
KQorQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNo
ZWRDU1NTdHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHls
ZVNoZWV0LCB1cmwsIGNoYXJzZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NT
U3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dCwgdXJsLCBjaGFyc2V0LCBwcmlvcml0eSkpOwogfQogCiBDYWNoZWRDU1NTdHlsZVNoZWV0KiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCkKK0NhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5LCBib29sIGlzUHJlbG9hZCkKIHsKICAgICBLVVJMIGZ1bGxVUkwgPSBtX2RvY3Vt
ZW50LT5jb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yNjIsNyArMjYyLDcgQEAgQ2FjaGVkUmVzb3Vy
Y2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZQogICAgIGNoZWNrRm9yUmVsb2FkKGZ1bGxVUkwp
OwogCiAgICAgYm9vbCBhbGxvd0Zvckhpc3RvcnlPbmx5UmVzb3VyY2VzID0gY2FjaGVQb2xpY3ko
KSA9PSBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXI7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gY2FjaGUoKS0+cmVxdWVzdFJlc291cmNlKHRoaXMsIHR5cGUsIGZ1bGxVUkwsIGNoYXJz
ZXQsIGlzUHJlbG9hZCwgYWxsb3dGb3JIaXN0b3J5T25seVJlc291cmNlcyk7CisgICAgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlID0gY2FjaGUoKS0+cmVxdWVzdFJlc291cmNlKHRoaXMsIHR5cGUs
IGZ1bGxVUkwsIGNoYXJzZXQsIHByaW9yaXR5LCBpc1ByZWxvYWQsIGFsbG93Rm9ySGlzdG9yeU9u
bHlSZXNvdXJjZXMpOwogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAvLyBDaGVjayBmaW5h
bCBVUkwgb2YgcmVzb3VyY2UgdG8gY2F0Y2ggcmVkaXJlY3RzLgogICAgICAgICAvLyBTZWUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2Mz4uCkBAIC00MzEsNyAr
NDMxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYQogICAgIGlm
ICh0eXBlID09IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJj
ZTo6Q1NTU3R5bGVTaGVldCkKICAgICAgICAgZW5jb2RpbmcgPSBjaGFyc2V0LmlzRW1wdHkoKSA/
IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT53cml0ZXIoKS0+ZW5jb2RpbmcoKSA6IGNo
YXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0UmVzb3VyY2Uo
dHlwZSwgdXJsLCBlbmNvZGluZywgdHJ1ZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
ID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHVybCwgZW5jb2RpbmcsIFJlc291cmNlTG9hZFByaW9y
aXR5VW5yZXNvbHZlZCwgdHJ1ZSk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAobV9wcmVsb2FkcyAm
JiBtX3ByZWxvYWRzLT5jb250YWlucyhyZXNvdXJjZSkpKQogICAgICAgICByZXR1cm47CiAgICAg
cmVzb3VyY2UtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgorI2luY2x1ZGUg
IlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgfkNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKICAgICBDYWNoZWRJbWFn
ZSogcmVxdWVzdEltYWdlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICBDYWNoZWRDU1NTdHlsZVNo
ZWV0KiByZXF1ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0KTsKKyAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1ZXN0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCk7CiAgICAg
Q2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hlZFNjcmlwdCogcmVxdWVz
dFNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICBD
YWNoZWRGb250KiByZXF1ZXN0Rm9udChjb25zdCBTdHJpbmcmIHVybCk7CkBAIC0xMDUsNyArMTA2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMoKTsKICAgICAKIHByaXZh
dGU6Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCBpc1By
ZWxvYWQgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVu
cmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwogICAgIHZvaWQgcmVxdWVzdFByZWxv
YWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQpOwogCiAgICAgdm9pZCBjaGVja0ZvclJlbG9hZChjb25zdCBLVVJMJik7CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
MTAgKzk1LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAg
ICByZXR1cm4gMDsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3RvcnkpCitDYWNoZWRSZXNvdXJj
ZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0
eSwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3RvcnkpCiB7Ci0gICAgTE9HKFJl
c291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNl
dCAnJXMnLCBwcmVsb2FkPSV1LCBmb3JIaXN0b3J5PSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgY2hhcnNldC5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3RJc1ByZWxvYWQsIGZvckhp
c3RvcnkpOwotCisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0
UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgcHJlbG9hZD0ldSwgZm9y
SGlzdG9yeT0ldSIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNoYXJzZXQubGF0aW4x
KCkuZGF0YSgpLCBwcmlvcml0eSwgcmVxdWVzdElzUHJlbG9hZCwgZm9ySGlzdG9yeSk7CisgICAg
CiAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIHNwZWNpYWwtY2FzZSBhbiBlbXB0
eSBVUkw/CiAgICAgLy8gV291bGQgaXQgYmUgYmV0dGVyIHRvIGp1c3QgZ28gb24gd2l0aCB0aGUg
Y2FjaGUgY29kZSBhbmQgbGV0IGl0IGZhaWwgbGF0ZXI/CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
CkBAIC0xNDQsNiArMTQ0LDEwIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVxdWVz
dFJlc28KICAgICAgICAgLy8gRklYTUU6IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBu
b3JtYWwgcmVmY291bnRpbmcgaW5zdGVhZC4KICAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUo
dHJ1ZSk7CiAgICAgICAgIAorICAgICAgICAvLyBEZWZhdWx0IHByaW9yaXR5IGJhc2VkIG9uIHJl
c291cmNlIHR5cGUgaXMgdXNlZCBpZiB0aGUgcmVxdWVzdCBkaWQgbm90IHNwZWNpZnkgb25lLgor
ICAgICAgICBpZiAocHJpb3JpdHkgIT0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKQor
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7CisKICAgICAg
ICAgcmVzb3VyY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAKICAgICAg
ICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTE2Miw2ICsxNjYsMTIgQEAg
Q2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzbwogICAgICAgICAgICAgcmVz
b3VyY2UtPnNldEluQ2FjaGUoZmFsc2UpOwogICAgICAgICAgICAgcmVzb3VyY2UtPnNldENhY2hl
ZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBVcGdyYWRpbmcgdGhlIHByaW9yaXR5IGRvZXNuJ3Qg
cmVhbGx5IGRvIG11Y2ggc2luY2UgdGhlIFJlc291cmNlTG9hZFNjaGVkdWxlciBkb2VzIG5vdCBj
dXJyZW50bHkKKyAgICAgICAgLy8gYWxsb3cgY2hhbmdpbmcgcHJpb3JpdGllcy4gVGhpcyBtaWdo
dCBiZWNvbWUgaW1wb3J0YW50IGlmIHdlIG1ha2Ugc2NoZWR1bGluZyBwcmlvcml0aWVzCisgICAg
ICAgIC8vIG1vcmUgZHluYW1pYy4KKyAgICAgICAgaWYgKHByaW9yaXR5ICE9IFJlc291cmNlTG9h
ZFByaW9yaXR5VW5yZXNvbHZlZCAmJiByZXNvdXJjZS0+bG9hZFByaW9yaXR5KCkgPCBwcmlvcml0
eSkKKyAgICAgICAgICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwogICAg
IH0KIAogICAgIGlmICghZGlzYWJsZWQoKSkgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXF1ZXN0IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3aWxsIGJlIGluaXRp
YXRlZCBhbmQgYSBjYWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0IGlzIG5vdAogICAg
IC8vIGZvdW5kIGluIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBi
b29sIGZvckhpc3RvcnkgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGJv
b2wgaXNQcmVsb2FkID0gZmFsc2UsIGJvb2wgZm9ySGlzdG9yeSA9IGZhbHNlKTsKIAogICAgIENh
Y2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAg
IApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDczOTEwKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMi0xMyAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzIyMDk0PiAKKyAgICAgICAgRGVmZXIgbG9hZGluZyBw
cmludCBzdHlsZXNoZWV0cworICAgICAgICAKKyAgICAgICAgRXhwb3NlIFNQSSBmb3IgRFJUIGZv
ciBtYWtpbmcgcmVzb3VyY2VzIGxvYWQgc2VyaWFsbHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0
aW5nIHJlc291cmNlIGxvYWQgb3JkZXIuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgrW1dlYlZpZXcgX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTpmb3JIb3N0Ol0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMC0xMC0yOCAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBP
amFuIFZhZmFpLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDczODk1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NjgsNiAr
MjY2OCwxMSBAQCAtIChCT09MKXNlYXJjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyCiAgICAg
cmV0dXJuIFtzZWxmIGZpbmRTdHJpbmc6c3RyaW5nIG9wdGlvbnM6KChmb3J3YXJkID8gMCA6IFdl
YkZpbmRPcHRpb25zQmFja3dhcmRzKSB8IChjYXNlRmxhZyA/IDAgOiBXZWJGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZSkgfCAod3JhcEZsYWcgPyBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQgOiAw
KSB8IChzdGFydEluU2VsZWN0aW9uID8gV2ViRmluZE9wdGlvbnNTdGFydEluU2VsZWN0aW9uIDog
MCkpXTsKIH0KIAorKyAodm9pZClfc2V0TG9hZFJlc291cmNlc1NlcmlhbGx5OihCT09MKXNlcmlh
bGl6ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3ROYW1lCit7CisgICAgcmVzb3VyY2VMb2FkU2No
ZWR1bGVyKCktPnNldExvYWRTZXJpYWxseShob3N0TmFtZSwgc2VyaWFsaXplKTsKK30KKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNiArNTI0LDkgQEAgQ291
bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiArICh2b2lkKV9yZW1vdmVVc2VyU3R5bGVT
aGVldHNGcm9tR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3Js
ZCAqKXdvcmxkOwogKyAodm9pZClfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6KE5TU3Ry
aW5nICopZ3JvdXBOYW1lOwogCisvLyBTUEkgZm9yIER1bXBSZW5kZXJUcmVlCisrICh2b2lkKV9z
ZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6KEJPT0wpc2VyaWFsaXplIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdE5hbWU7CisKIC8qIQogICAgIEBtZXRob2QgY3NzQW5pbWF0aW9uc1N1c3BlbmRlZAog
ICAgIEBhYnN0cmFjdCBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IENTUyBBbmltYXRpb25zIGFyZSBz
dXNwZW5kZWQuCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzkwNykKKysrIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEyLTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc2V0U2VyaWFsaXplSFRUUExvYWRzIGZ1bmN0aW9uIHRv
IGFsbG93IHRlc3RpbmcgcmVzb3VyY2UgbG9hZCBvcmRlciBvbiBPUyBYLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0U2Vy
aWFsaXplSFRUUExvYWRzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXpl
SFRUUExvYWRzKToKKwogMjAxMC0xMi0xMyAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NDUsNiArMTg0NSwxNyBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRFZGl0aW5nQmVoYXZpb3JDYWxsCiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTZXJp
YWxpemVIVFRQTG9hZHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8gc2V0
TG9hZFJlc291cmNlc1NlcmlhbGx5KGhvc3QsIHNlcmlhbGl6ZSkKKyAgICBpZiAoYXJndW1lbnRD
b3VudCAhPSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICBjb250cm9sbGVyLT5zZXRTZXJpYWxpemVIVFRQTG9hZHMoSlNWYWx1ZVRvQm9vbGVhbihjb250
ZXh0LCBhcmd1bWVudHNbMF0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIC8vIFN0YXRpYyBWYWx1ZXMKIAogc3RhdGljIEpTVmFsdWVSZWYgZ2V0R2xv
YmFsRmxhZ0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAg
LTIwMjksNiArMjA0MCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVy
OjoKICAgICAgICAgeyAic2V0UHJpbnRpbmciLCBzZXRQcmludGluZ0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQiLCBzZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCIsIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTZXJpYWxpemVIVFRQTG9hZHMiLCBzZXRTZXJp
YWxpemVIVFRQTG9hZHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQiLCBzZXRTcGF0aWFs
TmF2aWdhdGlvbkVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJv
dmlzaW9uYWxGcmFtZUxvYWRzIiwgc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDczODk1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDYg
KzI4Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBp
bnQgbGVuZ3RoKTsKIAogICAgIHZvaWQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQg
YXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFibGVIZWlnaHQpOworICAgIAorICAgIHZvaWQgc2V0
U2VyaWFsaXplSFRUUExvYWRzKGJvb2wgc2VyaWFsaXplKTsKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgQVBJIHRlc3QgZnVuY3Rpb25zIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBwbGF0Zm9y
bS1zcGVjaWZpYyAKICAgICAvLyB1bml0IHRlc3RzIG91dHNpZGUgb2YgRFJUIG9uY2UgdGhleSBl
eGlzdC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDczODk1KQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OTgsMyArOTk4LDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZHVtcENvbmZpZ3VyYQogewogCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNl
cmlhbGl6ZUhUVFBMb2Fkcyhib29sIHNlcmlhbGl6ZSkKK3sKKyAgICBbV2ViVmlldyBfc2V0TG9h
ZFJlc291cmNlc1NlcmlhbGx5OnNlcmlhbGl6ZSBmb3JIb3N0OkAiMTI3LjAuMC4xIl07Cit9Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MzkxMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEwLTEyLTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisg
ICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNo
ZWV0LWxvYWQtb3JkZXItcHJlbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9y
ZGVyLmh0bWw6IEFkZGVkLgorCisyMDEwLTEyLTA5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA3NTgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg3MjIwOTQ+IAorICAgICAgICBEZWZlciBsb2FkaW5nIHByaW50IHN0
eWxlc2hlZXRzCisgICAgICAgIAorICAgICAgICBUZXN0IGxvYWQgb3JkZXJpbmcuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQt
bG9hZC1vcmRlci1wcmVsb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1wcmVsb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIu
aHRtbDogQWRkZWQuCisKIDIwMTAtMTItMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3Mzg5OC4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQt
b3JkZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1v
cmRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKyBUZXN0IHN0
eWxlc2hlZXQgbG9hZCBzY2hlZHVsaW5nLiBSZXNvdXJjZSBsb2FkcyBmb3Igc2NyZWVuIHN0eWxl
c2hlZXRzIHNob3VsZCBiZSBzY2hlZHVsZWQgZmlyc3QsIG90aGVycyBzaG91bGQgYmUgc2NoZWR1
bGVkIGxhc3QuCitSZXNvdXJjZSByZXF1ZXN0czoKKworCituby1tZWRpYS5jc3MKK21lZGlhLWVt
cHR5LmNzcworbWVkaWEtYWxsLmNzcworbWVkaWEtc2NyZWVuLmNzcworbWVkaWEtc2NyZWVuLXF1
ZXJ5LXN1Y2Nlc3MuY3NzCittZWRpYS1icmFpbGxlLXNjcmVlbi5jc3MKK21lZGlhLXNjcmVlbi1x
dWVyeS1mYWlsLmNzcworbm8tbWVkaWEtMi5jc3MKK21lZGlhLWVtcHR5LTIuY3NzCittZWRpYS1h
bGwtMi5jc3MKK21lZGlhLXNjcmVlbi0yLmNzcworbWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3Mt
Mi5jc3MKK21lZGlhLWJyYWlsbGUtc2NyZWVuLTIuY3NzCittZWRpYS1zY3JlZW4tcXVlcnktZmFp
bC0yLmNzcworc2NyaXB0LmpzCitpbWFnZS5qcGcKK21lZGlhLXByaW50LmNzcworbWVkaWEtYXVy
YWwuY3NzCittZWRpYS1icmFpbGxlLmNzcworbWVkaWFuLWhhbmRoZWxkLmNzcworbWVkaWEtcHJv
amVjdGlvbi5jc3MKK21lZGlhLXR0eS5jc3MKK21lZGlhLXR2LmNzcworbWVkaWEtcHJpbnQtMi5j
c3MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxv
YWQtb3JkZXItcHJlbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1wcmVsb2FkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjkgQEAKKyBUZXN0IHN0eWxlc2hlZXQgbG9hZCBzY2hlZHVsaW5nIHdpdGgg
cHJlbG9hZCBzY2FubmVyLiBSZXNvdXJjZSBsb2FkcyBmb3Igc2NyZWVuIHN0eWxlc2hlZXRzIHNo
b3VsZCBiZSBzY2hlZHVsZWQgZmlyc3QsIG90aGVycyBzaG91bGQgYmUgc2NoZWR1bGVkIGxhc3Qu
CitSZXNvdXJjZSByZXF1ZXN0czoKKworCitzY3JpcHQuanMKK25vLW1lZGlhLmNzcworbWVkaWEt
ZW1wdHkuY3NzCittZWRpYS1hbGwuY3NzCittZWRpYS1zY3JlZW4uY3NzCittZWRpYS1icmFpbGxl
LXNjcmVlbi5jc3MKK25vLW1lZGlhLTIuY3NzCittZWRpYS1lbXB0eS0yLmNzcworbWVkaWEtYWxs
LTIuY3NzCittZWRpYS1zY3JlZW4tMi5jc3MKK21lZGlhLWJyYWlsbGUtc2NyZWVuLTIuY3NzCitt
ZWRpYS1zY3JlZW4tcXVlcnktc3VjY2Vzcy5jc3MKK21lZGlhLXNjcmVlbi1xdWVyeS1mYWlsLmNz
cworbWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MtMi5jc3MKK21lZGlhLXNjcmVlbi1xdWVyeS1m
YWlsLTIuY3NzCitzY3JpcHQtMi5qcworaW1hZ2UuanBnCittZWRpYS1wcmludC5jc3MKK21lZGlh
LWF1cmFsLmNzcworbWVkaWEtYnJhaWxsZS5jc3MKK21lZGlhbi1oYW5kaGVsZC5jc3MKK21lZGlh
LXByb2plY3Rpb24uY3NzCittZWRpYS10dHkuY3NzCittZWRpYS10di5jc3MKK21lZGlhLXByaW50
LTIuY3NzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVl
dC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0
LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACis8
aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgLy8gUHJldmVudCBuZXR3b3JraW5nIGxheWVyIGZyb20gcmVvcmRlcmluZyBsb2Fk
cy4KKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2Fk
cykKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2Fk
cyhmYWxzZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gQ2FsbENvbW1hbmQoY21kKQorICAgIHsK
KyAgICAgdHJ5IHsKKyAgICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAg
ICAgICByZXEub3BlbigiR0VUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9IiArIGNtZCwgZmFsc2UpOworICAgICAgICAgcmVx
LnNlbmQobnVsbCk7CisgICAgICAgICByZXR1cm4gcmVxLnJlc3BvbnNlVGV4dDsKKyAgICAgfSBj
YXRjaCAoZXgpIHsKKyAgICAgICAgIHJldHVybiAiIjsKKyAgICAgfQorICAgIH0KKworICAgIGZ1
bmN0aW9uIGVuZFRlc3QoKQorICAgIHsKKyAgICAgICAgZ2V0UmVzb3VyY2VMb2coKTsKKyAgICAg
ICAgQ2FsbENvbW1hbmQoImNsZWFyLXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKGxheW91
dFRlc3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcykKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMoZmFsc2UpOworICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMb2coKQorICAgIHsKKyAgICAgICAgdmFyIGxv
ZyA9IENhbGxDb21tYW5kKCJnZXQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICAgICAgdmFy
IGxvZ0xpbmVzID0gbG9nLnNwbGl0KCdcbicpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gbG9nTGluZXMuam9pbignXG4nKTsKKyAgICB9CisK
KyAgICBDYWxsQ29tbWFuZCgic3RhcnQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGVuZFRlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+
CisgIAorICA8IS0tIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcmVsb2FkIHNjYW5uZXIgLS0+Cisg
IDxzY3JpcHQgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2lt
dWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9c2NyaXB0LmpzIj48
L3NjcmlwdD4KKworICA8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJj
ZS1yZXF1ZXN0JnBhdGg9bm8tbWVkaWEuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVk
aWE9IiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVs
YXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWVtcHR5LmNz
cyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhbGwiIGhyZWY9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJl
c291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hbGwuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hl
ZXQgbWVkaWE9InByaW50IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVk
aWEtcHJpbnQuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiIgaHJl
Zj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/
Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi5jc3MiPgorICA8
bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxcHgpIiBo
cmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBo
cD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LXN1
Y2Nlc3MuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUsIHNjcmVl
biIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRv
ci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWJyYWlsbGUtc2Ny
ZWVuLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4t
d2lkdGg6IDEwMDAwMDBweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMv
bmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1t
ZWRpYS1zY3JlZW4tcXVlcnktZmFpbC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRp
YT0iYXVyYWwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1z
aW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hdXJh
bC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYnJhaWxsZSIgaHJlZj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWJyYWlsbGUuY3NzIj4KKyAgPGxpbmsg
cmVsPXN0eWxlc2hlZXQgbWVkaWE9ImhhbmRoZWxkIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bWVkaWFuLWhhbmRoZWxkLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0
IG1lZGlhPSJwcm9qZWN0aW9uIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9
bWVkaWEtcHJvamVjdGlvbi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0idHR5
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtdHR5LmNzcyI+Cisg
IDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJ0diIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2Ut
cmVxdWVzdCZwYXRoPW1lZGlhLXR2LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1uby1tZWRpYS0yLmNzcyI+CisgIDxsaW5r
IHJlbD1zdHlsZXNoZWV0IG1lZGlhPSIiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNv
dXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3Qm
cGF0aD1tZWRpYS1lbXB0eS0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJh
bGwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0
b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hbGwtMi5jc3Mi
PgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0icHJpbnQiIGhyZWY9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJl
c291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1wcmludC0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHls
ZXNoZWV0IG1lZGlhPSJzY3JlZW4iIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJj
ZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0
aD1tZWRpYS1zY3JlZW4tMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2Ny
ZWVuIGFuZCAobWluLXdpZHRoOiAxcHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0
JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MtMi5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0iYnJhaWxsZSwgc2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bWVkaWEtYnJhaWxsZS1zY3JlZW4tMi5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAwMDAwcHgpIiBocmVmPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21t
YW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LWZhaWwtMi5j
c3MiPgorICAKKzwvaGVhZD4KKzxib2R5PgorICA8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2Ut
cmVxdWVzdCZwYXRoPWltYWdlLmpwZyI+CisgIDxzY3JpcHQgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJj
ZS1yZXF1ZXN0JnBhdGg9c2NyaXB0LTIuanMiPjwvc2NyaXB0PgorCisgIFRlc3Qgc3R5bGVzaGVl
dCBsb2FkIHNjaGVkdWxpbmcgd2l0aCBwcmVsb2FkIHNjYW5uZXIuIFJlc291cmNlIGxvYWRzIGZv
ciBzY3JlZW4gc3R5bGVzaGVldHMgc2hvdWxkIGJlIHNjaGVkdWxlZCBmaXJzdCwgb3RoZXJzIHNo
b3VsZCBiZSBzY2hlZHVsZWQgbGFzdC4KKworICA8aDI+UmVzb3VyY2UgcmVxdWVzdHM6PC9oMj4K
KyAgPHByZSBpZD0icmVzdWx0Ij5SZXF1ZXN0IGxvZyBnb2VzIGhlcmUgaW4gRFJUPC9wcmU+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmst
c3R5bGVzaGVldC1sb2FkLW9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1v
cmRlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACis8aHRtbD4KKzxoZWFkPgor
ICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1VVEYtOCI+CisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgLy8gUHJl
dmVudCBuZXR3b3JraW5nIGxheWVyIGZyb20gcmVvcmRlcmluZyBsb2Fkcy4KKyAgICAgICAgaWYg
KGxheW91dFRlc3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcykKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyh0cnVlKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBDYWxsQ29tbWFuZChjbWQpCisgICAgeworICAgICB0cnkgeworICAg
ICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAgIHJlcS5vcGVuKCJH
RVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5w
aHA/Y29tbWFuZD0iICsgY21kLCBmYWxzZSk7CisgICAgICAgICByZXEuc2VuZChudWxsKTsKKyAg
ICAgICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0OworICAgICB9IGNhdGNoIChleCkgeworICAg
ICAgICAgcmV0dXJuICIiOworICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZW5kVGVzdCgp
CisgICAgeworICAgICAgICBnZXRSZXNvdXJjZUxvZygpOworICAgICAgICBDYWxsQ29tbWFuZCgi
Y2xlYXItcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U2VyaWFsaXplSFRUUExvYWRzKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biBnZXRSZXNvdXJjZUxvZygpCisgICAgeworICAgICAgICB2YXIgbG9nID0gQ2FsbENvbW1hbmQo
ImdldC1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOworICAgICAgICB2YXIgbG9nTGluZXMgPSBsb2cu
c3BsaXQoJ1xuJyk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lclRleHQgPSBsb2dMaW5lcy5qb2luKCdcbicpOworICAgIH0KKworICAgIENhbGxDb21tYW5k
KCJzdGFydC1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdsb2FkJywgZW5kVGVzdCwgZmFsc2UpOworICA8L3NjcmlwdD4KKworICA8bGluayByZWw9
c3R5bGVzaGVldCBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmst
c2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm8tbWVkaWEu
Y3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9IiIgaHJlZj0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVz
b3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWVtcHR5LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNo
ZWV0IG1lZGlhPSJhbGwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YS1hbGwuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InByaW50IiBocmVmPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21t
YW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtcHJpbnQuY3NzIj4KKyAgPGxpbmsg
cmVsPXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVx
dWVzdCZwYXRoPW1lZGlhLXNjcmVlbi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRp
YT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxcHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MuY3NzIj4KKyAgPGxpbmsgcmVs
PXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUsIHNjcmVlbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3Vy
Y2UtcmVxdWVzdCZwYXRoPW1lZGlhLWJyYWlsbGUtc2NyZWVuLmNzcyI+CisgIDxsaW5rIHJlbD1z
dHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDAwMDBweCkiIGhyZWY9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3JlZW4tcXVlcnktZmFpbC5j
c3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYXVyYWwiIGhyZWY9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9n
LXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hdXJhbC5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0iYnJhaWxsZSIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW1lZGlhLWJyYWlsbGUuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9Imhh
bmRoZWxkIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2lt
dWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWFuLWhhbmRo
ZWxkLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJwcm9qZWN0aW9uIiBocmVm
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9j
b21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtcHJvamVjdGlvbi5jc3MiPgor
ICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0idHR5IiBocmVmPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJj
ZS1yZXF1ZXN0JnBhdGg9bWVkaWEtdHR5LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1l
ZGlhPSJ0diIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXR2LmNz
cyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9y
ZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVl
c3QmcGF0aD1uby1tZWRpYS0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSIi
IGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3Iu
cGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1lbXB0eS0yLmNzcyI+
CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhbGwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291
cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hbGwtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVl
dCBtZWRpYT0icHJpbnQiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YS1wcmludC0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4iIGhy
ZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhw
P2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3JlZW4tMi5jc3MiPgor
ICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxcHgp
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5
LXN1Y2Nlc3MtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYnJhaWxsZSwg
c2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2lt
dWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtYnJhaWxs
ZS1zY3JlZW4tMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFu
ZCAobWluLXdpZHRoOiAxMDAwMDAwcHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0
JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LWZhaWwtMi5jc3MiPgorICAKKzwvaGVhZD4KKzxib2R5
PgorICA8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPWltYWdlLmpwZyI+
CisgIDxzY3JpcHQgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmst
c2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9c2NyaXB0Lmpz
Ij48L3NjcmlwdD4KKworICBUZXN0IHN0eWxlc2hlZXQgbG9hZCBzY2hlZHVsaW5nLiBSZXNvdXJj
ZSBsb2FkcyBmb3Igc2NyZWVuIHN0eWxlc2hlZXRzIHNob3VsZCBiZSBzY2hlZHVsZWQgZmlyc3Qs
IG90aGVycyBzaG91bGQgYmUgc2NoZWR1bGVkIGxhc3QuCisKKyAgPGgyPlJlc291cmNlIHJlcXVl
c3RzOjwvaDI+CisgIDxwcmUgaWQ9InJlc3VsdCI+UmVxdWVzdCBsb2cgZ29lcyBoZXJlIGluIERS
VDwvcHJlPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76390</attachid>
            <date>2010-12-13 08:53:15 -0800</date>
            <delta_ts>2010-12-13 10:37:20 -0800</delta_ts>
            <desc>fix drt build</desc>
            <filename>defer-print-stylesheets-4.patch</filename>
            <type>text/plain</type>
            <size>64222</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzkxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTAtMTItMTMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODcyMjA5ND4gCisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVz
aGVldHMKKyAgICAgICAgCisgICAgICAgIC0gTWFrZSBwcmVsb2FkIHNjYW5uZXIgc2tpcCBzdHls
ZXNoZWV0cyB3aXRoIG5vbi1zY3JlZW4gbWVkaWEgdHlwZXMuCisgICAgICAgIC0gTWFrZSBpdCBw
b3NzaWJsZSB0byBzcGVjaWZ5IG5vbi1kZWZhdWx0IGxvYWQgcHJpb3JpdHkgZnJvbSB0aGUgY2xp
ZW50LgorICAgICAgICAtIFVzZSB0aGlzIG1lY2hhbmlzbSB0byBsb2FkIHByaW50IHN0eWxlc2hl
ZXRzIHVzaW5nIHZlcnkgbG93IHByaW9yaXR5IHNvIHRoZXkgZ2V0IGxvYWRlZCBhZnRlciBldmVy
eXRoaW5nIGVsc2UuCisgICAgICAgIC0gTW92ZSBkZWZhdWx0IHByaW9yaXR5IGNvZGUgZnJvbSBM
b2FkZXIgdG8gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAgIC0gTW92ZSBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OlByaW9yaXR5IGVudW0gdG8gYSBzZXBhcmF0ZSBmaWxlIChhcyBSZXNvdXJjZUxvYWRQ
cmlvcml0eSkuCisgICAgICAgIC0gQWRkIGEgd2F5IHRvIG1ha2UgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyIGxvYWQgcmVzb3VyY2VzIG9uZSBhdCB0aGUgdGltZSBzbyB0aGUgYWJvdmUgZnVuY3Rpb25h
bGl0eSBjYW4gYmUgdGVzdGVkIHJlbGlhYmx5LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3Rz
L2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAqIGNzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFs
dWF0b3I6OmV2YWwpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CisgICAg
ICAgICogZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1l
bnQ6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OlByZWxvYWRUYXNrOjpQcmVsb2FkVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OlByZWxvYWRUYXNrOjpwcm9jZXNzQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTmFtZXM6OlByZWxvYWRUYXNrOjpsaW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnByZWxvYWQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZFByaW9yaXR5Lmg6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjp+
SG9zdEluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6SG9zdEluZm9ybWF0aW9uOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpoYXNSZXF1ZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlv
bjo6c2V0TG9hZFNlcmlhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2V0TG9hZFNlcmlhbGx5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJ
bmZvcm1hdGlvbjo6cmVxdWVzdHNQZW5kaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFByaW9yaXR5Rm9yUmVz
b3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNv
dXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZFByaW9yaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAg
KiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9hZCk6CisK
IDIwMTAtMTItMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3Mzg5OC4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC00OTEsNyArNDkxLDggQEAgX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04z
VwogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9f
Wk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnRFTlMwXzRUeXBlRWIKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdO
U0V2ZW50Ci1fX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5n
UmVxdWVzdHNFTlMwXzhQcmlvcml0eUUKK19fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1
bGVyMTVzZXRMb2FkU2VyaWFsbHlFUktOM1dURjZTdHJpbmdFYgorX19aTjdXZWJDb3JlMjFSZXNv
dXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2Fk
UHJpb3JpdHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTIxU1ZHRG9jdW1l
bnRFeHRlbnNpb25zMjFzYW1wbGVBbmltYXRpb25BdFRpbWVFUktOM1dURjZTdHJpbmdFUE5TXzE0
U1ZHU01JTEVsZW1lbnRFZAogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRl
c2VyaWFsaXplRVBLMTVPcGFxdWVKU0NvbnRleHRQUEsxM09wYXF1ZUpTVmFsdWUKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3Mzg5NSkK
KysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NDg2LDYgKzU0ODYsNyBAQAogCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyog
VGhyZWFkR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5j
cHAgKi87IH07CiAJCUU0MTVGMTY5MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNv
bnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
MTVGMTY4MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wuaCAqLzsgfTsK
IAkJRTQxNUYxODQwRDlBMUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxNUYxODMwRDlBMUE4
MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovOyB9OworCQlFNDI5NUZBNDEyQjA2
MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Mjk1RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBS
ZXNvdXJjZUxvYWRQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0NDYxM0ExMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
NDYxMzhGMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCAqLzsgfTsKIAkJ
RTQ0NjEzQTIwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDYxMzkwMENENjMzMTAwMEZB
REE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggKi87IH07CiAJCUU0NDYxM0E0MENENjMzMTAwMEZB
REE3NSAvKiBIVE1MTWVkaWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDYxMzkyMENENjMzMTAwMEZBREE3NSAvKiBIVE1MTWVkaWFF
bGVtZW50LmNwcCAqLzsgfTsKQEAgLTExNzc5LDYgKzExNzgwLDcgQEAKIAkJRTQxNUYxODMwRDlB
MUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFbGVtZW50VGltZUNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlOYW1lcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM5MTE5ODM3NDkwMDcxMEJD
NSAvKiBDU1NWYWx1ZUtleXdvcmRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1ZhbHVlS2V5d29yZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNDI5NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkUHJpb3JpdHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0NjEzOEYwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhU
TUxBdWRpb0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTEF1ZGlvRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYx
MzkwMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQ0NjEzOTEwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4NzAsNiArMTc4NzIsNyBAQAogCQkJCTY1NkQzNzI3
MEFEQkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTk3M0UzMjU0MTA4
ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8sCiAJCQkJOTczRTMy
NTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi8sCisJCQkJRTQy
OTVGQTMxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggKi8sCiAJCQkJ
RDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgKi8s
CiAJCQkJRDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5o
ICovLAogCQkJCTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICov
LApAQCAtMjIxMTQsNiArMjIxMTcsNyBAQAogCQkJCTQ5OUIzRUM1MTI4Q0NDNDcwMEU3MjZDMiAv
KiBQbGF0Zm9ybUNBTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRURE
MTI4REI1MDIwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRjkxMkIwMjY3NjAwQzFB
MzU5IC8qIEF1ZGlvQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGQzEyQjAyNjc2
MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0eWxlQ2FjaGVk
SW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEkKICAgICAgICAgICAgIGNhY2hlZEltYWdlID0g
bG9hZGVyLT5yZXF1ZXN0SW1hZ2UodXJsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIGZpbmQgYSB3YXkgdG8gbWFrZSB0aGVzZSBpbWFnZXMgc2l0IGluIHRo
ZWlyIG93biBtZW1vcnkgcGFydGl0aW9uLCBzaW5jZSB0aGV5IGFyZSB1c2VyIGFnZW50IGltYWdl
cy4KLSAgICAgICAgICAgIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihj
YWNoZSgpLT5yZXF1ZXN0UmVzb3VyY2UoMCwgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSkpOworICAgICAgICAgICAgY2Fj
aGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hlKCktPnJlcXVlc3RSZXNv
dXJjZSgwLCBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIFN0cmluZygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChjYWNoZWRJbWFnZSkgewpJbmRleDogV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0
aWMgYm9vbCBhcHBseVJlc3RyaWN0b3IoTWVkaWFRdWVyeTo6CiAgICAgcmV0dXJuIHIgPT0gTWVk
aWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7CiB9CiAKLWJvb2wgTWVkaWFRdWVyeUV2YWx1
YXRvcjo6ZXZhbChjb25zdCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciog
c3R5bGVTZWxlY3RvcikgY29uc3QKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChQYXNz
UmVmUHRyPE1lZGlhTGlzdD4gbWVkaWFMaXN0LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVj
dG9yKSBjb25zdAogewogICAgIGlmICghbWVkaWFMaXN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDczODk1KQorKysgV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIG1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoY29uc3QgY2hh
ciogbWVkaWFUeXBlVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvKiogRXZhbHVhdGVzIGEgbGlzdCBv
ZiBtZWRpYSBxdWVyaWVzICovCi0gICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhTGlzdCosIENTU1N0
eWxlU2VsZWN0b3IqID0gMCkgY29uc3Q7CisgICAgYm9vbCBldmFsKFBhc3NSZWZQdHI8TWVkaWFM
aXN0PiwgQ1NTU3R5bGVTZWxlY3RvciogPSAwKSBjb25zdDsKIAogICAgIC8qKiBFdmFsdWF0ZXMg
bWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTogdmFsdWUp
IiBwYXJ0ICovCiAgICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhUXVlcnlFeHAqKSBjb25zdDsKSW5k
ZXg6IFdlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL2RvbS9TdHls
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBTdHls
ZUVsZW1lbnQ6OmNyZWF0ZVNoZWV0KEVsZW1lbnQqIAogICAgICAgICBSZWZQdHI8TWVkaWFMaXN0
PiBtZWRpYUxpc3QgPSBNZWRpYUxpc3Q6OmNyZWF0ZShtZWRpYSgpLCBlLT5pc0hUTUxFbGVtZW50
KCkpOwogICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIHRy
dWUpOwogICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiLCB0cnVl
KTsKLSAgICAgICAgaWYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3QuZ2V0KCkpIHx8IHByaW50
RXZhbC5ldmFsKG1lZGlhTGlzdC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHNjcmVlbkV2YWwuZXZh
bChtZWRpYUxpc3QpIHx8IHByaW50RXZhbC5ldmFsKG1lZGlhTGlzdCkpIHsKICAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRQZW5kaW5nU2hlZXQoKTsKICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRy
dWU7CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGUsIFN0cmlu
ZygpLCBLVVJMKCksIGRvY3VtZW50LT5pbnB1dEVuY29kaW5nKCkpOwpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCwxMCArMjI0LDE2IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNU
ZXh0Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGlu
Z3MoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NM
aW5rQXNTdHlsZXNoZWV0KCk7CiAKLSAgICAvLyBTdHlsZXNoZWV0Ci0gICAgLy8gVGhpcyB3YXMg
YnVnZ3kgYW5kIHdvdWxkIGluY29ycmVjdGx5IG1hdGNoIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIj4s
IHdoaWNoIGhhcyBhIGRpZmZlcmVudCBzcGVjaWZpZWQgbWVhbmluZy4gLWR3aAotICAgIGlmICht
X2Rpc2FibGVkU3RhdGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4
dC9jc3MiKSkpICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIC8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25lIGRv
Y3VtZW50cworICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbG9hZCB1bm5lY2Vzc2FyeSBzdHls
ZXNoZWV0cyBhdCBhbGwuCisgICAgYm9vbCBtZWRpYUlzU2NyZWVuID0gdHJ1ZTsKKyAgICBpZiAo
IW1fbWVkaWEuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0g
TWVkaWFMaXN0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOworICAg
ICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWx1YXRvcigic2NyZWVuIiwgdHJ1ZSk7
CisgICAgICAgIG1lZGlhSXNTY3JlZW4gPSBzY3JlZW5FdmFsdWF0b3IuZXZhbChtZWRpYSk7Cisg
ICAgfQorICAgIAorICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVs
QXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1Mg
JiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpIAorICAgICAgICAmJiBkb2N1bWVudCgpLT5m
cmFtZSgpICYmIG1fdXJsLmlzVmFsaWQoKSkgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNo
YXJzZXQgPSBnZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIpOwogICAgICAgICBpZiAoY2hhcnNldC5p
c0VtcHR5KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKQEAgLTI1MCw3ICsyNTYsOSBAQCB2b2lk
IEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIGlmICghaXNBbHRlcm5hdGUoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOwogCi0gICAgICAgIG1f
Y2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0
Q1NTU3R5bGVTaGVldChtX3VybCwgY2hhcnNldCk7CisgICAgICAgIC8vIExvYWQgcHJpbnQgc3R5
bGVzaGVldHMgd2l0aCBsb3cgcHJpb3JpdHkgc28gdGhleSBkb24ndCBhZmZlY3Qgbm9ybWFsIHBh
Z2UgbG9hZGluZy4KKyAgICAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBtZWRp
YUlzU2NyZWVuID8gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkIDogUmVzb3VyY2VMb2Fk
UHJpb3JpdHlWZXJ5TG93OworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdENTU1N0eWxlU2hlZXQobV91cmwsIGNoYXJzZXQs
IHByaW9yaXR5KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAg
ICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwpJbmRleDogV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiTWVk
aWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRUYXNrKGNv
bnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIDogbV90YWdOYW1lKHRva2VuLm5hbWUoKS5k
YXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpCiAgICAgICAgICwgbV9saW5rSXNTdHlsZVNoZWV0
KGZhbHNlKQorICAgICAgICAsIG1fbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyh0cnVlKQogICAg
IHsKICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAgICB9
CkBAIC03Miw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgc2V0VXJsVG9M
b2FkKGF0dHJpYnV0ZVZhbHVlKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVO
YW1lID09IHJlbEF0dHIpCiAgICAgICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9
IHJlbEF0dHJpYnV0ZUlzU3R5bGVTaGVldChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBtZWRpYUF0dHIpCisgICAgICAgICAgICAgICAg
ICAgIG1fbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcyA9IGxpbmtNZWRpYUF0dHJpYnV0ZU1hdGNo
ZXMoYXR0cmlidXRlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
ODMsNiArODgsMTkgQEAgcHVibGljOgogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXpl
UmVsQXR0cmlidXRlKGF0dHJpYnV0ZVZhbHVlLCByZWwpOwogICAgICAgICByZXR1cm4gcmVsLm1f
aXNTdHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFy
ZWwubV9pc0ROU1ByZWZldGNoOwogICAgIH0KKyAgICAKKyAgICBib29sIGxpbmtNZWRpYUF0dHJp
YnV0ZU1hdGNoZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB7CisgICAgICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWFMaXN0ID0gTWVkaWFMaXN0OjpjcmVhdGVB
bGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAKKyAgICAgICAg
Ly8gT25seSBwcmVsb2FkIHNjcmVlbiBtZWRpYSBzdHlsZXNoZWV0cy4gVXNlZCB0aGlzIHdheSwg
dGhlIGV2YWx1YXRvciBldmFsdWF0ZXMgdG8gZmFsc2UgZm9yIGFueSAKKyAgICAgICAgLy8gcnVs
ZXMgY29udGFpbmluZyBjb21wbGV4IHF1ZXJpZXMgKGZ1bGwgZXZhbHVhdGlvbiBpcyBwb3NzaWJs
ZSBidXQgaXQgcmVxdWlyZXMgZnJhbWUgYW5kIHN0eWxlIHNlbGVjdG9yIHdoaWNoCisgICAgICAg
IC8vIG1heSBiZSBwcm9ibGVtYXRpYyBoZXJlKS4gQ2FzZXMgd2hlcmUgcGlja2luZyB0aGVzZSBm
b3IgcHJlbG9hZGluZyB3b3VsZCBoZWxwIGFyZSBwcm9iYWJseSByYXJlLgorICAgICAgICBNZWRp
YVF1ZXJ5RXZhbHVhdG9yIG1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiIsIGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIG1lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbChtZWRpYUxpc3QpOworICAgIH0K
IAogICAgIHZvaWQgc2V0VXJsVG9Mb2FkKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAg
ICAgewpAQCAtMTAzLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhY2hlZFJlc291
cmNlTG9hZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIG1fdXJsVG9Mb2FkLCBt
X2NoYXJzZXQsIHNjYW5uaW5nQm9keSk7CiAgICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBp
bWdUYWcpIAogICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIG1fdXJsVG9Mb2FkLCBTdHJpbmcoKSwgc2Nhbm5pbmdC
b2R5KTsKLSAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9saW5rSXNT
dHlsZVNoZWV0KSAKKyAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9s
aW5rSXNTdHlsZVNoZWV0ICYmIG1fbGlua01lZGlhQXR0cmlidXRlTWF0Y2hlcykgCiAgICAgICAg
ICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5KTsKICAgICB9CiAK
QEAgLTExNCw2ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VybFRvTG9hZDsKICAg
ICBTdHJpbmcgbV9jaGFyc2V0OwogICAgIGJvb2wgbV9saW5rSXNTdHlsZVNoZWV0OworICAgIGJv
b2wgbV9saW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNp
b24gNzM4OTUpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZQogCiAgICAgICAgIC8vIENsZWFyIHRoZSBsb2FkZXIgc28gdGhh
dCBhbnkgY2FsbGJhY2tzIGZyb20gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSB3aWxsIG5vdCBo
YXZlIHRoZSBvbGQgbG9hZGVyLgogICAgICAgICBtX2xvYWRlciA9IDA7Ci0gICAgICAgIG1fbG9h
ZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1f
ZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6
TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBzZW5kTG9hZENhbGxiYWNrcywgc25pZmZDb250ZW50KTsK
KyAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJy
ZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHlNZWRpdW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlm
ZkNvbnRlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkUHJpb3JpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRQcmlvcml0eS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkUHJpb3JpdHlfaAorI2RlZmluZSBSZXNvdXJj
ZUxvYWRQcmlvcml0eV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBSZXNvdXJjZUxv
YWRQcmlvcml0eSB7IAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdywgCisgICAgUmVz
b3VyY2VMb2FkUHJpb3JpdHlMb3csIAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCAK
KyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2gsIAorICAgIFJlc291cmNlTG9hZFByaW9yaXR5
TG93ZXN0ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCAKKyAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eUhpZ2hlc3QgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2gsIAorICAgIC8vIFRoZSB1
bnJlc29sdmVkIHByaW9yaXR5IGlzIGhlcmUgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiB0aGUgY2xp
ZW50cy4gSXQgc2hvdWxkIG5vdCBiZSBwYXNzZWQgdG8gdGhlIFJlc291cmNlTG9hZFNjaGVkdWxl
ci4KKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsCit9OworCit9CisKKyNlbmRp
ZgorCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlz
aW9uIDczODk1KQorKysgV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlJl
c291cmNlTG9hZFNjaGVkCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSog
ZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2Vj
dXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZikKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJj
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5
Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50
U25pZmYpCiB7CiAgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3Vi
cmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0LCBzZWN1cml0eUNo
ZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91bGRDb250ZW50U25pZmYpOwogICAg
IGlmIChsb2FkZXIpCkBAIC05NCw3ICs5NCw3IEBAIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI+IFIKIHsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBj
bGllbnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChs
b2FkZXIuZ2V0KCksIExvdyk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIFJl
c291cmNlTG9hZFByaW9yaXR5TG93KTsKICAgICByZXR1cm4gbG9hZGVyOwogfQogCkBAIC0xMDMs
MTEgKzEwMywxMiBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6YWRkTWFpblJlc291CiAg
ICAgaG9zdEZvclVSTChyZXNvdXJjZUxvYWRlci0+dXJsKCksIENyZWF0ZUlmTm90Rm91bmQpLT5h
ZGRMb2FkSW5Qcm9ncmVzcyhyZXNvdXJjZUxvYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBQ
cmlvcml0eSBwcmlvcml0eSkKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBw
cmlvcml0eSkKIHsKICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXIpOworICAgIEFTU0VSVChwcmlv
cml0eSAhPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogI2lmICFSRVFVRVNUX01B
TkFHRU1FTlRfRU5BQkxFRAotICAgIHByaW9yaXR5ID0gSGlnaGVzdFByaW9yaXR5OworICAgIHBy
aW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoZXN0OwogI2VuZGlmCiAKICAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkIHJlc291cmNlICVw
ICclcyciLCByZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7CkBAIC0xMTUsNyArMTE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnNjaGVkdWxlTG9hZAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNSZXF1
ZXN0cygpOwogICAgIGhvc3QtPnNjaGVkdWxlKHJlc291cmNlTG9hZGVyLCBwcmlvcml0eSk7CiAK
LSAgICBpZiAocHJpb3JpdHkgPiBMb3cgfHwgIXJlc291cmNlTG9hZGVyLT51cmwoKS5wcm90b2Nv
bEluSFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBMb3cgJiYgIWhhZFJlcXVlc3RzKSkgewor
ICAgIGlmIChwcmlvcml0eSA+IFJlc291cmNlTG9hZFByaW9yaXR5TG93IHx8ICFyZXNvdXJjZUxv
YWRlci0+dXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSB8fCAocHJpb3JpdHkgPT0gUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlMb3cgJiYgIWhhZFJlcXVlc3RzKSkgewogICAgICAgICAvLyBUcnkgdG8g
cmVxdWVzdCBpbXBvcnRhbnQgcmVzb3VyY2VzIGltbWVkaWF0ZWx5LgogICAgICAgICBzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cyhob3N0LCBwcmlvcml0eSk7CiAgICAgfSBlbHNlIHsKQEAgLTE0OCw3ICsx
NDksNyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jvc3NPcmlnaW5SCiAgICAgb2xk
SG9zdC0+cmVtb3ZlKHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSkKK3Zv
aWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhSZXNvdXJjZUxv
YWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
IlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMuIG1faXNTdXNwZW5k
aW5nUGVuZGluZ1JlcXVlc3RzPSVkIiwgbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMpOyAK
ICAgICBpZiAobV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMpCkBAIC0xNzQsMTIgKzE3NSwx
MiBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nCiAgICAgfQogfQog
Ci12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdElu
Zm9ybWF0aW9uKiBob3N0LCBQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCit2b2lkIFJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdEluZm9ybWF0aW9uKiBob3N0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7CiAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMg
SG9zdEluZm9ybWF0aW9uLm1fbmFtZT0nJXMnIiwgaG9zdC0+bmFtZSgpLmxhdGluMSgpLmRhdGEo
KSk7CiAKLSAgICBmb3IgKGludCBwcmlvcml0eSA9IEhpZ2hlc3RQcmlvcml0eTsgcHJpb3JpdHkg
Pj0gbWluaW11bVByaW9yaXR5OyAtLXByaW9yaXR5KSB7Ci0gICAgICAgIEhvc3RJbmZvcm1hdGlv
bjo6UmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcgPSBob3N0LT5yZXF1ZXN0c1BlbmRpbmco
KFByaW9yaXR5KSBwcmlvcml0eSk7CisgICAgZm9yIChpbnQgcHJpb3JpdHkgPSBSZXNvdXJjZUxv
YWRQcmlvcml0eUhpZ2hlc3Q7IHByaW9yaXR5ID49IG1pbmltdW1Qcmlvcml0eTsgLS1wcmlvcml0
eSkgeworICAgICAgICBIb3N0SW5mb3JtYXRpb246OlJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5k
aW5nID0gaG9zdC0+cmVxdWVzdHNQZW5kaW5nKChSZXNvdXJjZUxvYWRQcmlvcml0eSkgcHJpb3Jp
dHkpOwogCiAgICAgICAgIHdoaWxlICghcmVxdWVzdHNQZW5kaW5nLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IHJlcXVlc3Rz
UGVuZGluZy5maXJzdCgpOwpAQCAtMjM1LDExICsyMzYsMTEgQEAgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpIb3N0SW5mb3JtYXRpb246OgogUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3Jt
YXRpb246On5Ib3N0SW5mb3JtYXRpb24oKQogewogICAgIEFTU0VSVChtX3JlcXVlc3RzTG9hZGlu
Zy5pc0VtcHR5KCkpOwotICAgIGZvciAodW5zaWduZWQgcCA9IDA7IHAgPD0gSGlnaGVzdFByaW9y
aXR5OyBwKyspCisgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlv
cml0eUhpZ2hlc3Q7IHArKykKICAgICAgICAgQVNTRVJUKG1fcmVxdWVzdHNQZW5kaW5nW3BdLmlz
RW1wdHkoKSk7CiB9CiAgICAgCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9y
bWF0aW9uOjpzY2hlZHVsZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFByaW9yaXR5
IHByaW9yaXR5KQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6
c2NoZWR1bGUoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRQcmlv
cml0eSBwcmlvcml0eSkKIHsKICAgICBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV0uYXBwZW5k
KHJlc291cmNlTG9hZGVyKTsKIH0KQEAgLTI1Nyw3ICsyNTgsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgZm9yIChpbnQgcHJpb3JpdHkgPSBIaWdoZXN0UHJpb3JpdHk7IHByaW9yaXR5ID49IExvd2Vz
dFByaW9yaXR5OyAtLXByaW9yaXR5KSB7ICAKKyAgICBmb3IgKGludCBwcmlvcml0eSA9IFJlc291
cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcHJpb3JpdHkgPj0gUmVzb3VyY2VMb2FkUHJpb3JpdHlM
b3dlc3Q7IC0tcHJpb3JpdHkpIHsgIAogICAgICAgICBSZXF1ZXN0UXVldWU6Oml0ZXJhdG9yIGVu
ZCA9IG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XS5lbmQoKTsKICAgICAgICAgZm9yIChSZXF1
ZXN0UXVldWU6Oml0ZXJhdG9yIGl0ID0gbV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaWYgKCppdCA9PSByZXNvdXJjZUxv
YWRlcikgewpAQCAtMjcyLDExICsyNzMsMjggQEAgYm9vbCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
Okhvc3RJbmZvcm1hdAogewogICAgIGlmICghbV9yZXF1ZXN0c0xvYWRpbmcuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIHAgPSAwOyBwIDw9IEhpZ2hl
c3RQcmlvcml0eTsgcCsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJj
ZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHArKykgewogICAgICAgICBpZiAoIW1fcmVxdWVzdHNQZW5k
aW5nW3BdLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3Jt
YXRpb246OnNldExvYWRTZXJpYWxseShib29sIHNlcmlhbGl6ZSkKK3sKKyAgICBpZiAoc2VyaWFs
aXplKQorICAgICAgICBtX21heFJlcXVlc3RzSW5GbGlnaHQgPSAxOworICAgIGVsc2UKKyAgICAg
ICAgbV9tYXhSZXF1ZXN0c0luRmxpZ2h0ID0gbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7Cit9
CisKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXRMb2FkU2VyaWFsbHkoY29uc3QgU3Ry
aW5nJiBob3N0TmFtZSwgYm9vbCBzZXJpYWxpemUpCit7CisgICAgSG9zdEluZm9ybWF0aW9uKiBo
b3N0ID0gbV9ob3N0cy5nZXQoaG9zdE5hbWUpOworICAgIGlmIChob3N0KQorICAgICAgICBob3N0
LT5zZXRMb2FkU2VyaWFsbHkoc2VyaWFsaXplKTsKKyAgICBlbHNlIGlmIChzZXJpYWxpemUpCisg
ICAgICAgIG1faG9zdHMuYWRkKGhvc3ROYW1lLCBuZXcgSG9zdEluZm9ybWF0aW9uKGhvc3ROYW1l
LCAxKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTQ3LDIyICs0OCwyMyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgOiBwdWJsaWMgTm9u
CiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCk7CiAKLSAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywgTG93LCBNZWRpdW0s
IEhpZ2gsIExvd2VzdFByaW9yaXR5ID0gVmVyeUxvdywgSGlnaGVzdFByaW9yaXR5ID0gSGlnaCB9
OwotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQcmlvcml0eSA9IExvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVj
aywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250
ZW50U25pZmYgPSB0cnVlKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hl
ZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYg
PSB0cnVlKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291cmNl
TG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7
CiAgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBLVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgCi0gICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKKyAgICB2b2lkIHNlcnZl
UGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFJl
c291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyk7CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVl
c3RzKCk7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICAKKyAgICB2b2lk
IHNldExvYWRTZXJpYWxseShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBib29sKTsKIAogcHJpdmF0
ZToKICAgICBSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKICAgICB+UmVzb3VyY2VMb2FkU2NoZWR1
bGVyKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciosIFByaW9yaXR5
KTsKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlTG9hZFBy
aW9yaXR5KTsKICAgICB2b2lkIHNjaGVkdWxlU2VydmVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICB2
b2lkIHJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPFJlc291cmNlTG9hZFNjaGVkdWxlcj4qKTsKIApA
QCAtNzIsMjEgKzc0LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIH5Ib3N0SW5mb3JtYXRpb24oKTsK
ICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZTsgfQotICAgICAgICB2b2lkIHNjaGVkdWxlKFJlc291cmNlTG9hZGVyKiwgUHJpb3JpdHkg
PSBWZXJ5TG93KTsKKyAgICAgICAgdm9pZCBzY2hlZHVsZShSZXNvdXJjZUxvYWRlciosIFJlc291
cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KTsKICAgICAgICAg
dm9pZCBhZGRMb2FkSW5Qcm9ncmVzcyhSZXNvdXJjZUxvYWRlciopOwogICAgICAgICB2b2lkIHJl
bW92ZShSZXNvdXJjZUxvYWRlciopOwogICAgICAgICBib29sIGhhc1JlcXVlc3RzKCkgY29uc3Q7
CiAgICAgICAgIGJvb2wgbGltaXRSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdHNM
b2FkaW5nLnNpemUoKSA+PSBtX21heFJlcXVlc3RzSW5GbGlnaHQ7IH0KIAogICAgICAgICB0eXBl
ZGVmIERlcXVlPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gPiBSZXF1ZXN0UXVldWU7Ci0gICAgICAg
IFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nKFByaW9yaXR5IHByaW9yaXR5KSB7IHJldHVy
biBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV07IH0KKyAgICAgICAgUmVxdWVzdFF1ZXVlJiBy
ZXF1ZXN0c1BlbmRpbmcoUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpIHsgcmV0dXJuIG1f
cmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XTsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRM
b2FkU2VyaWFsbHkoYm9vbCk7CiAKICAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgIFJlcXVlc3RRdWV1ZSBtX3JlcXVlc3RzUGVuZGluZ1tIaWdoZXN0UHJpb3JpdHkgKyAx
XTsKKyAgICAgICAgUmVxdWVzdFF1ZXVlIG1fcmVxdWVzdHNQZW5kaW5nW1Jlc291cmNlTG9hZFBy
aW9yaXR5SGlnaGVzdCArIDFdOwogICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFJlc291
cmNlTG9hZGVyPiA+IFJlcXVlc3RNYXA7CiAgICAgICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0c0xv
YWRpbmc7CiAgICAgICAgIGNvbnN0IFN0cmluZyBtX25hbWU7Ci0gICAgICAgIGNvbnN0IGludCBt
X21heFJlcXVlc3RzSW5GbGlnaHQ7CisgICAgICAgIGludCBtX21heFJlcXVlc3RzSW5GbGlnaHQ7
CiAgICAgfTsKIAogICAgIGVudW0gQ3JlYXRlSG9zdFBvbGljeSB7CkBAIC05NSw3ICs5OSw3IEBA
IHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwo
Y29uc3QgS1VSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7Ci0gICAgdm9pZCBzZXJ2
ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBQcmlvcml0eSk7CisgICAgdm9pZCBz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlvcml0
eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJp
bmdIYXNoPiBIb3N0TWFwOwogICAgIEhvc3RNYXAgbV9ob3N0czsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAko
cmV2aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSwyOCArNjUsNiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBl
IGNhY2hlCiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsK
IH0KIAotc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UHJpb3JpdHkgZGV0ZXJtaW5lUHJp
b3JpdHkoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIHN3aXRjaCAocmVz
b3VyY2UtPnR5cGUoKSkgewotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNo
ZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xT
dHlsZVNoZWV0OgotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpIaWdoOwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Ci0gICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6Ok1lZGl1bTsKLSAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OkxvdzsKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6VmVyeUxvdzsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpMb3c7Ci19Ci0KIExvYWRlcjo6
TG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsKQogICAgIDogbV9jYWNoZWRSZXNv
dXJjZUxvYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAsIG1fcmVzb3VyY2UocmVzb3Vy
Y2UpCkBAIC0xMzMsOSArMTExLDExIEBAIFBhc3NSZWZQdHI8TG9hZGVyPiBMb2FkZXI6OmxvYWQo
Q2FjaGVkUmUKICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoKQogICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJY
LVB1cnBvc2UiLCAicHJlZmV0Y2giKTsKICNlbmRpZgorICAgIAorICAgIFJlc291cmNlTG9hZFBy
aW9yaXR5IHByaW9yaXR5ID0gcmVzb3VyY2UtPmxvYWRQcmlvcml0eSgpOwogCiAgICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZy
YW1lKCksCi0gICAgICAgIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgZGV0ZXJtaW5l
UHJpb3JpdHkocmVzb3VyY2UpLCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKTsKKyAgICAgICAgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwg
c2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgaWYgKCFsb2Fk
ZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlz
IHJldmFsaWRhdGlvbj8KICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFy
dCBsb2FkaW5nICclcyciLCByZXNvdXJjZS0+dXJsKCkubGF0aW4xKCkuZGF0YSgpKTsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDczODk1KQor
KysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0NywyOCBAQAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAorc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcml0
eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0Ogor
I2lmIEVOQUJMRShYU0xUKQorICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNo
ZWV0OgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdo
OworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CisgICAgICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxv
YWRQcmlvcml0eU1lZGl1bTsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1By
ZWZldGNoOgorICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzsK
KyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUmVz
b3VyY2VMb2FkUHJpb3JpdHlMb3c7Cit9CiAKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgUmVmQ291
bnRlZExlYWtDb3VudGVyIGNhY2hlZFJlc291cmNlTGVha0NvdW50ZXIoIkNhY2hlZFJlc291cmNl
Iik7CkBAIC01NSw2ICs3Nyw3IEBAIHN0YXRpYyBSZWZDb3VudGVkTGVha0NvdW50ZXIgY2FjaGVk
UmVzb3UKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwg
VHlwZSB0eXBlKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9yZXF1ZXN0KDApCisgICAgLCBt
X2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAg
LCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiAgICAgLCBtX2xhc3REZWNvZGVk
QWNjZXNzVGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6ZSgwKQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJp
b3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTkwLDYgKzkxLDgg
QEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nICZ1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1f
dHlwZSk7IH0KKyAgICAKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQogCiAgICAgdm9pZCBhZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCopOwpAQCAtMjE3LDYgKzIyMCw3IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV91
cmw7CiAgICAgU3RyaW5nIG1fYWNjZXB0OwogICAgIExvYWRlciogbV9yZXF1ZXN0OworICAgIFJl
c291cmNlTG9hZFByaW9yaXR5IG1fbG9hZFByaW9yaXR5OwogCiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogICAgIGRvdWJsZSBtX3Jlc3BvbnNlVGltZXN0YW1wOwpAQCAtMjMzLDYg
KzIzNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7
CiAgICAgdm9pZCB1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5
IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJnZURlZmF1bHQ7IH0KKyAgICB2b2lk
IHNldExvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkpIHsgbV9s
b2FkUHJpb3JpdHkgPSBsb2FkUHJpb3JpdHk7IH0KIAogICAgIGRvdWJsZSBjdXJyZW50QWdlKCkg
Y29uc3Q7CiAgICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA3
Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ1LDkgKzE0NSw5IEBAIENhY2hlZEZvbnQqIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udCo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCB1cmwsIFN0cmluZygp
KSk7CiB9CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
KQorQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNo
ZWRDU1NTdHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHls
ZVNoZWV0LCB1cmwsIGNoYXJzZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ1NT
U3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dCwgdXJsLCBjaGFyc2V0LCBwcmlvcml0eSkpOwogfQogCiBDYWNoZWRDU1NTdHlsZVNoZWV0KiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCkKK0NhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5LCBib29sIGlzUHJlbG9hZCkKIHsKICAgICBLVVJMIGZ1bGxVUkwgPSBtX2RvY3Vt
ZW50LT5jb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yNjIsNyArMjYyLDcgQEAgQ2FjaGVkUmVzb3Vy
Y2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZQogICAgIGNoZWNrRm9yUmVsb2FkKGZ1bGxVUkwp
OwogCiAgICAgYm9vbCBhbGxvd0Zvckhpc3RvcnlPbmx5UmVzb3VyY2VzID0gY2FjaGVQb2xpY3ko
KSA9PSBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXI7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gY2FjaGUoKS0+cmVxdWVzdFJlc291cmNlKHRoaXMsIHR5cGUsIGZ1bGxVUkwsIGNoYXJz
ZXQsIGlzUHJlbG9hZCwgYWxsb3dGb3JIaXN0b3J5T25seVJlc291cmNlcyk7CisgICAgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlID0gY2FjaGUoKS0+cmVxdWVzdFJlc291cmNlKHRoaXMsIHR5cGUs
IGZ1bGxVUkwsIGNoYXJzZXQsIHByaW9yaXR5LCBpc1ByZWxvYWQsIGFsbG93Rm9ySGlzdG9yeU9u
bHlSZXNvdXJjZXMpOwogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAvLyBDaGVjayBmaW5h
bCBVUkwgb2YgcmVzb3VyY2UgdG8gY2F0Y2ggcmVkaXJlY3RzLgogICAgICAgICAvLyBTZWUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2Mz4uCkBAIC00MzEsNyAr
NDMxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYQogICAgIGlm
ICh0eXBlID09IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJj
ZTo6Q1NTU3R5bGVTaGVldCkKICAgICAgICAgZW5jb2RpbmcgPSBjaGFyc2V0LmlzRW1wdHkoKSA/
IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT53cml0ZXIoKS0+ZW5jb2RpbmcoKSA6IGNo
YXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0UmVzb3VyY2Uo
dHlwZSwgdXJsLCBlbmNvZGluZywgdHJ1ZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
ID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHVybCwgZW5jb2RpbmcsIFJlc291cmNlTG9hZFByaW9y
aXR5VW5yZXNvbHZlZCwgdHJ1ZSk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAobV9wcmVsb2FkcyAm
JiBtX3ByZWxvYWRzLT5jb250YWlucyhyZXNvdXJjZSkpKQogICAgICAgICByZXR1cm47CiAgICAg
cmVzb3VyY2UtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgorI2luY2x1ZGUg
IlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgfkNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKICAgICBDYWNoZWRJbWFn
ZSogcmVxdWVzdEltYWdlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICBDYWNoZWRDU1NTdHlsZVNo
ZWV0KiByZXF1ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0KTsKKyAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1ZXN0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCk7CiAgICAg
Q2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hlZFNjcmlwdCogcmVxdWVz
dFNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICBD
YWNoZWRGb250KiByZXF1ZXN0Rm9udChjb25zdCBTdHJpbmcmIHVybCk7CkBAIC0xMDUsNyArMTA2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMoKTsKICAgICAKIHByaXZh
dGU6Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCBpc1By
ZWxvYWQgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVu
cmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwogICAgIHZvaWQgcmVxdWVzdFByZWxv
YWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQpOwogCiAgICAgdm9pZCBjaGVja0ZvclJlbG9hZChjb25zdCBLVVJMJik7CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
MTAgKzk1LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAg
ICByZXR1cm4gMDsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3RvcnkpCitDYWNoZWRSZXNvdXJj
ZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0
eSwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3RvcnkpCiB7Ci0gICAgTE9HKFJl
c291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNl
dCAnJXMnLCBwcmVsb2FkPSV1LCBmb3JIaXN0b3J5PSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgY2hhcnNldC5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3RJc1ByZWxvYWQsIGZvckhp
c3RvcnkpOwotCisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0
UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgcHJlbG9hZD0ldSwgZm9y
SGlzdG9yeT0ldSIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIGNoYXJzZXQubGF0aW4x
KCkuZGF0YSgpLCBwcmlvcml0eSwgcmVxdWVzdElzUHJlbG9hZCwgZm9ySGlzdG9yeSk7CisgICAg
CiAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIHNwZWNpYWwtY2FzZSBhbiBlbXB0
eSBVUkw/CiAgICAgLy8gV291bGQgaXQgYmUgYmV0dGVyIHRvIGp1c3QgZ28gb24gd2l0aCB0aGUg
Y2FjaGUgY29kZSBhbmQgbGV0IGl0IGZhaWwgbGF0ZXI/CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
CkBAIC0xNDQsNiArMTQ0LDEwIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVxdWVz
dFJlc28KICAgICAgICAgLy8gRklYTUU6IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBu
b3JtYWwgcmVmY291bnRpbmcgaW5zdGVhZC4KICAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUo
dHJ1ZSk7CiAgICAgICAgIAorICAgICAgICAvLyBEZWZhdWx0IHByaW9yaXR5IGJhc2VkIG9uIHJl
c291cmNlIHR5cGUgaXMgdXNlZCBpZiB0aGUgcmVxdWVzdCBkaWQgbm90IHNwZWNpZnkgb25lLgor
ICAgICAgICBpZiAocHJpb3JpdHkgIT0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKQor
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7CisKICAgICAg
ICAgcmVzb3VyY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAKICAgICAg
ICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTE2Miw2ICsxNjYsMTIgQEAg
Q2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzbwogICAgICAgICAgICAgcmVz
b3VyY2UtPnNldEluQ2FjaGUoZmFsc2UpOwogICAgICAgICAgICAgcmVzb3VyY2UtPnNldENhY2hl
ZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBVcGdyYWRpbmcgdGhlIHByaW9yaXR5IGRvZXNuJ3Qg
cmVhbGx5IGRvIG11Y2ggc2luY2UgdGhlIFJlc291cmNlTG9hZFNjaGVkdWxlciBkb2VzIG5vdCBj
dXJyZW50bHkKKyAgICAgICAgLy8gYWxsb3cgY2hhbmdpbmcgcHJpb3JpdGllcy4gVGhpcyBtaWdo
dCBiZWNvbWUgaW1wb3J0YW50IGlmIHdlIG1ha2Ugc2NoZWR1bGluZyBwcmlvcml0aWVzCisgICAg
ICAgIC8vIG1vcmUgZHluYW1pYy4KKyAgICAgICAgaWYgKHByaW9yaXR5ICE9IFJlc291cmNlTG9h
ZFByaW9yaXR5VW5yZXNvbHZlZCAmJiByZXNvdXJjZS0+bG9hZFByaW9yaXR5KCkgPCBwcmlvcml0
eSkKKyAgICAgICAgICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwogICAg
IH0KIAogICAgIGlmICghZGlzYWJsZWQoKSkgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXF1ZXN0IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3aWxsIGJlIGluaXRp
YXRlZCBhbmQgYSBjYWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0IGlzIG5vdAogICAg
IC8vIGZvdW5kIGluIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBi
b29sIGZvckhpc3RvcnkgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGJv
b2wgaXNQcmVsb2FkID0gZmFsc2UsIGJvb2wgZm9ySGlzdG9yeSA9IGZhbHNlKTsKIAogICAgIENh
Y2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAg
IApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDczOTEwKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMi0xMyAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzIyMDk0PiAKKyAgICAgICAgRGVmZXIgbG9hZGluZyBw
cmludCBzdHlsZXNoZWV0cworICAgICAgICAKKyAgICAgICAgRXhwb3NlIFNQSSBmb3IgRFJUIGZv
ciBtYWtpbmcgcmVzb3VyY2VzIGxvYWQgc2VyaWFsbHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0
aW5nIHJlc291cmNlIGxvYWQgb3JkZXIuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgrW1dlYlZpZXcgX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTpmb3JIb3N0Ol0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMC0xMC0yOCAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBP
amFuIFZhZmFpLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDczODk1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NjgsNiAr
MjY2OCwxMSBAQCAtIChCT09MKXNlYXJjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyCiAgICAg
cmV0dXJuIFtzZWxmIGZpbmRTdHJpbmc6c3RyaW5nIG9wdGlvbnM6KChmb3J3YXJkID8gMCA6IFdl
YkZpbmRPcHRpb25zQmFja3dhcmRzKSB8IChjYXNlRmxhZyA/IDAgOiBXZWJGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZSkgfCAod3JhcEZsYWcgPyBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQgOiAw
KSB8IChzdGFydEluU2VsZWN0aW9uID8gV2ViRmluZE9wdGlvbnNTdGFydEluU2VsZWN0aW9uIDog
MCkpXTsKIH0KIAorKyAodm9pZClfc2V0TG9hZFJlc291cmNlc1NlcmlhbGx5OihCT09MKXNlcmlh
bGl6ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3ROYW1lCit7CisgICAgcmVzb3VyY2VMb2FkU2No
ZWR1bGVyKCktPnNldExvYWRTZXJpYWxseShob3N0TmFtZSwgc2VyaWFsaXplKTsKK30KKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNiArNTI0LDkgQEAgQ291
bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiArICh2b2lkKV9yZW1vdmVVc2VyU3R5bGVT
aGVldHNGcm9tR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3Js
ZCAqKXdvcmxkOwogKyAodm9pZClfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6KE5TU3Ry
aW5nICopZ3JvdXBOYW1lOwogCisvLyBTUEkgZm9yIER1bXBSZW5kZXJUcmVlCisrICh2b2lkKV9z
ZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6KEJPT0wpc2VyaWFsaXplIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdE5hbWU7CisKIC8qIQogICAgIEBtZXRob2QgY3NzQW5pbWF0aW9uc1N1c3BlbmRlZAog
ICAgIEBhYnN0cmFjdCBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IENTUyBBbmltYXRpb25zIGFyZSBz
dXNwZW5kZWQuCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzkyMSkKKysrIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEyLTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc2V0U2VyaWFsaXplSFRUUExvYWRzIGZ1bmN0aW9uIHRv
IGFsbG93IHRlc3RpbmcgcmVzb3VyY2UgbG9hZCBvcmRlciBvbiBPUyBYLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA3NTgKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFNlcmlh
bGl6ZUhUVFBMb2Fkc0NhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
dGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVI
VFRQTG9hZHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bToKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKToKKwogMjAxMC0x
Mi0xMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3Mzg5
NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg0NSw2ICsxODQ1LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IHNldEVkaXRpbmdCZWhhdmlvckNhbGwKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNlcmlhbGl6ZUhUVFBMb2Fkc0Nh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgYm9vbCBzZXJpYWxpemUgPSB0cnVlOworICAgIGlmIChh
cmd1bWVudENvdW50ID09IDEpCisgICAgICAgIHNlcmlhbGl6ZSA9IEpTVmFsdWVUb0Jvb2xlYW4o
Y29udGV4dCwgYXJndW1lbnRzWzBdKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRT
ZXJpYWxpemVIVFRQTG9hZHMoc2VyaWFsaXplKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKIC8vIFN0YXRpYyBWYWx1ZXMKIAogc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKQEAgLTIwMjksNiArMjAzOSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RD
b250cm9sbGVyOjoKICAgICAgICAgeyAic2V0UHJpbnRpbmciLCBzZXRQcmludGluZ0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQiLCBzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCIsIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTZXJpYWxpemVIVFRQTG9hZHMi
LCBzZXRTZXJpYWxpemVIVFRQTG9hZHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQiLCBz
ZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzIiwgc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fk
c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDczODk1KQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjg3LDYgKzI4Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGlu
dCBmcm9tLCBpbnQgbGVuZ3RoKTsKIAogICAgIHZvaWQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3
cG9ydChpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFibGVIZWlnaHQpOworICAgIAorICAg
IHN0YXRpYyB2b2lkIHNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sIHNlcmlhbGl6ZSk7CiAKICAg
ICAvLyBUaGUgZm9sbG93aW5nIEFQSSB0ZXN0IGZ1bmN0aW9ucyBzaG91bGQgcHJvYmFibHkgYmUg
bW92ZWQgdG8gcGxhdGZvcm0tc3BlY2lmaWMgCiAgICAgLy8gdW5pdCB0ZXN0cyBvdXRzaWRlIG9m
IERSVCBvbmNlIHRoZXkgZXhpc3QuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9u
IDczODk1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM1LDMgKzgzNSw4IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmEKICAgICBBU1NFUlQod2ViVmlldyk7CiAg
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0
KHdlYlZpZXcsIGF2YWlsYWJsZVdpZHRoLCBhdmFpbGFibGVIZWlnaHQpOwogfQorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGlmIG5lZWRlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUwNzU4LgorfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ2NCw2ICs0NjQsOCBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsCiAgICAgW3ByZWZlcmVuY2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkOk5PXTsKIAogICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3Rv
cmFnZV0gc2V0Q29va2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlG
cm9tTWFpbkRvY3VtZW50RG9tYWluXTsKKyAgICAKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0U2VyaWFsaXplSFRUUExvYWRzKGZhbHNlKTsKIAogICAgIHNldGxvY2FsZShMQ19BTEwsICIi
KTsKIH0KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDczODk1KQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OTgsMyArOTk4LDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZHVtcENvbmZpZ3VyYQogewogCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNl
cmlhbGl6ZUhUVFBMb2Fkcyhib29sIHNlcmlhbGl6ZSkKK3sKKyAgICBbV2ViVmlldyBfc2V0TG9h
ZFJlc291cmNlc1NlcmlhbGx5OnNlcmlhbGl6ZSBmb3JIb3N0OkAiMTI3LjAuMC4xIl07Cit9Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDczODk1KQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQyNSwzICsxNDI1LDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVt
cENvbmZpZ3VyYQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KIH0KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudC4KK30KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczOTIxKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAt
MTItMDkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODcyMjA5ND4g
CisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVzaGVldHMKKyAgICAgICAgCisgICAg
ICAgIFRlc3QgbG9hZCBvcmRlcmluZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVl
dC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9s
b2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0x
MyAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjggQEAKKyBUZXN0IHN0eWxlc2hlZXQgbG9hZCBzY2hlZHVsaW5nLiBSZXNvdXJj
ZSBsb2FkcyBmb3Igc2NyZWVuIHN0eWxlc2hlZXRzIHNob3VsZCBiZSBzY2hlZHVsZWQgZmlyc3Qs
IG90aGVycyBzaG91bGQgYmUgc2NoZWR1bGVkIGxhc3QuCitSZXNvdXJjZSByZXF1ZXN0czoKKwor
Cituby1tZWRpYS5jc3MKK21lZGlhLWVtcHR5LmNzcworbWVkaWEtYWxsLmNzcworbWVkaWEtc2Ny
ZWVuLmNzcworbWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MuY3NzCittZWRpYS1icmFpbGxlLXNj
cmVlbi5jc3MKK21lZGlhLXNjcmVlbi1xdWVyeS1mYWlsLmNzcworbm8tbWVkaWEtMi5jc3MKK21l
ZGlhLWVtcHR5LTIuY3NzCittZWRpYS1hbGwtMi5jc3MKK21lZGlhLXNjcmVlbi0yLmNzcworbWVk
aWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MtMi5jc3MKK21lZGlhLWJyYWlsbGUtc2NyZWVuLTIuY3Nz
CittZWRpYS1zY3JlZW4tcXVlcnktZmFpbC0yLmNzcworc2NyaXB0LmpzCitpbWFnZS5qcGcKK21l
ZGlhLXByaW50LmNzcworbWVkaWEtYXVyYWwuY3NzCittZWRpYS1icmFpbGxlLmNzcworbWVkaWFu
LWhhbmRoZWxkLmNzcworbWVkaWEtcHJvamVjdGlvbi5jc3MKK21lZGlhLXR0eS5jc3MKK21lZGlh
LXR2LmNzcworbWVkaWEtcHJpbnQtMi5jc3MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQt
bG9hZC1vcmRlci1wcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKyBUZXN0IHN0eWxlc2hl
ZXQgbG9hZCBzY2hlZHVsaW5nIHdpdGggcHJlbG9hZCBzY2FubmVyLiBSZXNvdXJjZSBsb2FkcyBm
b3Igc2NyZWVuIHN0eWxlc2hlZXRzIHNob3VsZCBiZSBzY2hlZHVsZWQgZmlyc3QsIG90aGVycyBz
aG91bGQgYmUgc2NoZWR1bGVkIGxhc3QuCitSZXNvdXJjZSByZXF1ZXN0czoKKworCitzY3JpcHQu
anMKK25vLW1lZGlhLmNzcworbWVkaWEtZW1wdHkuY3NzCittZWRpYS1hbGwuY3NzCittZWRpYS1z
Y3JlZW4uY3NzCittZWRpYS1icmFpbGxlLXNjcmVlbi5jc3MKK25vLW1lZGlhLTIuY3NzCittZWRp
YS1lbXB0eS0yLmNzcworbWVkaWEtYWxsLTIuY3NzCittZWRpYS1zY3JlZW4tMi5jc3MKK21lZGlh
LWJyYWlsbGUtc2NyZWVuLTIuY3NzCittZWRpYS1zY3JlZW4tcXVlcnktc3VjY2Vzcy5jc3MKK21l
ZGlhLXNjcmVlbi1xdWVyeS1mYWlsLmNzcworbWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MtMi5j
c3MKK21lZGlhLXNjcmVlbi1xdWVyeS1mYWlsLTIuY3NzCitzY3JpcHQtMi5qcworaW1hZ2UuanBn
CittZWRpYS1wcmludC5jc3MKK21lZGlhLWF1cmFsLmNzcworbWVkaWEtYnJhaWxsZS5jc3MKK21l
ZGlhbi1oYW5kaGVsZC5jc3MKK21lZGlhLXByb2plY3Rpb24uY3NzCittZWRpYS10dHkuY3NzCitt
ZWRpYS10di5jc3MKK21lZGlhLXByaW50LTIuY3NzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2Fk
LW9yZGVyLXByZWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDgxIEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CisgIDxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgLy8gUHJldmVudCBuZXR3b3JraW5nIGxh
eWVyIGZyb20gcmVvcmRlcmluZyBsb2Fkcy4KKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9s
bGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcykKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIENhbGxD
b21tYW5kKGNtZCkKKyAgICB7CisgICAgIHRyeSB7CisgICAgICAgICB2YXIgcmVxID0gbmV3IFhN
TEh0dHBSZXF1ZXN0OworICAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPSIgKyBjbWQsIGZh
bHNlKTsKKyAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgcmV0dXJuIHJlcS5yZXNw
b25zZVRleHQ7CisgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICByZXR1cm4gIiI7CisgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBlbmRUZXN0KCkKKyAgICB7CisgICAgICAgIGdldFJl
c291cmNlTG9nKCk7CisgICAgICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0
LWxvZyIpOworCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZ2V0UmVzb3VyY2VMb2coKQorICAgIHsKKyAgICAgICAgdmFyIGxvZyA9IENhbGxD
b21tYW5kKCJnZXQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICAgICAgdmFyIGxvZ0xpbmVz
ID0gbG9nLnNwbGl0KCdcbicpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJUZXh0ID0gbG9nTGluZXMuam9pbignXG4nKTsKKyAgICB9CisKKyAgICBDYWxs
Q29tbWFuZCgic3RhcnQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIGVuZFRlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+CisgIAorICA8
IS0tIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcmVsb2FkIHNjYW5uZXIgLS0+CisgIDxzY3JpcHQg
c3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBo
cD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9c2NyaXB0LmpzIj48L3NjcmlwdD4K
KworICA8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0
JnBhdGg9bm8tbWVkaWEuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9IiIgaHJl
Zj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/
Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWVtcHR5LmNzcyI+CisgIDxs
aW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhbGwiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJl
cXVlc3QmcGF0aD1tZWRpYS1hbGwuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9
InByaW50IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2lt
dWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtcHJpbnQu
Y3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiIgaHJlZj0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1s
b2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi5jc3MiPgorICA8bGluayByZWw9
c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxcHgpIiBocmVmPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5k
PWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MuY3Nz
Ij4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUsIHNjcmVlbiIgaHJlZj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29t
bWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWJyYWlsbGUtc2NyZWVuLmNzcyI+
CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEw
MDAwMDBweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1z
aW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3Jl
ZW4tcXVlcnktZmFpbC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYXVyYWwi
IGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3Iu
cGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hdXJhbC5jc3MiPgor
ICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYnJhaWxsZSIgaHJlZj0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVz
b3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWJyYWlsbGUuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxl
c2hlZXQgbWVkaWE9ImhhbmRoZWxkIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9bWVkaWFuLWhhbmRoZWxkLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJw
cm9qZWN0aW9uIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmst
c2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtcHJv
amVjdGlvbi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0idHR5IiBocmVmPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21t
YW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtdHR5LmNzcyI+CisgIDxsaW5rIHJl
bD1zdHlsZXNoZWV0IG1lZGlhPSJ0diIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW1lZGlhLXR2LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9n
LXJlc291cmNlLXJlcXVlc3QmcGF0aD1uby1tZWRpYS0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHls
ZXNoZWV0IG1lZGlhPSIiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YS1lbXB0eS0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhbGwiIGhyZWY9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1hbGwtMi5jc3MiPgorICA8bGlu
ayByZWw9c3R5bGVzaGVldCBtZWRpYT0icHJpbnQiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJl
cXVlc3QmcGF0aD1tZWRpYS1wcmludC0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1l
ZGlhPSJzY3JlZW4iIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29y
ay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1z
Y3JlZW4tMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAo
bWluLXdpZHRoOiAxcHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVk
aWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBt
ZWRpYT0iYnJhaWxsZSwgc2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9bWVkaWEtYnJhaWxsZS1zY3JlZW4tMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBt
ZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAwMDAwcHgpIiBocmVmPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1y
ZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5LWZhaWwtMi5jc3MiPgorICAK
KzwvaGVhZD4KKzxib2R5PgorICA8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPWltYWdlLmpwZyI+CisgIDxzY3JpcHQgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0
JnBhdGg9c2NyaXB0LTIuanMiPjwvc2NyaXB0PgorCisgIFRlc3Qgc3R5bGVzaGVldCBsb2FkIHNj
aGVkdWxpbmcgd2l0aCBwcmVsb2FkIHNjYW5uZXIuIFJlc291cmNlIGxvYWRzIGZvciBzY3JlZW4g
c3R5bGVzaGVldHMgc2hvdWxkIGJlIHNjaGVkdWxlZCBmaXJzdCwgb3RoZXJzIHNob3VsZCBiZSBz
Y2hlZHVsZWQgbGFzdC4KKworICA8aDI+UmVzb3VyY2UgcmVxdWVzdHM6PC9oMj4KKyAgPHByZSBp
ZD0icmVzdWx0Ij5SZXF1ZXN0IGxvZyBnb2VzIGhlcmUgaW4gRFJUPC9wcmU+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVl
dC1sb2FkLW9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYt
OCI+CisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgLy8gUHJldmVudCBuZXR3
b3JraW5nIGxheWVyIGZyb20gcmVvcmRlcmluZyBsb2Fkcy4KKyAgICAgICAgaWYgKGxheW91dFRl
c3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcykKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFNlcmlhbGl6ZUhUVFBMb2FkcygpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIENhbGxDb21tYW5kKGNtZCkKKyAgICB7CisgICAgIHRyeSB7CisgICAgICAgICB2YXIgcmVx
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPSIg
KyBjbWQsIGZhbHNlKTsKKyAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgcmV0dXJu
IHJlcS5yZXNwb25zZVRleHQ7CisgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICByZXR1cm4g
IiI7CisgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBlbmRUZXN0KCkKKyAgICB7CisgICAg
ICAgIGdldFJlc291cmNlTG9nKCk7CisgICAgICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJj
ZS1yZXF1ZXN0LWxvZyIpOworCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMb2coKQorICAgIHsKKyAgICAgICAgdmFyIGxv
ZyA9IENhbGxDb21tYW5kKCJnZXQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICAgICAgdmFy
IGxvZ0xpbmVzID0gbG9nLnNwbGl0KCdcbicpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gbG9nTGluZXMuam9pbignXG4nKTsKKyAgICB9CisK
KyAgICBDYWxsQ29tbWFuZCgic3RhcnQtcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGVuZFRlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+
CisKKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jl
c291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVz
dCZwYXRoPW5vLW1lZGlhLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSIiIGhy
ZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhw
P2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1lbXB0eS5jc3MiPgorICA8
bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYWxsIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bWVkaWEtYWxsLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlh
PSJwcmludCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXByaW50
LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4iIGhyZWY9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9
bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3JlZW4uY3NzIj4KKyAgPGxpbmsgcmVs
PXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMXB4KSIgaHJlZj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi1xdWVyeS1zdWNjZXNzLmNz
cyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJicmFpbGxlLCBzY3JlZW4iIGhyZWY9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1icmFpbGxlLXNjcmVlbi5jc3Mi
PgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAx
MDAwMDAwcHgpIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmst
c2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2Ny
ZWVuLXF1ZXJ5LWZhaWwuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImF1cmFs
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtYXVyYWwuY3NzIj4K
KyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUiIGhyZWY9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJl
c291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1icmFpbGxlLmNzcyI+CisgIDxsaW5rIHJlbD1zdHls
ZXNoZWV0IG1lZGlhPSJoYW5kaGVsZCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW1lZGlhbi1oYW5kaGVsZC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0i
cHJvamVjdGlvbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3Jr
LXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXBy
b2plY3Rpb24uY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InR0eSIgaHJlZj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29t
bWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXR0eS5jc3MiPgorICA8bGluayBy
ZWw9c3R5bGVzaGVldCBtZWRpYT0idHYiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNv
dXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3Qm
cGF0aD1tZWRpYS10di5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxv
Zy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bm8tbWVkaWEtMi5jc3MiPgorICA8bGluayByZWw9c3R5
bGVzaGVldCBtZWRpYT0iIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVk
aWEtZW1wdHktMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYWxsIiBocmVm
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9j
b21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtYWxsLTIuY3NzIj4KKyAgPGxp
bmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InByaW50IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bWVkaWEtcHJpbnQtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBt
ZWRpYT0ic2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdv
cmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEt
c2NyZWVuLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiBhbmQg
KG1pbi13aWR0aDogMXB4KSIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9u
ZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1l
ZGlhLXNjcmVlbi1xdWVyeS1zdWNjZXNzLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQg
bWVkaWE9ImJyYWlsbGUsIHNjcmVlbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW1lZGlhLWJyYWlsbGUtc2NyZWVuLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQg
bWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMDAwMHB4KSIgaHJlZj0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ct
cmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi1xdWVyeS1mYWlsLTIuY3NzIj4KKyAg
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGltZyBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNv
dXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3Qm
cGF0aD1pbWFnZS5qcGciPgorICA8c2NyaXB0IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jl
c291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVz
dCZwYXRoPXNjcmlwdC5qcyI+PC9zY3JpcHQ+CisKKyAgVGVzdCBzdHlsZXNoZWV0IGxvYWQgc2No
ZWR1bGluZy4gUmVzb3VyY2UgbG9hZHMgZm9yIHNjcmVlbiBzdHlsZXNoZWV0cyBzaG91bGQgYmUg
c2NoZWR1bGVkIGZpcnN0LCBvdGhlcnMgc2hvdWxkIGJlIHNjaGVkdWxlZCBsYXN0LgorCisgIDxo
Mj5SZXNvdXJjZSByZXF1ZXN0czo8L2gyPgorICA8cHJlIGlkPSJyZXN1bHQiPlJlcXVlc3QgbG9n
IGdvZXMgaGVyZSBpbiBEUlQ8L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA3Mzg5NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkzLDMgKzEwOTMsOCBAQCBlZGl0aW5n
L3RleHQtaXRlcmF0b3IvZmluZFN0cmluZy5odG1sCiAjIFRoZSByZWxldmFudCBidWdzIGFyZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NDkvNDc4MTcuCiBmYXN0
L2ZyYW1lcy9sb2NhdGlvbi1yZWRpcmVjdC11c2VyLWdlc3R1cmUuaHRtbAogZmFzdC9mcmFtZXMv
bWV0YS1yZWZyZXNoLXVzZXItZ2VzdHVyZS5odG1sCisKKyMgRm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorIyBUaGVzZSByZXF1aXJlIERSVCBzZXRTZXJp
YWxpemVIVFRQTG9hZHMgaW1wbGVtZW50YXRpb24gdG8gYmUgcmVsaWFibGUuCitodHRwL3Rlc3Rz
L2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLmh0bWwKK2h0dHAvdGVzdHMvbG9jYWwv
bGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sCg==
</data>
<flag name="review"
          id="67339"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76406</attachid>
            <date>2010-12-13 10:37:20 -0800</date>
            <delta_ts>2010-12-13 11:14:07 -0800</delta_ts>
            <desc>updated based on ap&apos;s comments</desc>
            <filename>defer-print-stylesheets-5.patch</filename>
            <type>text/plain</type>
            <size>63245</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzkxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTAtMTItMTMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vODcyMjA5ND4gCisgICAgICAgIERlZmVyIGxvYWRpbmcgcHJpbnQgc3R5bGVz
aGVldHMKKyAgICAgICAgCisgICAgICAgIC0gTWFrZSBwcmVsb2FkIHNjYW5uZXIgc2tpcCBzdHls
ZXNoZWV0cyB3aXRoIG5vbi1zY3JlZW4gbWVkaWEgdHlwZXMuCisgICAgICAgIC0gTWFrZSBpdCBw
b3NzaWJsZSB0byBzcGVjaWZ5IG5vbi1kZWZhdWx0IGxvYWQgcHJpb3JpdHkgZnJvbSB0aGUgY2xp
ZW50LgorICAgICAgICAtIFVzZSB0aGlzIG1lY2hhbmlzbSB0byBsb2FkIHByaW50IHN0eWxlc2hl
ZXRzIHVzaW5nIHZlcnkgbG93IHByaW9yaXR5IHNvIHRoZXkgZ2V0IGxvYWRlZCBhZnRlciBldmVy
eXRoaW5nIGVsc2UuCisgICAgICAgIC0gTW92ZSBkZWZhdWx0IHByaW9yaXR5IGNvZGUgZnJvbSBM
b2FkZXIgdG8gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAgIC0gTW92ZSBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OlByaW9yaXR5IGVudW0gdG8gYSBzZXBhcmF0ZSBmaWxlIChhcyBSZXNvdXJjZUxvYWRQ
cmlvcml0eSkuCisgICAgICAgIC0gQWRkIGEgd2F5IHRvIG1ha2UgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyIGxvYWQgcmVzb3VyY2VzIG9uZSBhdCB0aGUgdGltZSBzbyB0aGUgYWJvdmUgZnVuY3Rpb25h
bGl0eSBjYW4gYmUgdGVzdGVkIHJlbGlhYmx5LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3Rz
L2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UpOgorICAgICAgICAqIGNzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFs
dWF0b3I6OmV2YWwpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6CisgICAg
ICAgICogZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1l
bnQ6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OlByZWxvYWRUYXNrOjpQcmVsb2FkVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OlByZWxvYWRUYXNrOjpwcm9jZXNzQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTmFtZXM6OlByZWxvYWRUYXNrOjpsaW5rTWVkaWFBdHRyaWJ1dGVNYXRjaGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnByZWxvYWQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZFByaW9yaXR5Lmg6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjp+
SG9zdEluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6SG9zdEluZm9ybWF0aW9uOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpoYXNSZXF1ZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlv
bjo6c2V0TG9hZFNlcmlhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2V0TG9hZFNlcmlhbGx5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJ
bmZvcm1hdGlvbjo6cmVxdWVzdHNQZW5kaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFByaW9yaXR5Rm9yUmVz
b3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNv
dXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZFByaW9yaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAg
KiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9hZCk6CisK
IDIwMTAtMTItMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3Mzg5OC4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC00OTEsNyArNDkxLDcgQEAgX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04z
VwogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9f
Wk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnRFTlMwXzRUeXBlRWIKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdO
U0V2ZW50Ci1fX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5n
UmVxdWVzdHNFTlMwXzhQcmlvcml0eUUKK19fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1
bGVyMjBzZXJ2ZVBlbmRpbmdSZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RQogX19a
TjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9h
ZEVQTlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNf
MTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pON1dlYkNvcmUyMVNWR0RvY3VtZW50RXh0ZW5zaW9uczIx
c2FtcGxlQW5pbWF0aW9uQXRUaW1lRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNWR1NNSUxFbGVtZW50
RWQKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQSzE1
T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
cHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDczODk1KQor
KysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTk3Niw2ICsxOTc2LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaCBcCiAgICAg
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oIFwKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBc
CisgICAgbG9hZGVyL1Jlc291cmNlTG9hZFByaW9yaXR5LmggXAogICAgIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oIFwKICAgICBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oIFwKICAgICBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcyNSw4ICsyNDcyNSwxMiBAQAogCQk8
RmlsdGVyCiAJCQlOYW1lPSJsb2FkZXIiCiAJCQk+CisgICAgICAgICAgICA8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cbG9hZGVyXFJlc291cmNlTG9hZFByaW9yaXR5LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclwgUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC01NDg2LDYgKzU0ODYsNyBAQAogCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFk
R2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgKi87
IH07CiAJCUU0MTVGMTY5MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVGMTY4
MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wuaCAqLzsgfTsKIAkJRTQx
NUYxODQwRDlBMUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxNUYxODMwRDlBMUE4MzAwMzND
RTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovOyB9OworCQlFNDI5NUZBNDEyQjA2MTRFMDBE
MUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Mjk1RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJj
ZUxvYWRQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUU0NDYxM0ExMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDYxMzhG
MENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmNwcCAqLzsgfTsKIAkJRTQ0NjEz
QTIwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDYxMzkwMENENjMzMTAwMEZBREE3NSAv
KiBIVE1MQXVkaW9FbGVtZW50LmggKi87IH07CiAJCUU0NDYxM0E0MENENjMzMTAwMEZBREE3NSAv
KiBIVE1MTWVkaWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0NDYxMzkyMENENjMzMTAwMEZBREE3NSAvKiBIVE1MTWVkaWFFbGVtZW50
LmNwcCAqLzsgfTsKQEAgLTExNzc5LDYgKzExNzgwLDcgQEAKIAkJRTQxNUYxODMwRDlBMUE4MzAw
MzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbGVtZW50VGltZUNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM5MTE5ODM3NDkwMDcxMEJDNSAvKiBD
U1NWYWx1ZUtleXdvcmRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENTU1ZhbHVlS2V5d29yZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDI5
NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkUHJpb3JpdHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0NjEzOEYwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRp
b0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEF1
ZGlvRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NDYxMzkwMENE
NjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ0NjEzOTEwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1lbnQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxBdWRpb0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTc4NzAsNiArMTc4NzIsNyBAQAogCQkJCTY1NkQzNzI3MEFEQkE1
REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTk3M0UzMjU0MTA4ODNCN0Mw
MDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8sCiAJCQkJOTczRTMyNTUxMDg4
M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi8sCisJCQkJRTQyOTVGQTMx
MkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggKi8sCiAJCQkJRDBDRTU4
RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgKi8sCiAJCQkJ
RDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oICovLAog
CQkJCTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovLApAQCAt
MjIxMTQsNiArMjIxMTcsNyBAQAogCQkJCTQ5OUIzRUM1MTI4Q0NDNDcwMEU3MjZDMiAvKiBQbGF0
Zm9ybUNBTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZD
MiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUREMTI4REI1
MDIwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
NDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE1RkY3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRjkxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGQzEyQjAyNjc2MDBDMUEz
NTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFdlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0eWxlQ2FjaGVkSW1hZ2Uq
IENTU0ltYWdlVmFsdWU6OmNhY2hlZEkKICAgICAgICAgICAgIGNhY2hlZEltYWdlID0gbG9hZGVy
LT5yZXF1ZXN0SW1hZ2UodXJsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIGZpbmQgYSB3YXkgdG8gbWFrZSB0aGVzZSBpbWFnZXMgc2l0IGluIHRoZWlyIG93
biBtZW1vcnkgcGFydGl0aW9uLCBzaW5jZSB0aGV5IGFyZSB1c2VyIGFnZW50IGltYWdlcy4KLSAg
ICAgICAgICAgIGNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihjYWNoZSgp
LT5yZXF1ZXN0UmVzb3VyY2UoMCwgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSkpOworICAgICAgICAgICAgY2FjaGVkSW1h
Z2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGNhY2hlKCktPnJlcXVlc3RSZXNvdXJjZSgw
LCBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bCksIFN0cmluZygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChjYWNoZWRJbWFnZSkgewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDczODk1KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCwxMCArMjI0LDE2IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50Ojpwcm9jZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0g
ZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBk
b2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHls
ZXNoZWV0KCk7CiAKLSAgICAvLyBTdHlsZXNoZWV0Ci0gICAgLy8gVGhpcyB3YXMgYnVnZ3kgYW5k
IHdvdWxkIGluY29ycmVjdGx5IG1hdGNoIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIj4sIHdoaWNoIGhh
cyBhIGRpZmZlcmVudCBzcGVjaWZpZWQgbWVhbmluZy4gLWR3aAotICAgIGlmIChtX2Rpc2FibGVk
U3RhdGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChh
Y2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkp
ICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8v
IGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25lIGRvY3VtZW50cwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbG9hZCB1bm5lY2Vzc2FyeSBzdHlsZXNoZWV0cyBh
dCBhbGwuCisgICAgYm9vbCBtZWRpYUlzU2NyZWVuID0gdHJ1ZTsKKyAgICBpZiAoIW1fbWVkaWEu
aXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gTWVkaWFMaXN0
OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOworICAgICAgICBNZWRp
YVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWx1YXRvcigic2NyZWVuIiwgdHJ1ZSk7CisgICAgICAg
IG1lZGlhSXNTY3JlZW4gPSBzY3JlZW5FdmFsdWF0b3IuZXZhbChtZWRpYS5nZXQoKSk7CisgICAg
fQorICAgIAorICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gRGlzYWJsZWQgJiYgKG1fcmVsQXR0
cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYg
dHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpIAorICAgICAgICAmJiBkb2N1bWVudCgpLT5mcmFt
ZSgpICYmIG1fdXJsLmlzVmFsaWQoKSkgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoYXJz
ZXQgPSBnZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIpOwogICAgICAgICBpZiAoY2hhcnNldC5pc0Vt
cHR5KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKQEAgLTI1MCw3ICsyNTYsOSBAQCB2b2lkIEhU
TUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIGlmICghaXNBbHRlcm5hdGUoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOwogCi0gICAgICAgIG1fY2Fj
aGVkU2hlZXQgPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q1NT
U3R5bGVTaGVldChtX3VybCwgY2hhcnNldCk7CisgICAgICAgIC8vIExvYWQgbm9uLXNjcmVlbiBz
dHlsZXNoZWV0cyB3aXRoIGxvdyBwcmlvcml0eSBzbyB0aGV5IGRvbid0IGFmZmVjdCBub3JtYWwg
cGFnZSBsb2FkaW5nLgorICAgICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9IG1l
ZGlhSXNTY3JlZW4gPyBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQgOiBSZXNvdXJjZUxv
YWRQcmlvcml0eVZlcnlMb3c7CisgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVTaGVldChtX3VybCwgY2hhcnNl
dCwgcHJpb3JpdHkpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAg
ICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQodGhpcyk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJN
ZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDksNyBAQCBwdWJsaWM6CiAgICAgUHJlbG9hZFRhc2so
Y29uc3QgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgOiBtX3RhZ05hbWUodG9rZW4ubmFtZSgp
LmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSkKICAgICAgICAgLCBtX2xpbmtJc1N0eWxlU2hl
ZXQoZmFsc2UpCisgICAgICAgICwgbV9saW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbih0cnVlKQog
ICAgIHsKICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAg
ICB9CkBAIC03Miw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgc2V0VXJs
VG9Mb2FkKGF0dHJpYnV0ZVZhbHVlKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1
dGVOYW1lID09IHJlbEF0dHIpCiAgICAgICAgICAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVl
dCA9IHJlbEF0dHJpYnV0ZUlzU3R5bGVTaGVldChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBtZWRpYUF0dHIpCisgICAgICAgICAgICAg
ICAgICAgIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4gPSBsaW5rTWVkaWFBdHRyaWJ1dGVJ
c1NjcmVlbihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC04Myw2ICs4OCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9r
ZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmlidXRlVmFsdWUsIHJlbCk7CiAgICAgICAgIHJldHVybiBy
ZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24g
JiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAgICAgfQorICAgIAorICAgIGJvb2wgbGlua01lZGlh
QXR0cmlidXRlSXNTY3JlZW4oY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWFMaXN0ID0gTWVkaWFMaXN0Ojpj
cmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAKKyAg
ICAgICAgLy8gT25seSBwcmVsb2FkIHNjcmVlbiBtZWRpYSBzdHlsZXNoZWV0cy4gVXNlZCB0aGlz
IHdheSwgdGhlIGV2YWx1YXRvciBldmFsdWF0ZXMgdG8gdHJ1ZSBmb3IgYW55IAorICAgICAgICAv
LyBydWxlcyBjb250YWluaW5nIGNvbXBsZXggcXVlcmllcyAoZnVsbCBldmFsdWF0aW9uIGlzIHBv
c3NpYmxlIGJ1dCBpdCByZXF1aXJlcyBhIGZyYW1lIGFuZCBhIHN0eWxlIHNlbGVjdG9yIHdoaWNo
CisgICAgICAgIC8vIG1heSBiZSBwcm9ibGVtYXRpYyBoZXJlKS4KKyAgICAgICAgTWVkaWFRdWVy
eUV2YWx1YXRvciBtZWRpYVF1ZXJ5RXZhbHVhdG9yKCJzY3JlZW4iKTsKKyAgICAgICAgcmV0dXJu
IG1lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbChtZWRpYUxpc3QuZ2V0KCkpOworICAgIH0KIAogICAg
IHZvaWQgc2V0VXJsVG9Mb2FkKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAgICAgewpA
QCAtMTAzLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJz
ZXQsIHNjYW5uaW5nQm9keSk7CiAgICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBpbWdUYWcp
IAogICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2FjaGVkUmVzb3Vy
Y2U6OkltYWdlUmVzb3VyY2UsIG1fdXJsVG9Mb2FkLCBTdHJpbmcoKSwgc2Nhbm5pbmdCb2R5KTsK
LSAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9saW5rSXNTdHlsZVNo
ZWV0KSAKKyAgICAgICAgZWxzZSBpZiAobV90YWdOYW1lID09IGxpbmtUYWcgJiYgbV9saW5rSXNT
dHlsZVNoZWV0ICYmIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4pIAogICAgICAgICAgICAg
Y2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hl
ZXQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5uaW5nQm9keSk7CiAgICAgfQogCkBAIC0x
MTQsNiArMTMyLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV91cmxUb0xvYWQ7CiAgICAgU3Ry
aW5nIG1fY2hhcnNldDsKICAgICBib29sIG1fbGlua0lzU3R5bGVTaGVldDsKKyAgICBib29sIG1f
bGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA3
Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlCiAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFu
eSBjYWxsYmFja3MgZnJvbSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUg
dGhlIG9sZCBsb2FkZXIuCiAgICAgICAgIG1fbG9hZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIg
PSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1
bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpNZWRp
dW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlmZkNvbnRlbnQpOworICAg
ICAgICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291
cmNlTG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eU1lZGl1bSwgc2VjdXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsIHNuaWZmQ29u
dGVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRQcmlvcml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFByaW9yaXR5LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRQcmlvcml0eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBSZXNvdXJjZUxvYWRQcmlvcml0eV9oCisjZGVmaW5lIFJlc291cmNlTG9h
ZFByaW9yaXR5X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFJlc291cmNlTG9hZFBy
aW9yaXR5IHsgCisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCAKKyAgICBSZXNvdXJj
ZUxvYWRQcmlvcml0eUxvdywgCisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIAorICAg
IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaCwgCisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3dl
c3QgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3csIAorICAgIFJlc291cmNlTG9hZFByaW9y
aXR5SGlnaGVzdCA9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaCwgCisgICAgLy8gVGhlIHVucmVz
b2x2ZWQgcHJpb3JpdHkgaXMgaGVyZSBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBjbGllbnRz
LiBJdCBzaG91bGQgbm90IGJlIHBhc3NlZCB0byB0aGUgUmVzb3VyY2VMb2FkU2NoZWR1bGVyLgor
ICAgIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwKK307CisKK30KKworI2VuZGlmCisK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24g
NzM4OTUpCisrKyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NiwxMyArNzYsMTQgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpSZXNv
dXJjZUxvYWRTY2hlZAogICAgIDogbV9ub25IVFRQUHJvdG9jb2xIb3N0KG5ldyBIb3N0SW5mb3Jt
YXRpb24oU3RyaW5nKCksIG1heFJlcXVlc3RzSW5GbGlnaHRGb3JOb25IVFRQUHJvdG9jb2xzKSkK
ICAgICAsIG1fcmVxdWVzdFRpbWVyKHRoaXMsICZSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlcXVl
c3RUaW1lckZpcmVkKQogICAgICwgbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoZmFsc2Up
CisgICAgLCBtX2lzU2VyaWFsTG9hZGluZ0VuYWJsZWQoZmFsc2UpCiB7CiAjaWYgUkVRVUVTVF9N
QU5BR0VNRU5UX0VOQUJMRUQKICAgICBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCA9IGluaXRp
YWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QoKTsKICNlbmRpZgogfQogCi1Q
YXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVk
dWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQcmlvcml0eSBwcmlvcml0
eSwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxv
YWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFzc1JlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9h
ZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIFNl
Y3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKIHsKICAgICBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBj
bGllbnQsIHJlcXVlc3QsIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Ms
IHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgaWYgKGxvYWRlcikKQEAgLTk0LDcgKzk1LDcgQEAg
UGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUgogewogICAgIFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRl
cikKLSAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgTG93KTsKKyAgICAgICAgc2No
ZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOwogICAgIHJl
dHVybiBsb2FkZXI7CiB9CiAKQEAgLTEwMywxMSArMTA0LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjphZGRNYWluUmVzb3UKICAgICBob3N0Rm9yVVJMKHJlc291cmNlTG9hZGVyLT51
cmwoKSwgQ3JlYXRlSWZOb3RGb3VuZCktPmFkZExvYWRJblByb2dyZXNzKHJlc291cmNlTG9hZGVy
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFByaW9yaXR5IHByaW9yaXR5KQordm9pZCBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIEFTU0VSVChyZXNvdXJj
ZUxvYWRlcik7CisgICAgQVNTRVJUKHByaW9yaXR5ICE9IFJlc291cmNlTG9hZFByaW9yaXR5VW5y
ZXNvbHZlZCk7CiAjaWYgIVJFUVVFU1RfTUFOQUdFTUVOVF9FTkFCTEVECi0gICAgcHJpb3JpdHkg
PSBIaWdoZXN0UHJpb3JpdHk7CisgICAgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUhp
Z2hlc3Q7CiAjZW5kaWYKIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OmxvYWQgcmVzb3VyY2UgJXAgJyVzJyIsIHJlc291cmNlTG9hZGVyLCByZXNvdXJj
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKQEAgLTExNSw3ICsxMTcs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkCiAgICAgYm9vbCBo
YWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2NoZWR1bGUocmVz
b3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhcmVz
b3VyY2VMb2FkZXItPnVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgKHByaW9yaXR5ID09
IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CisgICAgaWYgKHByaW9yaXR5ID4gUmVzb3VyY2VMb2Fk
UHJpb3JpdHlMb3cgfHwgIXJlc291cmNlTG9hZGVyLT51cmwoKS5wcm90b2NvbEluSFRUUEZhbWls
eSgpIHx8IChwcmlvcml0eSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdyAmJiAhaGFkUmVxdWVz
dHMpKSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1t
ZWRpYXRlbHkuCiAgICAgICAgIHNlcnZlUGVuZGluZ1JlcXVlc3RzKGhvc3QsIHByaW9yaXR5KTsK
ICAgICB9IGVsc2UgewpAQCAtMTQ4LDcgKzE1MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpjcm9zc09yaWdpblIKICAgICBvbGRIb3N0LT5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoUHJp
b3JpdHkgbWluaW11bVByaW9yaXR5KQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZl
UGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSkKIHsK
ICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cy4gbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM9JWQiLCBtX2lzU3Vz
cGVuZGluZ1BlbmRpbmdSZXF1ZXN0cyk7IAogICAgIGlmIChtX2lzU3VzcGVuZGluZ1BlbmRpbmdS
ZXF1ZXN0cykKQEAgLTE3NCwxMiArMTc2LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzZXJ2ZVBlbmRpbmcKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFByaW9yaXR5IG1pbmlt
dW1Qcmlvcml0eSkKK3ZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhIb3N0SW5mb3JtYXRpb24qIGhvc3QsIFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Q
cmlvcml0eSkKIHsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyBIb3N0SW5mb3JtYXRpb24ubV9uYW1lPSclcyciLCBo
b3N0LT5uYW1lKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIGZvciAoaW50IHByaW9yaXR5ID0g
SGlnaGVzdFByaW9yaXR5OyBwcmlvcml0eSA+PSBtaW5pbXVtUHJpb3JpdHk7IC0tcHJpb3JpdHkp
IHsKLSAgICAgICAgSG9zdEluZm9ybWF0aW9uOjpSZXF1ZXN0UXVldWUmIHJlcXVlc3RzUGVuZGlu
ZyA9IGhvc3QtPnJlcXVlc3RzUGVuZGluZygoUHJpb3JpdHkpIHByaW9yaXR5KTsKKyAgICBmb3Ig
KGludCBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcHJpb3JpdHkgPj0g
bWluaW11bVByaW9yaXR5OyAtLXByaW9yaXR5KSB7CisgICAgICAgIEhvc3RJbmZvcm1hdGlvbjo6
UmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcgPSBob3N0LT5yZXF1ZXN0c1BlbmRpbmcoKFJl
c291cmNlTG9hZFByaW9yaXR5KSBwcmlvcml0eSk7CiAKICAgICAgICAgd2hpbGUgKCFyZXF1ZXN0
c1BlbmRpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+
IHJlc291cmNlTG9hZGVyID0gcmVxdWVzdHNQZW5kaW5nLmZpcnN0KCk7CkBAIC0yMzUsMTEgKzIz
NywxMSBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6CiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6fkhvc3RJbmZvcm1hdGlvbigpCiB7CiAg
ICAgQVNTRVJUKG1fcmVxdWVzdHNMb2FkaW5nLmlzRW1wdHkoKSk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBwID0gMDsgcCA8PSBIaWdoZXN0UHJpb3JpdHk7IHArKykKKyAgICBmb3IgKHVuc2lnbmVkIHAg
PSAwOyBwIDw9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcCsrKQogICAgICAgICBBU1NF
UlQobV9yZXF1ZXN0c1BlbmRpbmdbcF0uaXNFbXB0eSgpKTsKIH0KICAgICAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb246OnNjaGVkdWxlKFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlciwgUHJpb3JpdHkgcHJpb3JpdHkpCit2b2lkIFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpzY2hlZHVsZShSZXNvdXJjZUxvYWRlciogcmVzb3Vy
Y2VMb2FkZXIsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIG1fcmVxdWVz
dHNQZW5kaW5nW3ByaW9yaXR5XS5hcHBlbmQocmVzb3VyY2VMb2FkZXIpOwogfQpAQCAtMjU3LDcg
KzI1OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBmb3IgKGludCBwcmlvcml0eSA9IEhpZ2hlc3RQ
cmlvcml0eTsgcHJpb3JpdHkgPj0gTG93ZXN0UHJpb3JpdHk7IC0tcHJpb3JpdHkpIHsgIAorICAg
IGZvciAoaW50IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoZXN0OyBwcmlvcml0
eSA+PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvd2VzdDsgLS1wcmlvcml0eSkgeyAgCiAgICAgICAg
IFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgZW5kID0gbV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHld
LmVuZCgpOwogICAgICAgICBmb3IgKFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgaXQgPSBtX3JlcXVl
c3RzUGVuZGluZ1twcmlvcml0eV0uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
ICAgICBpZiAoKml0ID09IHJlc291cmNlTG9hZGVyKSB7CkBAIC0yNzIsMTEgKzI3NCwxNiBAQCBi
b29sIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0CiB7CiAgICAgaWYgKCFtX3Jl
cXVlc3RzTG9hZGluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGZvciAo
dW5zaWduZWQgcCA9IDA7IHAgPD0gSGlnaGVzdFByaW9yaXR5OyBwKyspIHsKKyAgICBmb3IgKHVu
c2lnbmVkIHAgPSAwOyBwIDw9IFJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdDsgcCsrKSB7CiAg
ICAgICAgIGlmICghbV9yZXF1ZXN0c1BlbmRpbmdbcF0uaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6bGltaXRSZXF1ZXN0cygpIGNvbnN0IAor
eyAKKyAgICByZXR1cm4gbV9yZXF1ZXN0c0xvYWRpbmcuc2l6ZSgpID49IChyZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKS0+aXNTZXJpYWxMb2FkaW5nRW5hYmxlZCgpID8gMSA6IG1fbWF4UmVxdWVzdHNJ
bkZsaWdodCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTQ3LDIyICs0OCwyNCBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgOiBwdWJsaWMg
Tm9uCiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VM
b2FkU2NoZWR1bGVyKCk7CiAKLSAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywgTG93LCBNZWRp
dW0sIEhpZ2gsIExvd2VzdFByaW9yaXR5ID0gVmVyeUxvdywgSGlnaGVzdFByaW9yaXR5ID0gSGln
aCB9OwotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQcmlvcml0eSA9IExvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlD
aGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYgPSB0cnVlKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBz
Y2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50Kiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxv
YWRQcmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYgPSB0cnVlKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBz
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291
cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVy
Kik7CiAgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBLVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgCi0gICAgdm9pZCBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKKyAgICB2b2lkIHNl
cnZlUGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9
IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyk7CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1Jl
cXVlc3RzKCk7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICAKKyAgICBi
b29sIGlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2VyaWFsTG9h
ZGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wgYikg
eyBtX2lzU2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBiOyB9CiAKIHByaXZhdGU6CiAgICAgUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyKCk7CiAgICAgflJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAg
dm9pZCBzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqLCBQcmlvcml0eSk7CisgICAgdm9pZCBz
Y2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAgICAg
dm9pZCBzY2hlZHVsZVNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCByZXF1ZXN0VGlt
ZXJGaXJlZChUaW1lcjxSZXNvdXJjZUxvYWRTY2hlZHVsZXI+Kik7CiAKQEAgLTcyLDE3ICs3NSwx
NyBAQCBwcml2YXRlOgogICAgICAgICB+SG9zdEluZm9ybWF0aW9uKCk7CiAgICAgICAgIAogICAg
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICAg
ICAgdm9pZCBzY2hlZHVsZShSZXNvdXJjZUxvYWRlciosIFByaW9yaXR5ID0gVmVyeUxvdyk7Cisg
ICAgICAgIHZvaWQgc2NoZWR1bGUoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZUxvYWRQcmlvcml0
eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyk7CiAgICAgICAgIHZvaWQgYWRkTG9hZElu
UHJvZ3Jlc3MoUmVzb3VyY2VMb2FkZXIqKTsKICAgICAgICAgdm9pZCByZW1vdmUoUmVzb3VyY2VM
b2FkZXIqKTsKICAgICAgICAgYm9vbCBoYXNSZXF1ZXN0cygpIGNvbnN0OwotICAgICAgICBib29s
IGxpbWl0UmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RzTG9hZGluZy5zaXplKCkg
Pj0gbV9tYXhSZXF1ZXN0c0luRmxpZ2h0OyB9CisgICAgICAgIGJvb2wgbGltaXRSZXF1ZXN0cygp
IGNvbnN0OwogCiAgICAgICAgIHR5cGVkZWYgRGVxdWU8UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+
IFJlcXVlc3RRdWV1ZTsKLSAgICAgICAgUmVxdWVzdFF1ZXVlJiByZXF1ZXN0c1BlbmRpbmcoUHJp
b3JpdHkgcHJpb3JpdHkpIHsgcmV0dXJuIG1fcmVxdWVzdHNQZW5kaW5nW3ByaW9yaXR5XTsgfQor
ICAgICAgICBSZXF1ZXN0UXVldWUmIHJlcXVlc3RzUGVuZGluZyhSZXNvdXJjZUxvYWRQcmlvcml0
eSBwcmlvcml0eSkgeyByZXR1cm4gbV9yZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldOyB9CiAKICAg
ICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIFJlcXVlc3RRdWV1ZSBtX3Jl
cXVlc3RzUGVuZGluZ1tIaWdoZXN0UHJpb3JpdHkgKyAxXTsKKyAgICAgICAgUmVxdWVzdFF1ZXVl
IG1fcmVxdWVzdHNQZW5kaW5nW1Jlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCArIDFdOwogICAg
ICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RNYXA7
CiAgICAgICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0c0xvYWRpbmc7CiAgICAgICAgIGNvbnN0IFN0
cmluZyBtX25hbWU7CkBAIC05NSw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAg
ICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgS1VSTCYsIENyZWF0ZUhvc3RQb2xp
Y3kgPSBGaW5kT25seSk7Ci0gICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3Jt
YXRpb24qLCBQcmlvcml0eSk7CisgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5m
b3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwogICAgIEhvc3RN
YXAgbV9ob3N0czsKQEAgLTEwNCw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIFRpbWVyPFJlc291
cmNlTG9hZFNjaGVkdWxlcj4gbV9yZXF1ZXN0VGltZXI7CiAKICAgICBib29sIG1faXNTdXNwZW5k
aW5nUGVuZGluZ1JlcXVlc3RzOworICAgIGJvb2wgbV9pc1NlcmlhbExvYWRpbmdFbmFibGVkOwog
fTsKIAogUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNzM4OTUpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwyOCArNjUsNiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
SXNTdWJyZXNvdXJjZTsKIH0KIAotc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6UHJpb3Jp
dHkgZGV0ZXJtaW5lUHJpb3JpdHkoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewot
ICAgIHN3aXRjaCAocmVzb3VyY2UtPnR5cGUoKSkgewotICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpDU1NTdHlsZVNoZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpIaWdoOwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpT
Y3JpcHQ6Ci0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAg
ICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Ok1lZGl1bTsKLSAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgICAgIHJldHVybiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OkxvdzsKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgotICAgICAgICAgICAgcmV0dXJu
IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6VmVyeUxvdzsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpMb3c7
Ci19Ci0KIExvYWRlcjo6TG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
ZUxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsKQogICAg
IDogbV9jYWNoZWRSZXNvdXJjZUxvYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAsIG1f
cmVzb3VyY2UocmVzb3VyY2UpCkBAIC0xMzMsOSArMTExLDExIEBAIFBhc3NSZWZQdHI8TG9hZGVy
PiBMb2FkZXI6OmxvYWQoQ2FjaGVkUmUKICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKQogICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKCJYLVB1cnBvc2UiLCAicHJlZmV0Y2giKTsKICNlbmRpZgorICAgIAorICAg
IFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gcmVzb3VyY2UtPmxvYWRQcmlvcml0eSgp
OwogCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRvY3VtZW50KCktPmZyYW1lKCksCi0gICAgICAgIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVx
dWVzdCwgZGV0ZXJtaW5lUHJpb3JpdHkocmVzb3VyY2UpLCBzZWN1cml0eUNoZWNrLCBzZW5kUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKTsKKyAgICAgICAgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1
ZXN0LCBwcmlvcml0eSwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7
CiAgICAgaWYgKCFsb2FkZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3
YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KICAgICAgICAgTE9HKFJlc291cmNlTG9hZGlu
ZywgIkNhbm5vdCBzdGFydCBsb2FkaW5nICclcyciLCByZXNvdXJjZS0+dXJsKCkubGF0aW4xKCku
ZGF0YSgpKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJl
dmlzaW9uIDczODk1KQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywyOCBAQAogdXNpbmcgbmFtZXNwYWNlIFdURjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5
IGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpD
U1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShYU0xUKQorICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkUHJpb3JpdHlIaWdoOworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Cisg
ICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAgICAgICAgIHJl
dHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bTsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6SW1hZ2VSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdzsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFBy
aW9yaXR5VmVyeUxvdzsKKyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7Cit9CiAKICNpZm5kZWYgTkRFQlVH
CiBzdGF0aWMgUmVmQ291bnRlZExlYWtDb3VudGVyIGNhY2hlZFJlc291cmNlTGVha0NvdW50ZXIo
IkNhY2hlZFJlc291cmNlIik7CkBAIC01NSw2ICs3Nyw3IEBAIHN0YXRpYyBSZWZDb3VudGVkTGVh
a0NvdW50ZXIgY2FjaGVkUmVzb3UKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHVybCwgVHlwZSB0eXBlKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9yZXF1
ZXN0KDApCisgICAgLCBtX2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5
cGUodHlwZSkpCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCiAgICAg
LCBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6ZSgwKQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysr
IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
QEAgLTkwLDYgKzkxLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nICZ1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KKyAgICAKKyAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBs
b2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQogCiAgICAgdm9p
ZCBhZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2b2lkIHJlbW92ZUNsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwpAQCAtMjE3LDYgKzIyMCw3IEBAIHByb3RlY3RlZDoK
ICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5nIG1fYWNjZXB0OwogICAgIExvYWRlciogbV9y
ZXF1ZXN0OworICAgIFJlc291cmNlTG9hZFByaW9yaXR5IG1fbG9hZFByaW9yaXR5OwogCiAgICAg
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIGRvdWJsZSBtX3Jlc3BvbnNlVGltZXN0
YW1wOwpAQCAtMjMzLDYgKzIzNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlc291cmNl
VG9SZXZhbGlkYXRlKCk7CiAgICAgdm9pZCB1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9u
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAgICAgdmlydHVh
bCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJnZURlZmF1
bHQ7IH0KKyAgICB2b2lkIHNldExvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2Fk
UHJpb3JpdHkpIHsgbV9sb2FkUHJpb3JpdHkgPSBsb2FkUHJpb3JpdHk7IH0KIAogICAgIGRvdWJs
ZSBjdXJyZW50QWdlKCkgY29uc3Q7CiAgICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKCkgY29u
c3Q7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDkgKzE0NSw5IEBAIENhY2hlZEZv
bnQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q2FjaGVkRm9udCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNl
LCB1cmwsIFN0cmluZygpKSk7CiB9CiAKLUNhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KQorQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0LCB1cmwsIGNoYXJzZXQpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZTo6Q1NTU3R5bGVTaGVldCwgdXJsLCBjaGFyc2V0LCBwcmlvcml0eSkpOwogfQogCiBDYWNoZWRD
U1NTdHlsZVNoZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCkBAIC0yNDMsNyAr
MjQzLDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCkKK0NhY2hlZFJlc291cmNl
KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGlzUHJlbG9hZCkKIHsKICAgICBLVVJMIGZ1
bGxVUkwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yNjIsNyArMjYyLDcg
QEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZQogICAgIGNoZWNrRm9y
UmVsb2FkKGZ1bGxVUkwpOwogCiAgICAgYm9vbCBhbGxvd0Zvckhpc3RvcnlPbmx5UmVzb3VyY2Vz
ID0gY2FjaGVQb2xpY3koKSA9PSBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXI7Ci0gICAgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlID0gY2FjaGUoKS0+cmVxdWVzdFJlc291cmNlKHRoaXMsIHR5cGUs
IGZ1bGxVUkwsIGNoYXJzZXQsIGlzUHJlbG9hZCwgYWxsb3dGb3JIaXN0b3J5T25seVJlc291cmNl
cyk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gY2FjaGUoKS0+cmVxdWVzdFJlc291
cmNlKHRoaXMsIHR5cGUsIGZ1bGxVUkwsIGNoYXJzZXQsIHByaW9yaXR5LCBpc1ByZWxvYWQsIGFs
bG93Rm9ySGlzdG9yeU9ubHlSZXNvdXJjZXMpOwogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAg
ICAvLyBDaGVjayBmaW5hbCBVUkwgb2YgcmVzb3VyY2UgdG8gY2F0Y2ggcmVkaXJlY3RzLgogICAg
ICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2
Mz4uCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFByZWxvYQogICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9
PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCkKICAgICAgICAgZW5jb2RpbmcgPSBjaGFy
c2V0LmlzRW1wdHkoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT53cml0ZXIoKS0+
ZW5jb2RpbmcoKSA6IGNoYXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBy
ZXF1ZXN0UmVzb3VyY2UodHlwZSwgdXJsLCBlbmNvZGluZywgdHJ1ZSk7CisgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHVybCwgZW5jb2RpbmcsIFJl
c291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgdHJ1ZSk7CiAgICAgaWYgKCFyZXNvdXJjZSB8
fCAobV9wcmVsb2FkcyAmJiBtX3ByZWxvYWRzLT5jb250YWlucyhyZXNvdXJjZSkpKQogICAgICAg
ICByZXR1cm47CiAgICAgcmVzb3VyY2UtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDcz
ODk1KQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZVBvbGlj
eS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAibG9hZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfkNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICBDYWNoZWRJbWFnZSogcmVxdWVzdEltYWdlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICBD
YWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKKyAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KiByZXF1
ZXN0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5y
ZXNvbHZlZCk7CiAgICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCogcmVxdWVzdFVzZXJDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hl
ZFNjcmlwdCogcmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0KTsKICAgICBDYWNoZWRGb250KiByZXF1ZXN0Rm9udChjb25zdCBTdHJpbmcmIHVybCk7
CkBAIC0xMDUsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMo
KTsKICAgICAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBSZXNvdXJj
ZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwogICAgIHZv
aWQgcmVxdWVzdFByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogCiAgICAgdm9pZCBjaGVja0ZvclJlbG9hZChjb25z
dCBLVVJMJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lv
biA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsMTAgKzk1LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRl
UmVzb3VyY2UoQ2EKICAgICByZXR1cm4gMDsKIH0KIAotQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNh
Y2hlOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3Rvcnkp
CitDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5
cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBwcmlvcml0eSwgYm9vbCByZXF1ZXN0SXNQcmVsb2FkLCBib29sIGZvckhpc3Rvcnkp
CiB7Ci0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzb3Vy
Y2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmVsb2FkPSV1LCBmb3JIaXN0b3J5PSV1IiwgdXJsLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSwgY2hhcnNldC5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3RJ
c1ByZWxvYWQsIGZvckhpc3RvcnkpOwotCisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIk1lbW9y
eUNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwg
cHJlbG9hZD0ldSwgZm9ySGlzdG9yeT0ldSIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCks
IGNoYXJzZXQubGF0aW4xKCkuZGF0YSgpLCBwcmlvcml0eSwgcmVxdWVzdElzUHJlbG9hZCwgZm9y
SGlzdG9yeSk7CisgICAgCiAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIHNwZWNp
YWwtY2FzZSBhbiBlbXB0eSBVUkw/CiAgICAgLy8gV291bGQgaXQgYmUgYmV0dGVyIHRvIGp1c3Qg
Z28gb24gd2l0aCB0aGUgY2FjaGUgY29kZSBhbmQgbGV0IGl0IGZhaWwgbGF0ZXI/CiAgICAgaWYg
KHVybC5pc0VtcHR5KCkpCkBAIC0xNDQsNiArMTQ0LDEwIEBAIENhY2hlZFJlc291cmNlKiBNZW1v
cnlDYWNoZTo6cmVxdWVzdFJlc28KICAgICAgICAgLy8gRklYTUU6IENhY2hlZFJlc291cmNlIHNo
b3VsZCBqdXN0IHVzZSBub3JtYWwgcmVmY291bnRpbmcgaW5zdGVhZC4KICAgICAgICAgcmVzb3Vy
Y2UtPnNldEluQ2FjaGUodHJ1ZSk7CiAgICAgICAgIAorICAgICAgICAvLyBEZWZhdWx0IHByaW9y
aXR5IGJhc2VkIG9uIHJlc291cmNlIHR5cGUgaXMgdXNlZCBpZiB0aGUgcmVxdWVzdCBkaWQgbm90
IHNwZWNpZnkgb25lLgorICAgICAgICBpZiAocHJpb3JpdHkgIT0gUmVzb3VyY2VMb2FkUHJpb3Jp
dHlVbnJlc29sdmVkKQorICAgICAgICAgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlv
cml0eSk7CisKICAgICAgICAgcmVzb3VyY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwog
ICAgICAgICAKICAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTE2
Miw2ICsxNjYsMTIgQEAgQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXF1ZXN0UmVzbwog
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUoZmFsc2UpOwogICAgICAgICAgICAgcmVz
b3VyY2UtPnNldENhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBVcGdyYWRpbmcgdGhlIHBy
aW9yaXR5IGRvZXNuJ3QgcmVhbGx5IGRvIG11Y2ggc2luY2UgdGhlIFJlc291cmNlTG9hZFNjaGVk
dWxlciBkb2VzIG5vdCBjdXJyZW50bHkKKyAgICAgICAgLy8gYWxsb3cgY2hhbmdpbmcgcHJpb3Jp
dGllcy4gVGhpcyBtaWdodCBiZWNvbWUgaW1wb3J0YW50IGlmIHdlIG1ha2Ugc2NoZWR1bGluZyBw
cmlvcml0aWVzCisgICAgICAgIC8vIG1vcmUgZHluYW1pYy4KKyAgICAgICAgaWYgKHByaW9yaXR5
ICE9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCAmJiByZXNvdXJjZS0+bG9hZFByaW9y
aXR5KCkgPCBwcmlvcml0eSkKKyAgICAgICAgICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHko
cHJpb3JpdHkpOwogICAgIH0KIAogICAgIGlmICghZGlzYWJsZWQoKSkgewpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBSZXF1ZXN0IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9h
ZCB3aWxsIGJlIGluaXRpYXRlZCBhbmQgYSBjYWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2Jq
ZWN0IGlzIG5vdAogICAgIC8vIGZvdW5kIGluIHRoZSBjYWNoZS4KLSAgICBDYWNoZWRSZXNvdXJj
ZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6
OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJl
bG9hZCA9IGZhbHNlLCBib29sIGZvckhpc3RvcnkgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3Vy
Y2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNl
OjpUeXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHksIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UsIGJvb2wgZm9ySGlzdG9yeSA9IGZh
bHNlKTsKIAogICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVl
dChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQpOwogICAgIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczOTEwKQorKysgV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMi0xMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwNzU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzIyMDk0PiAKKyAgICAgICAg
RGVmZXIgbG9hZGluZyBwcmludCBzdHlsZXNoZWV0cworICAgICAgICAKKyAgICAgICAgRXhwb3Nl
IFNQSSBmb3IgRFJUIGZvciBtYWtpbmcgcmVzb3VyY2VzIGxvYWQgc2VyaWFsbHkuIFRoaXMgaXMg
dXNlZnVsIGZvciB0ZXN0aW5nIHJlc291cmNlIGxvYWQgb3JkZXIuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX3NldExvYWRSZXNvdXJjZXNTZXJp
YWxseTpmb3JIb3N0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwog
MjAxMC0xMC0yOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlz
aW9uIDczODk1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2NjgsNiArMjY2OCwxMSBAQCAtIChCT09MKXNlYXJjaEZvcjooTlNTdHJpbmcgKilz
dHJpbmcgZGlyCiAgICAgcmV0dXJuIFtzZWxmIGZpbmRTdHJpbmc6c3RyaW5nIG9wdGlvbnM6KChm
b3J3YXJkID8gMCA6IFdlYkZpbmRPcHRpb25zQmFja3dhcmRzKSB8IChjYXNlRmxhZyA/IDAgOiBX
ZWJGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkgfCAod3JhcEZsYWcgPyBXZWJGaW5kT3B0aW9u
c1dyYXBBcm91bmQgOiAwKSB8IChzdGFydEluU2VsZWN0aW9uID8gV2ViRmluZE9wdGlvbnNTdGFy
dEluU2VsZWN0aW9uIDogMCkpXTsKIH0KIAorKyAodm9pZClfc2V0TG9hZFJlc291cmNlc1Nlcmlh
bGx5OihCT09MKXNlcmlhbGl6ZSAKK3sKKyAgICByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2V0
U2VyaWFsTG9hZGluZ0VuYWJsZWQoc2VyaWFsaXplKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNiArNTI0LDkgQEAgQ291bGQgYmUgd29ydGggYWRk
aW5nIHRvIHRoZSBBUEkuCiArICh2b2lkKV9yZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tR3JvdXA6
KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxkOwogKyAo
dm9pZClfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1l
OwogCisvLyBTUEkgZm9yIER1bXBSZW5kZXJUcmVlCisrICh2b2lkKV9zZXRMb2FkUmVzb3VyY2Vz
U2VyaWFsbHk6KEJPT0wpc2VyaWFsaXplOworCiAvKiEKICAgICBAbWV0aG9kIGNzc0FuaW1hdGlv
bnNTdXNwZW5kZWQKICAgICBAYWJzdHJhY3QgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBDU1MgQW5p
bWF0aW9ucyBhcmUgc3VzcGVuZGVkLgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM5MjEpCisrKyBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0x
Mi0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNldFNlcmlhbGl6ZUhUVFBMb2Fk
cyBmdW5jdGlvbiB0byBhbGxvdyB0ZXN0aW5nIHJlc291cmNlIGxvYWQgb3JkZXIgb24gT1MgWC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4CisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChzZXRTZXJpYWxpemVIVFRQTG9hZHNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0U2VyaWFsaXplSFRUUExvYWRzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW06CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVz
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSFRUUExvYWRz
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2Fk
cyk6CisKIDIwMTAtMTItMTMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgpJbmRleDogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gNzM4OTUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NDUsNiArMTg0NSwxNiBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRFZGl0aW5nQmVoYXZpb3JDYWxsCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTZXJpYWxp
emVIVFRQTG9hZHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpT
T2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGJvb2wgc2VyaWFsaXplID0gdHJ1
ZTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBzZXJpYWxpemUgPSBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7CisKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKHNlcmlhbGl6ZSk7CisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAKIHN0
YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCkBAIC0yMDI5LDYgKzIwMzksNyBAQCBKU1N0YXRpY0Z1bmN0aW9u
KiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldFByaW50aW5nIiwgc2V0UHJp
bnRpbmdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkIiwgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQiLCBzZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0U2VyaWFs
aXplSFRUUExvYWRzIiwgc2V0U2VyaWFsaXplSFRUUExvYWRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgc2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkIiwgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcyIsIHNldFN0b3BQcm92aXNp
b25hbEZyYW1lTG9hZHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3Mzg5NSkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4Nyw2ICsyODcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTcGVs
bGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7CiAKICAgICB2b2lkIGR1bXBDb25maWd1
cmF0aW9uRm9yVmlld3BvcnQoaW50IGF2YWlsYWJsZVdpZHRoLCBpbnQgYXZhaWxhYmxlSGVpZ2h0
KTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCBzZXJp
YWxpemUpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBBUEkgdGVzdCBmdW5jdGlvbnMgc2hvdWxk
IHByb2JhYmx5IGJlIG1vdmVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIAogICAgIC8vIHVuaXQgdGVz
dHMgb3V0c2lkZSBvZiBEUlQgb25jZSB0aGV5IGV4aXN0LgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNSwzICs4MzUs
OCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wQ29uZmlndXJhCiAgICAgQVNTRVJU
KHdlYlZpZXcpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcENvbmZpZ3VyYXRp
b25Gb3JWaWV3cG9ydCh3ZWJWaWV3LCBhdmFpbGFibGVXaWR0aCwgYXZhaWxhYmxlSGVpZ2h0KTsK
IH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGJv
b2wpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBpZiBuZWVkZWQgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OC4KK30KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDcz
ODk1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00NjQsNiArNDY0LDggQEAgc3RhdGljIHZvaWQgcmVzZXREZWZh
dWx0c1RvQ29uc2lzdGVudFZhbAogICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZDpOT107CiAKICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdIHNldENvb2tpZUFjY2VwdFBvbGljeTpOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbl07CisgICAgCisgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CiAKICAgICBzZXRsb2Nh
bGUoTENfQUxMLCAiIik7CiB9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA3Mzg5
NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTk4LDMgKzk5OCw4IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmEKIHsKIAogfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCBzZXJpYWxpemUpCit7CisgICAgW1dl
YlZpZXcgX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTpzZXJpYWxpemVdOworfQpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA3Mzg5NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MjUsMyArMTQyNSw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBDb25maWd1
cmEKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiB9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCit9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzkyMSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTEyLTA5ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3MjIwOTQ+IAorICAgICAg
ICBEZWZlciBsb2FkaW5nIHByaW50IHN0eWxlc2hlZXRzCisgICAgICAgIAorICAgICAgICBUZXN0
IGxvYWQgb3JkZXJpbmcuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVz
aGVldC1sb2FkLW9yZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1wcmVsb2FkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1v
cmRlci1wcmVsb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIuaHRtbDogQWRkZWQuCisKIDIwMTAtMTItMTMgIEpvaG4g
S25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU3RldmUgQmxvY2suCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmst
c3R5bGVzaGVldC1sb2FkLW9yZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1z
dHlsZXNoZWV0LWxvYWQtb3JkZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI4IEBACisgVGVzdCBzdHlsZXNoZWV0IGxvYWQgc2NoZWR1bGluZy4gUmVzb3VyY2UgbG9hZHMg
Zm9yIHNjcmVlbiBzdHlsZXNoZWV0cyBzaG91bGQgYmUgc2NoZWR1bGVkIGZpcnN0LCBvdGhlcnMg
c2hvdWxkIGJlIHNjaGVkdWxlZCBsYXN0LgorUmVzb3VyY2UgcmVxdWVzdHM6CisKKworbm8tbWVk
aWEuY3NzCittZWRpYS1lbXB0eS5jc3MKK21lZGlhLWFsbC5jc3MKK21lZGlhLXNjcmVlbi5jc3MK
K21lZGlhLXNjcmVlbi1xdWVyeS1zdWNjZXNzLmNzcworbWVkaWEtYnJhaWxsZS1zY3JlZW4uY3Nz
CittZWRpYS1zY3JlZW4tcXVlcnktZmFpbC5jc3MKK25vLW1lZGlhLTIuY3NzCittZWRpYS1lbXB0
eS0yLmNzcworbWVkaWEtYWxsLTIuY3NzCittZWRpYS1zY3JlZW4tMi5jc3MKK21lZGlhLXNjcmVl
bi1xdWVyeS1zdWNjZXNzLTIuY3NzCittZWRpYS1icmFpbGxlLXNjcmVlbi0yLmNzcworbWVkaWEt
c2NyZWVuLXF1ZXJ5LWZhaWwtMi5jc3MKK3NjcmlwdC5qcworaW1hZ2UuanBnCittZWRpYS1wcmlu
dC5jc3MKK21lZGlhLWF1cmFsLmNzcworbWVkaWEtYnJhaWxsZS5jc3MKK21lZGlhbi1oYW5kaGVs
ZC5jc3MKK21lZGlhLXByb2plY3Rpb24uY3NzCittZWRpYS10dHkuY3NzCittZWRpYS10di5jc3MK
K21lZGlhLXByaW50LTIuY3NzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xp
bmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3Jk
ZXItcHJlbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACisgVGVzdCBzdHlsZXNoZWV0IGxvYWQg
c2NoZWR1bGluZyB3aXRoIHByZWxvYWQgc2Nhbm5lci4gUmVzb3VyY2UgbG9hZHMgZm9yIHNjcmVl
biBzdHlsZXNoZWV0cyBzaG91bGQgYmUgc2NoZWR1bGVkIGZpcnN0LCBvdGhlcnMgc2hvdWxkIGJl
IHNjaGVkdWxlZCBsYXN0LgorUmVzb3VyY2UgcmVxdWVzdHM6CisKKworc2NyaXB0LmpzCituby1t
ZWRpYS5jc3MKK21lZGlhLWVtcHR5LmNzcworbWVkaWEtYWxsLmNzcworbWVkaWEtc2NyZWVuLmNz
cworbWVkaWEtYnJhaWxsZS1zY3JlZW4uY3NzCituby1tZWRpYS0yLmNzcworbWVkaWEtZW1wdHkt
Mi5jc3MKK21lZGlhLWFsbC0yLmNzcworbWVkaWEtc2NyZWVuLTIuY3NzCittZWRpYS1icmFpbGxl
LXNjcmVlbi0yLmNzcworbWVkaWEtc2NyZWVuLXF1ZXJ5LXN1Y2Nlc3MuY3NzCittZWRpYS1zY3Jl
ZW4tcXVlcnktZmFpbC5jc3MKK21lZGlhLXNjcmVlbi1xdWVyeS1zdWNjZXNzLTIuY3NzCittZWRp
YS1zY3JlZW4tcXVlcnktZmFpbC0yLmNzcworc2NyaXB0LTIuanMKK2ltYWdlLmpwZworbWVkaWEt
cHJpbnQuY3NzCittZWRpYS1hdXJhbC5jc3MKK21lZGlhLWJyYWlsbGUuY3NzCittZWRpYW4taGFu
ZGhlbGQuY3NzCittZWRpYS1wcm9qZWN0aW9uLmNzcworbWVkaWEtdHR5LmNzcworbWVkaWEtdHYu
Y3NzCittZWRpYS1wcmludC0yLmNzcwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1wcmVsb2FkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci1w
cmVsb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorICA8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIC8vIFByZXZlbnQgbmV0d29ya2luZyBsYXllciBmcm9t
IHJlb3JkZXJpbmcgbG9hZHMuCisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRT
ZXJpYWxpemVIVFRQTG9hZHMpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRT
ZXJpYWxpemVIVFRQTG9hZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBDYWxsQ29tbWFuZChj
bWQpCisgICAgeworICAgICB0cnkgeworICAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsKKyAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jl
c291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD0iICsgY21kLCBmYWxzZSk7Cisg
ICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0
OworICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAgcmV0dXJuICIiOworICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gZW5kVGVzdCgpCisgICAgeworICAgICAgICBnZXRSZXNvdXJjZUxv
ZygpOworICAgICAgICBDYWxsQ29tbWFuZCgiY2xlYXItcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsK
KworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGdldFJlc291cmNlTG9nKCkKKyAgICB7CisgICAgICAgIHZhciBsb2cgPSBDYWxsQ29tbWFuZCgi
Z2V0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgICAgIHZhciBsb2dMaW5lcyA9IGxvZy5z
cGxpdCgnXG4nKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlu
bmVyVGV4dCA9IGxvZ0xpbmVzLmpvaW4oJ1xuJyk7CisgICAgfQorCisgICAgQ2FsbENvbW1hbmQo
InN0YXJ0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBlbmRUZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorICAKKyAgPCEtLSBUaGlz
IHdpbGwgdHJpZ2dlciB0aGUgcHJlbG9hZCBzY2FubmVyIC0tPgorICA8c2NyaXB0IHNyYz0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPXNjcmlwdC5qcyI+PC9zY3JpcHQ+CisKKyAgPGxp
bmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9u
ZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW5v
LW1lZGlhLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSIiIGhyZWY9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9
bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1lbXB0eS5jc3MiPgorICA8bGluayByZWw9
c3R5bGVzaGVldCBtZWRpYT0iYWxsIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9bWVkaWEtYWxsLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJwcmludCIg
aHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5w
aHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXByaW50LmNzcyI+Cisg
IDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4iIGhyZWY9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291
cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3JlZW4uY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hl
ZXQgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMXB4KSIgaHJlZj0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVz
b3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi1xdWVyeS1zdWNjZXNzLmNzcyI+CisgIDxs
aW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJicmFpbGxlLCBzY3JlZW4iIGhyZWY9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9n
LXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1icmFpbGxlLXNjcmVlbi5jc3MiPgorICA8bGlu
ayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAwMDAwcHgp
IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9y
LnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLXF1ZXJ5
LWZhaWwuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImF1cmFsIiBocmVmPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21t
YW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtYXVyYWwuY3NzIj4KKyAgPGxpbmsg
cmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJyYWlsbGUiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJl
cXVlc3QmcGF0aD1tZWRpYS1icmFpbGxlLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1l
ZGlhPSJoYW5kaGVsZCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3
b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlh
bi1oYW5kaGVsZC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0icHJvamVjdGlv
biIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRv
ci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXByb2plY3Rpb24u
Y3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InR0eSIgaHJlZj0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ct
cmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXR0eS5jc3MiPgorICA8bGluayByZWw9c3R5bGVz
aGVldCBtZWRpYT0idHYiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YS10di5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJj
ZS1yZXF1ZXN0JnBhdGg9bm8tbWVkaWEtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBt
ZWRpYT0iIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2lt
dWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtZW1wdHkt
Mi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYWxsIiBocmVmPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxv
Zy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtYWxsLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0
eWxlc2hlZXQgbWVkaWE9InByaW50IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9bWVkaWEtcHJpbnQtMi5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2Ny
ZWVuIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxh
dG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLTIu
Y3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0
aDogMXB4KSIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVl
bi1xdWVyeS1zdWNjZXNzLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImJy
YWlsbGUsIHNjcmVlbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3
b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlh
LWJyYWlsbGUtc2NyZWVuLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNj
cmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMDAwMHB4KSIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2Ut
cmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi1xdWVyeS1mYWlsLTIuY3NzIj4KKyAgCis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGltZyBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1pbWFn
ZS5qcGciPgorICA8c2NyaXB0IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9u
ZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPXNj
cmlwdC0yLmpzIj48L3NjcmlwdD4KKworICBUZXN0IHN0eWxlc2hlZXQgbG9hZCBzY2hlZHVsaW5n
IHdpdGggcHJlbG9hZCBzY2FubmVyLiBSZXNvdXJjZSBsb2FkcyBmb3Igc2NyZWVuIHN0eWxlc2hl
ZXRzIHNob3VsZCBiZSBzY2hlZHVsZWQgZmlyc3QsIG90aGVycyBzaG91bGQgYmUgc2NoZWR1bGVk
IGxhc3QuCisKKyAgPGgyPlJlc291cmNlIHJlcXVlc3RzOjwvaDI+CisgIDxwcmUgaWQ9InJlc3Vs
dCI+UmVxdWVzdCBsb2cgZ29lcyBoZXJlIGluIERSVDwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9hZC1v
cmRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3OCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorICA8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIC8vIFByZXZlbnQgbmV0d29ya2luZyBs
YXllciBmcm9tIHJlb3JkZXJpbmcgbG9hZHMuCisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBDYWxs
Q29tbWFuZChjbWQpCisgICAgeworICAgICB0cnkgeworICAgICAgICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdDsKKyAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD0iICsgY21kLCBm
YWxzZSk7CisgICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgIHJldHVybiByZXEucmVz
cG9uc2VUZXh0OworICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAgcmV0dXJuICIiOworICAg
ICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZW5kVGVzdCgpCisgICAgeworICAgICAgICBnZXRS
ZXNvdXJjZUxvZygpOworICAgICAgICBDYWxsQ29tbWFuZCgiY2xlYXItcmVzb3VyY2UtcmVxdWVz
dC1sb2ciKTsKKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGdldFJlc291cmNlTG9nKCkKKyAgICB7CisgICAgICAgIHZhciBsb2cgPSBDYWxs
Q29tbWFuZCgiZ2V0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgICAgIHZhciBsb2dMaW5l
cyA9IGxvZy5zcGxpdCgnXG4nKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVyVGV4dCA9IGxvZ0xpbmVzLmpvaW4oJ1xuJyk7CisgICAgfQorCisgICAgQ2Fs
bENvbW1hbmQoInN0YXJ0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBlbmRUZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorCisgIDxs
aW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMv
bmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1u
by1tZWRpYS5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iIiBocmVmPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5k
PWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtZW1wdHkuY3NzIj4KKyAgPGxpbmsgcmVs
PXN0eWxlc2hlZXQgbWVkaWE9ImFsbCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW1lZGlhLWFsbC5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0icHJpbnQi
IGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3Iu
cGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1wcmludC5jc3MiPgor
ICA8bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0ic2NyZWVuIiBocmVmPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNv
dXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtc2NyZWVuLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNo
ZWV0IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDFweCkiIGhyZWY9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJl
c291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3JlZW4tcXVlcnktc3VjY2Vzcy5jc3MiPgorICA8
bGluayByZWw9c3R5bGVzaGVldCBtZWRpYT0iYnJhaWxsZSwgc2NyZWVuIiBocmVmPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxv
Zy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVkaWEtYnJhaWxsZS1zY3JlZW4uY3NzIj4KKyAgPGxp
bmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMDAwMHB4
KSIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRv
ci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi1xdWVy
eS1mYWlsLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJhdXJhbCIgaHJlZj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29t
bWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWF1cmFsLmNzcyI+CisgIDxsaW5r
IHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJicmFpbGxlIiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1y
ZXF1ZXN0JnBhdGg9bWVkaWEtYnJhaWxsZS5jc3MiPgorICA8bGluayByZWw9c3R5bGVzaGVldCBt
ZWRpYT0iaGFuZGhlbGQiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YW4taGFuZGhlbGQuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InByb2plY3Rp
b24iIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0
b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1wcm9qZWN0aW9u
LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJ0dHkiIGhyZWY9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9n
LXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS10dHkuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxl
c2hlZXQgbWVkaWE9InR2IiBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9bWVk
aWEtdHYuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0iaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3Vy
Y2UtcmVxdWVzdCZwYXRoPW5vLW1lZGlhLTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQg
bWVkaWE9IiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNp
bXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWVtcHR5
LTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9ImFsbCIgaHJlZj0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1s
b2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLWFsbC0yLmNzcyI+CisgIDxsaW5rIHJlbD1z
dHlsZXNoZWV0IG1lZGlhPSJwcmludCIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZw
YXRoPW1lZGlhLXByaW50LTIuY3NzIj4KKyAgPGxpbmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9InNj
cmVlbiIgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVs
YXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPW1lZGlhLXNjcmVlbi0y
LmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lk
dGg6IDFweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0d29yay1z
aW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRpYS1zY3Jl
ZW4tcXVlcnktc3VjY2Vzcy0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJi
cmFpbGxlLCBzY3JlZW4iIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1tZWRp
YS1icmFpbGxlLXNjcmVlbi0yLmNzcyI+CisgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IG1lZGlhPSJz
Y3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDAwMDBweCkiIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNl
LXJlcXVlc3QmcGF0aD1tZWRpYS1zY3JlZW4tcXVlcnktZmFpbC0yLmNzcyI+CisgIAorPC9oZWFk
PgorPGJvZHk+CisgIDxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL25l
dHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9aW1h
Z2UuanBnIj4KKyAgPHNjcmlwdCBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMv
bmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD1z
Y3JpcHQuanMiPjwvc2NyaXB0PgorCisgIFRlc3Qgc3R5bGVzaGVldCBsb2FkIHNjaGVkdWxpbmcu
IFJlc291cmNlIGxvYWRzIGZvciBzY3JlZW4gc3R5bGVzaGVldHMgc2hvdWxkIGJlIHNjaGVkdWxl
ZCBmaXJzdCwgb3RoZXJzIHNob3VsZCBiZSBzY2hlZHVsZWQgbGFzdC4KKworICA8aDI+UmVzb3Vy
Y2UgcmVxdWVzdHM6PC9oMj4KKyAgPHByZSBpZD0icmVzdWx0Ij5SZXF1ZXN0IGxvZyBnb2VzIGhl
cmUgaW4gRFJUPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAkocmV2aXNpb24gNzM4OTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTA5MywzICsxMDkzLDggQEAgZWRpdGluZy90ZXh0LWl0
ZXJhdG9yL2ZpbmRTdHJpbmcuaHRtbAogIyBUaGUgcmVsZXZhbnQgYnVncyBhcmUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODQ5LzQ3ODE3LgogZmFzdC9mcmFtZXMv
bG9jYXRpb24tcmVkaXJlY3QtdXNlci1nZXN0dXJlLmh0bWwKIGZhc3QvZnJhbWVzL21ldGEtcmVm
cmVzaC11c2VyLWdlc3R1cmUuaHRtbAorCisjIEZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA3NTgKKyMgVGhlc2UgcmVxdWlyZSBEUlQgc2V0U2VyaWFsaXplSFRU
UExvYWRzIGltcGxlbWVudGF0aW9uIHRvIGJlIHJlbGlhYmxlLgoraHR0cC90ZXN0cy9sb2NhbC9s
aW5rLXN0eWxlc2hlZXQtbG9hZC1vcmRlci5odG1sCitodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5
bGVzaGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbAo=
</data>
<flag name="review"
          id="67350"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>