<?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>177853</bug_id>
          
          <creation_ts>2017-10-03 19:58:18 -0700</creation_ts>
          <short_desc>Add basic support for the version of DataTransferItemList.add that takes a File</short_desc>
          <delta_ts>2017-10-09 07:50:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jlewis3</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356222</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-03 19:58:18 -0700</bug_when>
    <thetext>Implement a version of DataTransferItemList.add(File) that doesn&apos;t yet write to the pasteboard, for parity with other browsers on macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356237</commentid>
    <comment_count>1</comment_count>
      <attachid>322626</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-03 20:43:31 -0700</bug_when>
    <thetext>Created attachment 322626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356250</commentid>
    <comment_count>2</comment_count>
      <attachid>322626</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-03 21:40:39 -0700</bug_when>
    <thetext>Comment on attachment 322626
Patch

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

&gt; Source/WebCore/dom/DataTransfer.cpp:169
&gt; +    // Invalidate the present FileList. An up-to-date FileList will be regenerated if necessary.
&gt; +    m_fileList = nullptr;

We can&apos;t quite do this because dataTransfer.files need to return the same object each time.
In fact, we should add a test making sure dataTransfer.files don&apos;t change before/after adding or removing a file.
We need to add a new method to FileList and remove the relevant entry.

&gt; Source/WebCore/dom/DataTransfer.cpp:203
&gt; +        m_itemList-&gt;enumerateItems([&amp;containsFile] (const auto&amp; item) {
&gt; +            containsFile |= item.isFile();
&gt; +        });

If I were you, I&apos;d just add a new method on DataTransferItemList which returns
const Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&amp; like m_itemList-&gt;items()
and call findMatching() here instead of traversing through the entire list.
Alternatively, we could just add two methods: containsFiles() and addFiles(FileList&amp;).

&gt; Source/WebCore/dom/DataTransferItemList.cpp:94
&gt; +    return RefPtr&lt;DataTransferItem&gt; { m_items-&gt;last().copyRef() };

Why don&apos;t we just return m_items-&gt;last().ptr()?

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:13
&gt; +    &lt;div style=&quot;font-size: 40px;&quot; id=&quot;source&quot;&gt;Try to copy me.&lt;/div&gt;

You should add instructions on how to run this test manually when opening in a browser.

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:27
&gt; +    for (let type of event.clipboardData.types)

Use const.

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:29
&gt; +    let itemsInfo = []

Use const. Missing ;.

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:30
&gt; +    for (let item of event.clipboardData.items) {

Use const.

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:60
&gt; +    event.clipboardData.items.remove(2);

You should check that calling getAsFile() on the removed item returns null.

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:64
&gt; +    event.clipboardData.items.add(new File([ &quot;This is just a plain string&quot; ], &quot;second.txt&quot;, { type: &quot;text/plain&quot; }));
&gt; +    updateOutputText(&quot;after adding another plain text file&quot;, event);

You should add a test case for when files and non-file types are interleaved.

&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-drag.html:13
&gt; +    &lt;div style=&quot;font-size: 40px;&quot; id=&quot;source&quot; draggable=&quot;true&quot;&gt;Try to drag me out.&lt;/div&gt;

Ditto to add the instructions on how to test this manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356258</commentid>
    <comment_count>3</comment_count>
      <attachid>322626</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-03 22:50:23 -0700</bug_when>
    <thetext>Comment on attachment 322626
Patch

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

Thanks for taking a look!

Marking as r-, due to the changing FileList on DataTransfer.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:169
&gt;&gt; +    m_fileList = nullptr;
&gt; 
&gt; We can&apos;t quite do this because dataTransfer.files need to return the same object each time.
&gt; In fact, we should add a test making sure dataTransfer.files don&apos;t change before/after adding or removing a file.
&gt; We need to add a new method to FileList and remove the relevant entry.

Oh, ok. Upon closer inspection, I now see this is marked as [SameObject] in the WHATWG spec (https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-files) :P

Fixed by adding support to remove a File from the FileList.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:203
&gt;&gt; +        });
&gt; 
&gt; If I were you, I&apos;d just add a new method on DataTransferItemList which returns
&gt; const Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&amp; like m_itemList-&gt;items()
&gt; and call findMatching() here instead of traversing through the entire list.
&gt; Alternatively, we could just add two methods: containsFiles() and addFiles(FileList&amp;).

Sure! I added a containsFiles() at first, but (somewhat arbitrarily) settled on this enumeration approach. But I like your approach of just returning a const Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&amp; the best!

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:94
&gt;&gt; +    return RefPtr&lt;DataTransferItem&gt; { m_items-&gt;last().copyRef() };
&gt; 
&gt; Why don&apos;t we just return m_items-&gt;last().ptr()?

Good point. Fixed!

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:13
&gt;&gt; +    &lt;div style=&quot;font-size: 40px;&quot; id=&quot;source&quot;&gt;Try to copy me.&lt;/div&gt;
&gt; 
&gt; You should add instructions on how to run this test manually when opening in a browser.

Sure. It&apos;s a bit difficult to describe, since the test adds and removes a lot of miscellaneous items and dumps a lot of output text, but I can put in a few more words here describing one should expect.

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:27
&gt;&gt; +    for (let type of event.clipboardData.types)
&gt; 
&gt; Use const.

Ok! Replaced lets with consts, where possible.

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:29
&gt;&gt; +    let itemsInfo = []
&gt; 
&gt; Use const. Missing ;.

👍🏻

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:30
&gt;&gt; +    for (let item of event.clipboardData.items) {
&gt; 
&gt; Use const.

👍🏻

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:60
&gt;&gt; +    event.clipboardData.items.remove(2);
&gt; 
&gt; You should check that calling getAsFile() on the removed item returns null.

👍🏻

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-copy.html:64
&gt;&gt; +    updateOutputText(&quot;after adding another plain text file&quot;, event);
&gt; 
&gt; You should add a test case for when files and non-file types are interleaved.

👍🏻

&gt;&gt; LayoutTests/editing/pasteboard/data-transfer-item-list-add-file-on-drag.html:13
&gt;&gt; +    &lt;div style=&quot;font-size: 40px;&quot; id=&quot;source&quot; draggable=&quot;true&quot;&gt;Try to drag me out.&lt;/div&gt;
&gt; 
&gt; Ditto to add the instructions on how to test this manually.

Yep, added!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356264</commentid>
    <comment_count>4</comment_count>
      <attachid>322635</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 00:12:34 -0700</bug_when>
    <thetext>Created attachment 322635
Second pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356279</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 00:57:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/34807346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356281</commentid>
    <comment_count>6</comment_count>
      <attachid>322635</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 01:22:50 -0700</bug_when>
    <thetext>Comment on attachment 322635
Second pass

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

&gt; Source/WebCore/dom/DataTransfer.cpp:167
&gt; +    ASSERT(m_fileList);

It&apos;s a bit subtle that m_fileList is guaranteed to exist because DataTransferItemList::ensureItems() calls DataTransfer::files().
We should probably add a comment about it.

&gt; Source/WebCore/dom/DataTransferItemList.cpp:87
&gt; -RefPtr&lt;DataTransferItem&gt; DataTransferItemList::add(Ref&lt;File&gt;&amp;&amp;)
&gt; +RefPtr&lt;DataTransferItem&gt; DataTransferItemList::add(Ref&lt;File&gt;&amp;&amp; file)

What happens when you add the same File object twice?
There is no guarantee that they&apos;re unique... HTML spec doesn&apos;t say anything about this case but we should check the behavior.
If we&apos;re allowed to have duplicate entires (that&apos;s a bit crazy), then we need to make FileList::removeFile remove the right element.
If not, this function needs to de-duplicate it.

&gt; Source/WebCore/dom/DataTransferItemList.cpp:195
&gt; +const Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&amp; DataTransferItemList::items() const
&gt; +{
&gt; +    ASSERT(m_items);
&gt; +    return *m_items;
&gt; +}

Can&apos;t we just inline this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356412</commentid>
    <comment_count>7</comment_count>
      <attachid>322635</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 07:49:25 -0700</bug_when>
    <thetext>Comment on attachment 322635
Second pass

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

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:167
&gt;&gt; +    ASSERT(m_fileList);
&gt; 
&gt; It&apos;s a bit subtle that m_fileList is guaranteed to exist because DataTransferItemList::ensureItems() calls DataTransfer::files().
&gt; We should probably add a comment about it.

👍🏻

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:87
&gt;&gt; +RefPtr&lt;DataTransferItem&gt; DataTransferItemList::add(Ref&lt;File&gt;&amp;&amp; file)
&gt; 
&gt; What happens when you add the same File object twice?
&gt; There is no guarantee that they&apos;re unique... HTML spec doesn&apos;t say anything about this case but we should check the behavior.
&gt; If we&apos;re allowed to have duplicate entires (that&apos;s a bit crazy), then we need to make FileList::removeFile remove the right element.
&gt; If not, this function needs to de-duplicate it.

Oh, good point! With the current implementation, we&apos;re able to add duplicate items, but removeFirstMatching doesn&apos;t remove the right element. The spec doesn&apos;t explicitly disallow this case, and FF/Chrome support this, so I think we should also allow adding the same File multiple times, and make sure the correct one is removed when we remove() a File-backed item. I&apos;ll post a new patch that does this.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:195
&gt;&gt; +}
&gt; 
&gt; Can&apos;t we just inline this?

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356446</commentid>
    <comment_count>8</comment_count>
      <attachid>322635</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 09:25:06 -0700</bug_when>
    <thetext>Comment on attachment 322635
Second pass

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

&gt;&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:87
&gt;&gt;&gt; +RefPtr&lt;DataTransferItem&gt; DataTransferItemList::add(Ref&lt;File&gt;&amp;&amp; file)
&gt;&gt; 
&gt;&gt; What happens when you add the same File object twice?
&gt;&gt; There is no guarantee that they&apos;re unique... HTML spec doesn&apos;t say anything about this case but we should check the behavior.
&gt;&gt; If we&apos;re allowed to have duplicate entires (that&apos;s a bit crazy), then we need to make FileList::removeFile remove the right element.
&gt;&gt; If not, this function needs to de-duplicate it.
&gt; 
&gt; Oh, good point! With the current implementation, we&apos;re able to add duplicate items, but removeFirstMatching doesn&apos;t remove the right element. The spec doesn&apos;t explicitly disallow this case, and FF/Chrome support this, so I think we should also allow adding the same File multiple times, and make sure the correct one is removed when we remove() a File-backed item. I&apos;ll post a new patch that does this.

This is a tiny bit annoying to get right (we&apos;ll need something to the effect of a map from indices in the DataTransferItemList =&gt; indices in the FileList) but certainly doable. On a related note: I was curious if Blink had a more elegant solution, but in their implementation of DataTransfer::files() (https://chromium.googlesource.com/chromium/blink/+/master/Source/core/clipboard/DataTransfer.cpp) they just regenerate a new FileList every time from their DataObject backing, so that&apos;ll actually fail the new DataTransfer tests here since, the FileList object is different before and after the test :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356518</commentid>
    <comment_count>9</comment_count>
      <attachid>322691</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 11:09:42 -0700</bug_when>
    <thetext>Created attachment 322691
Support adding and removing the same File</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356586</commentid>
    <comment_count>10</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 12:47:22 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #9)
&gt; Created attachment 322691 [details]
&gt; Support adding and removing the same File

As Ryosuke pointed out in person, this approach still exhibits a bug where bindings can hold a reference to the DataTransfer&apos;s FileList itself. And then, upon accessing the FileList&apos;s files, it&apos;ll be empty, since we didn&apos;t go through DataTransfer::files.

It seems that we should just not bother to implement an invalidation mechanism, and just update the FileList then and there if items are removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356588</commentid>
    <comment_count>11</comment_count>
      <attachid>322691</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 12:48:02 -0700</bug_when>
    <thetext>Comment on attachment 322691
Support adding and removing the same File

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

&gt; Source/WebCore/dom/DataTransfer.cpp:174
&gt; +    // We don&apos;t destroy and recreate the entire FileList here because the FileList object needs to stay the same, per the DataTransfer spec.
&gt; +    // Instead, flag the file list for an update, so the next time it is queried, we recompute the state, respecting any updated data transfer items.
&gt; +    m_fileList-&gt;clear();
&gt; +    m_fileListNeedsUpdate = true;

This won&apos;t quite work because JS can hold onto a reference to FileList object.
So if the script calls dataTransfer.files first, removes a file via dataTransfer.items.remove,
and then accesses the FileList without calling dataTransfer.files,
then they&apos;re gonna see an empty file list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356626</commentid>
    <comment_count>12</comment_count>
      <attachid>322712</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 13:30:50 -0700</bug_when>
    <thetext>Created attachment 322712
Support adding and removing the same File (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356630</commentid>
    <comment_count>13</comment_count>
      <attachid>322712</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 13:45:05 -0700</bug_when>
    <thetext>Comment on attachment 322712
Support adding and removing the same File (2)

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

&gt; Source/WebCore/dom/DataTransfer.cpp:171
&gt; +    m_fileList-&gt;m_files = updatedFilesForFileList();

It&apos;s a bit crazy that DataTransfer is a friend of FileList but okay.

&gt; Source/WebCore/dom/DataTransfer.cpp:174
&gt; +void DataTransfer::itemListDidAddFile()

I would call this didAddToItemList instead to match the naming convention elsewhere.

&gt; Source/WebCore/dom/DataTransfer.cpp:218
&gt; +Vector&lt;Ref&lt;File&gt;&gt; DataTransfer::updatedFilesForFileList() const

I don&apos;t think it makes sense to call this *updated* in that we&apos;re constructing a new vector of File objects.
Maybe filesFromPasteboardAndItemList?

&gt; Source/WebCore/dom/DataTransfer.cpp:230
&gt; +        files = WTFMove(reader.files);
&gt; +    }
&gt; +
&gt; +    if (m_itemList &amp;&amp; m_itemList-&gt;hasItems()) {
&gt; +        for (auto&amp; item : m_itemList-&gt;items()) {
&gt; +            if (auto file = item-&gt;file())
&gt; +                files.append(*file);

Hm... how does this work when pasteboard &amp; items both have items?
I guess that can&apos;t currently happen because we only call this method when deleting an item
but that&apos;s not allowed when we&apos;re reading off a real pasteboard.
I think we need an assertion here that either we&apos;ve read from pasteboard or item list is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356674</commentid>
    <comment_count>14</comment_count>
      <attachid>322712</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 14:48:44 -0700</bug_when>
    <thetext>Comment on attachment 322712
Support adding and removing the same File (2)

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

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:171
&gt;&gt; +    m_fileList-&gt;m_files = updatedFilesForFileList();
&gt; 
&gt; It&apos;s a bit crazy that DataTransfer is a friend of FileList but okay.

Agreed :/ we could pull some of this out into public methods, but then I&apos;m not sure that would be an improvement, since we really want just the owners of the FileList to be able to clear/remove files. Let&apos;s revisit this.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:174
&gt;&gt; +void DataTransfer::itemListDidAddFile()
&gt; 
&gt; I would call this didAddToItemList instead to match the naming convention elsewhere.

Ok. I would strongly prefer &quot;didAddFileToItemList&quot; though, since this is only invoked in the add(File) codepath, so we should make that clear.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:218
&gt;&gt; +Vector&lt;Ref&lt;File&gt;&gt; DataTransfer::updatedFilesForFileList() const
&gt; 
&gt; I don&apos;t think it makes sense to call this *updated* in that we&apos;re constructing a new vector of File objects.
&gt; Maybe filesFromPasteboardAndItemList?

Sure! That makes sense.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:230
&gt;&gt; +                files.append(*file);
&gt; 
&gt; Hm... how does this work when pasteboard &amp; items both have items?
&gt; I guess that can&apos;t currently happen because we only call this method when deleting an item
&gt; but that&apos;s not allowed when we&apos;re reading off a real pasteboard.
&gt; I think we need an assertion here that either we&apos;ve read from pasteboard or item list is empty.

Correct. In our current codepaths where we have read/write access, we aren&apos;t &quot;connected&quot; yet to the platform pasteboard yet. Added an assertion here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356675</commentid>
    <comment_count>15</comment_count>
      <attachid>322729</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 14:49:02 -0700</bug_when>
    <thetext>Created attachment 322729
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356689</commentid>
    <comment_count>16</comment_count>
      <attachid>322729</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-04 15:28:12 -0700</bug_when>
    <thetext>Comment on attachment 322729
Patch for landing

Clearing flags on attachment: 322729

Committed r222885: &lt;http://trac.webkit.org/changeset/222885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356815</commentid>
    <comment_count>17</comment_count>
      <attachid>322729</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 20:36:03 -0700</bug_when>
    <thetext>Comment on attachment 322729
Patch for landing

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

I know this patch was already reviewed and landed. I noticed some issues and had some questions.

&gt; Source/WebCore/dom/DataTransfer.cpp:167
&gt; +    // If we&apos;re removing an item, then the item list must exist, which implies that the file list must have been initialized already.

The information in this comment is obvious, including the derivation in comment, and can be easily derived by reading the code as well as diagnosed from a crash report. Either we should improve this comment to say something non-obvious or we should remove this comment.

&gt; Source/WebCore/dom/DataTransfer.cpp:168
&gt; +    ASSERT(m_fileList);

Is this much benefit to having this assert? I mean, it seems like it would be straightforward to diagnose is this invariant was violated from a crash report showing a null dereference inside this function.

&gt; Source/WebCore/dom/DataTransfer.cpp:206
&gt; +        return { &quot;Files&quot; };

I know that you are following the style of the code in this function. We should be using ASCIILiteral().

&gt; Source/WebCore/dom/DataTransfer.cpp:232
&gt; +            if (auto file = item-&gt;file()) {

No braces for an if-statement whose body is a single line per the WebKit Code Style guidelines. I&apos;m surprised the style checker did not notice this.

&gt; Source/WebCore/dom/DataTransfer.cpp:233
&gt; +                files.append(*file);

Is this the preferred way to make a copy of a Ref?

&gt; Source/WebCore/dom/DataTransferItem.h:57
&gt; +    RefPtr&lt;File&gt; file() const { return m_file; }

Although this function does not actually modify m_file (and hence is const with respect to mutation of its own intense variables) the caller can mutate m_file since we effectively return a non-const pointer to it. We tend to have member functions be in one of two groups: either be const and return const data or be non-cont and return non-const data. Can we pick one of these forms?

&gt; Source/WebCore/dom/DataTransferItemList.cpp:94
&gt; +    return RefPtr&lt;DataTransferItem&gt; { m_items-&gt;last().ptr() };

Is it necessary to explicitly call the RefPtr&lt;DataTransferItem&gt; constructor?

&gt; Source/WebCore/dom/DataTransferItemList.cpp:106
&gt; +    // Since file-backed DataTransferItems are not actually written to the pasteboard yet, we don&apos;t need to remove any

Should this be a FIXME? The last sentence states that we need to take action to update this code once we support file-backed DataTransferItems.

&gt; Source/WebCore/dom/DataTransferItemList.cpp:114
&gt; +    if (removedItem.isFile())

This does not look correct. Notice that removedItem is a temporary. Suppose items[index] has one ref. Then when we remove it from |items| on line 113 it will be derefed =&gt; deallocated. removedItem is now a null reference.

&gt; Source/WebCore/dom/DataTransferItemList.h:68
&gt; +    bool hasItems() const { return m_items.has_value(); }

I know that the data type for m_items was chosen outside of this patch. I take it that it is necessary to differentiate between an empty list and no list? If so, is there a significant performance benefit (or some other benefit) to declaring m_items to be of type std::optional&lt;Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&gt; compared to type Vector&lt;Ref&lt;DataTransferItem&gt;&gt;*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356819</commentid>
    <comment_count>18</comment_count>
      <attachid>322729</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 20:53:00 -0700</bug_when>
    <thetext>Comment on attachment 322729
Patch for landing

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

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:114
&gt;&gt; +    if (removedItem.isFile())
&gt; 
&gt; This does not look correct. Notice that removedItem is a temporary. Suppose items[index] has one ref. Then when we remove it from |items| on line 113 it will be derefed =&gt; deallocated. removedItem is now a null reference.

Oops, yeah, this is indeed an issue. I don&apos;t understand why line 109 needs to call get.
We can just create a Ref there. In fact, we probably shouldn&apos;t use auto in that line to make this semantics clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356827</commentid>
    <comment_count>19</comment_count>
      <attachid>322729</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 21:20:33 -0700</bug_when>
    <thetext>Comment on attachment 322729
Patch for landing

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

Thanks for taking a look, Dan! I&apos;ll post a followup patch momentarily.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:167
&gt;&gt; +    // If we&apos;re removing an item, then the item list must exist, which implies that the file list must have been initialized already.
&gt; 
&gt; The information in this comment is obvious, including the derivation in comment, and can be easily derived by reading the code as well as diagnosed from a crash report. Either we should improve this comment to say something non-obvious or we should remove this comment.

I added this comment in response to one of Ryosuke&apos;s earlier comments, wherein he felt that it was subtle that m_fileList should be nonnull here, and that it deserved a comment describing why this is the case...

Given your below comment though, I&apos;m inclined to just remove this assert altogether.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:168
&gt;&gt; +    ASSERT(m_fileList);
&gt; 
&gt; Is this much benefit to having this assert? I mean, it seems like it would be straightforward to diagnose is this invariant was violated from a crash report showing a null dereference inside this function.

Yeah, I think that&apos;s a fair assessment. Removed this assertion.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:206
&gt;&gt; +        return { &quot;Files&quot; };
&gt; 
&gt; I know that you are following the style of the code in this function. We should be using ASCIILiteral().

Sure. I updated the return below as well.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:232
&gt;&gt; +            if (auto file = item-&gt;file()) {
&gt; 
&gt; No braces for an if-statement whose body is a single line per the WebKit Code Style guidelines. I&apos;m surprised the style checker did not notice this.

Whoa, good catch -- I&apos;m also surprised that the style checker didn&apos;t flag this! Fixed.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:233
&gt;&gt; +                files.append(*file);
&gt; 
&gt; Is this the preferred way to make a copy of a Ref?

file here is a RefPtr, so this code is constructing a Ref&lt;File&gt; out of the File&amp; that results from using the dereference operator on file. I thought this was an OK way to construct a new Ref&lt;File&gt;, but I&apos;m certainly open to suggestions!

&gt;&gt; Source/WebCore/dom/DataTransferItem.h:57
&gt;&gt; +    RefPtr&lt;File&gt; file() const { return m_file; }
&gt; 
&gt; Although this function does not actually modify m_file (and hence is const with respect to mutation of its own intense variables) the caller can mutate m_file since we effectively return a non-const pointer to it. We tend to have member functions be in one of two groups: either be const and return const data or be non-cont and return non-const data. Can we pick one of these forms?

Sure -- changed the function to be non-const. In the two places where we use this, we use it to populate FileList with Files. These Files are non-const, so I can&apos;t make this a RefPtr&lt;const File&gt;.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:94
&gt;&gt; +    return RefPtr&lt;DataTransferItem&gt; { m_items-&gt;last().ptr() };
&gt; 
&gt; Is it necessary to explicitly call the RefPtr&lt;DataTransferItem&gt; constructor?

No it&apos;s not -- removed.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:106
&gt;&gt; +    // Since file-backed DataTransferItems are not actually written to the pasteboard yet, we don&apos;t need to remove any
&gt; 
&gt; Should this be a FIXME? The last sentence states that we need to take action to update this code once we support file-backed DataTransferItems.

Sure, this could use a FIXME. Added.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:114
&gt;&gt; +    if (removedItem.isFile())
&gt; 
&gt; This does not look correct. Notice that removedItem is a temporary. Suppose items[index] has one ref. Then when we remove it from |items| on line 113 it will be derefed =&gt; deallocated. removedItem is now a null reference.

Good catch. Fixed by not accessing removedItem after calling items.remove().

&gt;&gt; Source/WebCore/dom/DataTransferItemList.h:68
&gt;&gt; +    bool hasItems() const { return m_items.has_value(); }
&gt; 
&gt; I know that the data type for m_items was chosen outside of this patch. I take it that it is necessary to differentiate between an empty list and no list? If so, is there a significant performance benefit (or some other benefit) to declaring m_items to be of type std::optional&lt;Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&gt; compared to type Vector&lt;Ref&lt;DataTransferItem&gt;&gt;*?

It is important to distinguish between an empty list (i.e. some state was requested that requires the item list to exist; there&apos;s just no items on it) vs. null list (we haven&apos;t lazily generated the item list yet, since no state was requested that requires it to have been created). I suppose there are alternatives, like a bool flag indicating whether or not the item list has been computed, but using std::optional seems to be a reasonable approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356828</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 21:20:53 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #17)
&gt; &gt; Source/WebCore/dom/DataTransferItemList.h:68
&gt; &gt; +    bool hasItems() const { return m_items.has_value(); }
&gt; 
&gt; I know that the data type for m_items was chosen outside of this patch. I
&gt; take it that it is necessary to differentiate between an empty list and no
&gt; list? If so, is there a significant performance benefit (or some other
&gt; benefit) to declaring m_items to be of type
&gt; std::optional&lt;Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&gt; compared to type
&gt; Vector&lt;Ref&lt;DataTransferItem&gt;&gt;*?

Err, std::unique_ptr&lt;Vector&lt;Ref&lt;DataTransferItem&gt;&gt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356835</commentid>
    <comment_count>21</comment_count>
      <attachid>322778</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 21:51:15 -0700</bug_when>
    <thetext>Created attachment 322778
Post-review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356852</commentid>
    <comment_count>22</comment_count>
      <attachid>322778</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 22:45:45 -0700</bug_when>
    <thetext>Comment on attachment 322778
Post-review feedback

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

&gt; Source/WebCore/dom/DataTransferItemList.cpp:108
&gt; +    // FIXME: Since file-backed DataTransferItems are not actually written to the pasteboard yet, we don&apos;t need to
&gt; +    // remove any temporary files. When we support writing file-backed DataTransferItems to the platform pasteboard,
&gt; +    // we will need to clean up here.

Instead of three sentence line FIXME, why don&apos;t we just say:
FIXME: Remove the file from the pasteboard object once we added the support for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356856</commentid>
    <comment_count>23</comment_count>
      <attachid>322778</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 22:54:49 -0700</bug_when>
    <thetext>Comment on attachment 322778
Post-review feedback

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

&gt; Source/WebCore/dom/DataTransferItemList.cpp:109
&gt; +    Ref&lt;DataTransferItem&gt; removedItem = items[index].copyRef();

Is the copyRef() needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356860</commentid>
    <comment_count>24</comment_count>
      <attachid>322778</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 23:00:35 -0700</bug_when>
    <thetext>Comment on attachment 322778
Post-review feedback

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

&gt; Source/WebCore/dom/DataTransfer.cpp:231
&gt;                  files.append(*file);

I suggest that we RefPtr::releaseNonNull() here to avoid a ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356861</commentid>
    <comment_count>25</comment_count>
      <attachid>322778</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 23:05:20 -0700</bug_when>
    <thetext>Comment on attachment 322778
Post-review feedback

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

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:231
&gt;&gt;                  files.append(*file);
&gt; 
&gt; I suggest that we RefPtr::releaseNonNull() here to avoid a ref.

Sure! Done.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:108
&gt;&gt; +    // we will need to clean up here.
&gt; 
&gt; Instead of three sentence line FIXME, why don&apos;t we just say:
&gt; FIXME: Remove the file from the pasteboard object once we added the support for it.

👍🏻 done.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:109
&gt;&gt; +    Ref&lt;DataTransferItem&gt; removedItem = items[index].copyRef();
&gt; 
&gt; Is the copyRef() needed?

Well, items[index].get() would also work, since that would implicitly construct a new Ref&lt;DataTransferItem&gt; using a DataTransferItem&amp;. I can&apos;t simply set Ref&lt;DataTransferItem&gt; removedItem = items[index] though, since that would call the deleted constructor on Ref (if this is what you meant?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356879</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 23:56:02 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #25)
&gt; &gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:109
&gt; &gt;&gt; +    Ref&lt;DataTransferItem&gt; removedItem = items[index].copyRef();
&gt; &gt; 
&gt; &gt; Is the copyRef() needed?
&gt; 
&gt; Well, items[index].get() would also work, since that would implicitly
&gt; construct a new Ref&lt;DataTransferItem&gt; using a DataTransferItem&amp;. I can&apos;t
&gt; simply set Ref&lt;DataTransferItem&gt; removedItem = items[index] though, since
&gt; that would call the deleted constructor on Ref (if this is what you meant?)

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356885</commentid>
    <comment_count>27</comment_count>
      <attachid>322797</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-05 00:11:53 -0700</bug_when>
    <thetext>Created attachment 322797
Hold for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356908</commentid>
    <comment_count>28</comment_count>
      <attachid>322797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-05 01:06:19 -0700</bug_when>
    <thetext>Comment on attachment 322797
Hold for EWS.

Clearing flags on attachment: 322797

Committed r222904: &lt;http://trac.webkit.org/changeset/222904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357110</commentid>
    <comment_count>29</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-10-05 11:20:22 -0700</bug_when>
    <thetext>This looks to have cause a test that was marked as failing on iOS consistently to start timing out consistently on iOS. 

Test: editing/pasteboard/data-transfer-items.html 

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=editing%2Fpasteboard%2Fdata-transfer-items.html

https://build.webkit.org/results/Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/r222911%20(343)/results.html
https://build.webkit.org/builders/Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/builds/343


diff:

--- /Volumes/Data/slave/ios-simulator-11-release-tests-wk2/build/layout-test-results/editing/pasteboard/data-transfer-items-expected.txt
+++ /Volumes/Data/slave/ios-simulator-11-release-tests-wk2/build/layout-test-results/editing/pasteboard/data-transfer-items-actual.txt
@@ -1,25 +1,6 @@
-This file tests the basic functionality and properties of DataTransferItems. This test requires DRT.
-Populating DataTransferItems...
-Caught exception &quot;NotSupportedError (DOM Exception 9): The operation is not supported.&quot; as expected.
-Verifying contents of DataTransferItems...
-items.length: 2
-items[0].kind: string
-items[0].type: text/plain
-items[1].kind: string
-items[1].type: text/html
-Checking if items past the end of the collection can be indexed:
-items[2] is undefined: undefined
-Checking that a read-only DataTransferItems cannot be mutated...
-items.length: 2
-items[0].kind: string
-items[0].type: text/plain
-items[1].kind: string
-items[1].type: text/html
-items[2] is undefined: undefined
-Testing if DataTransferItems can be accessed outside an event handler...
-DataTransferItem accessed outside event handler!
-copy: items[0] value: Hello World!
-copy: items[1] value: &lt;b&gt;Hello World!
-paste: items[0] value: This file tests the basic functionality and properties of DataTransferItems. This test requires DRT.
-paste: items[1] value: &lt;span style=&quot;color: rgb(0, 0, 0); font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;&quot;&gt;This file tests the basic functionality and properties of DataTransferItems. This test requires DRT.&lt;/span&gt;
+CONSOLE MESSAGE: line 79: TypeError: undefined is not an object (evaluating &apos;items[0].kind&apos;)
+#PID UNRESPONSIVE - com.apple.WebKit.WebContent.Development (pid 7381)
+FAIL: Timed out waiting for notifyDone to be called
 
+#EOF
+#EOF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357236</commentid>
    <comment_count>30</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-10-05 13:58:31 -0700</bug_when>
    <thetext>Talked with Wenson and we did some testing. Looks like the test has started to timeout even when rolling out the change and testing with much older revisions despite what the dashboard says.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322626</attachid>
            <date>2017-10-03 20:43:31 -0700</date>
            <delta_ts>2017-10-04 00:12:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177853-20171003204330.patch</filename>
            <type>text/plain</type>
            <size>28926</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlMGIxZDYzMmQ2MTE5
M2I3OGUwOTNhY2Q4YjQ1MTMwYWY5NDRhNi4uMmEwYzNjNDc0MjY4YzQzOTkzNzQwNDFjYmQ3NDll
MzgwMDI5NGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEwLTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBz
dXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQgdGhhdCB0
YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Nzg1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgdmVyeSBiYXNpYyBzdXBwb3J0IGZvciBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQo
RmlsZSkuIFNvIGZhciwgYSBGaWxlIGFkZGVkIGluIHRoaXMgd2F5IGNhbiBvbmx5IGJlIHJlYWQK
KyAgICAgICAgYmFjayBmcm9tIHRoZSBzYW1lIERhdGFUcmFuc2ZlciwgZHVyaW5nIGRyYWdzdGFy
dCBvciBjb3B5LiBUaGlzIEZpbGUgaXNuJ3Qgd3JpdHRlbiB0byB0aGUgcGxhdGZvcm0gcGFzdGVi
b2FyZAorICAgICAgICB5ZXQsIHNvIGV2ZW4gZHJvcHBpbmcgb3IgcGFzdGluZyBpbiB0aGUgc2Ft
ZSBwYWdlIHdpbGwgbm90IHRyYW5zZmVyIHRoZSBGaWxlLCBidXQgdGhpcyBicmluZ3MgdXMgY2xv
c2VyIHRvCisgICAgICAgIHBhcml0eSB3aXRoIG90aGVyIGJyb3dzZXJzLiBTZWUgcGVyLW1ldGhv
ZCBjb21tZW50cyBmb3IgZGV0YWlscy4KKworICAgICAgICBUZXN0czogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbAorICAgICAg
ICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1m
aWxlLW9uLWRyYWcuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6Oml0ZW1MaXN0RGlkUmVtb3ZlRmlsZSk6CisKKyAg
ICAgICAgV2hlbiBhIEZpbGUgaXMgcmVtb3ZlZCB2aWEgdGhlIGl0ZW0gbGlzdCwgaW52YWxpZGF0
ZSB0aGUgRGF0YVRyYW5zZmVyJ3MgRmlsZUxpc3QuIFRoaXMgRmlsZUxpc3Qgd2lsbCBiZQorICAg
ICAgICByZWdlbmVyYXRlZCBieSB0aGUgRGF0YVRyYW5zZmVyIHRoZSBuZXh0IHRpbWUgaXQgaXMg
bmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6Oml0ZW1MaXN0RGlkQWRk
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnR5cGVzIGNvbnN0KToKKwor
ICAgICAgICBSZXR1cm4gb25seSB0aGUgIkZpbGVzIiB0eXBlIGlmIHRoZXJlIGFyZSBmaWxlLWJh
Y2tlZCBpdGVtcyBpbiB0aGUgRGF0YVRyYW5zZmVyJ3MgaXRlbSBsaXN0LgorCisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmZpbGVzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRGF0YVRy
YW5zZmVyLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmZpbGUgY29uc3QpOgorICAgICAgICAqIGRvbS9EYXRh
VHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
TGlzdDo6YWRkKToKKworICAgICAgICBXaGVuIGFkZGluZyBhIEZpbGUsIGNhbGwgb3V0IHRvIHRo
ZSBEYXRhVHJhbnNmZXIgdG8gYWRkaXRpb25hbGx5IGFwcGVuZCB0aGUgRmlsZSB0byB0aGUgRGF0
YVRyYW5zZmVyJ3MgRmlsZUxpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0
ZW1MaXN0OjpyZW1vdmUpOgorCisgICAgICAgIFdoZW4gcmVtb3ZpbmcgYSBGaWxlLCBvbmx5IGNs
ZWFyIGZyb20gdGhlIERhdGFUcmFuc2ZlcidzIHBhc3RlYm9hcmQgaWYgdGhlIHJlbW92ZWQgaXRl
bSBpcyBub3QgYSBGaWxlIChvdGhlcndpc2UsCisgICAgICAgIGNsZWFyaW5nIGEgRmlsZSB0aGF0
IHNoYXJlcyB0aGUgc2FtZSB0eXBlIGFzIHNvbWUgb3RoZXIgaXRlbSBpbiB0aGUgcGFzdGVib2Fy
ZCB3aWxsIGVycm9uZW91c2x5IGNsZWFyIHRoYXQgb3RoZXIKKyAgICAgICAgaXRlbSBhcyB3ZWxs
KS4gQWRkaXRpb25hbGx5LCBjYWxsIG91dCB0byB0aGUgRGF0YVRyYW5zZmVyIHRvIGludmFsaWRh
dGUgdGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHdoZW4KKyAgICAgICAgcmVtb3ZpbmcgYSBG
aWxlLgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW51bWVyYXRl
SXRlbXMgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiBvbiBEYXRhVHJh
bnNmZXJJdGVtTGlzdCB0byBlbnVtZXJhdGUgb3ZlciBhbGwgb2YgaXRzIERhdGFUcmFuc2Zlckl0
ZW1zLgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0Lmg6CisKIDIwMTctMTAt
MDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTihyMjIyNTk1KTogSW50ZXJtaXR0ZW50IGNyYXNoIHdoaWxlIGFjY2Vzc2luZyBEYXRh
VHJhbnNmZXJJdGVtTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBhZGRl
ZjBmOTE3M2M0NTZhODFlYWU3NDkwNTEyNGYwYzJmNDkzZmUyLi4xNWZkMGM4ZWY2NGQ4MTFhNWNm
YWE1NGE1NzNiYjNmYTViMDhlMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJD
YWNoZWRJbWFnZUNsaWVudC5oIgorI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNs
dWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5j
bHVkZSAiRWRpdG9yLmgiCkBAIC0xNjEsNiArMTYyLDIwIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBt
X2l0ZW1MaXN0LT5kaWRTZXRTdHJpbmdEYXRhKG5vcm1hbGl6ZWRUeXBlKTsKIH0KIAordm9pZCBE
YXRhVHJhbnNmZXI6Oml0ZW1MaXN0RGlkUmVtb3ZlRmlsZSgpCit7CisgICAgQVNTRVJUKG1fZmls
ZUxpc3QpOworICAgIC8vIEludmFsaWRhdGUgdGhlIHByZXNlbnQgRmlsZUxpc3QuIEFuIHVwLXRv
LWRhdGUgRmlsZUxpc3Qgd2lsbCBiZSByZWdlbmVyYXRlZCBpZiBuZWNlc3NhcnkuCisgICAgbV9m
aWxlTGlzdCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVyOjppdGVtTGlzdERpZEFk
ZEZpbGUoUmVmPEZpbGU+JiYgZmlsZSkKK3sKKyAgICBBU1NFUlQoY2FuV3JpdGVEYXRhKCkpOwor
ICAgIGlmIChtX2ZpbGVMaXN0KQorICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoV1RGTW92ZShm
aWxlKSk7Cit9CisKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkK
IHsKICAgICBpZiAoIW1faXRlbUxpc3QpCkBAIC0xODEsNiArMTk2LDE1IEBAIFZlY3RvcjxTdHJp
bmc+IERhdGFUcmFuc2Zlcjo6dHlwZXMoKSBjb25zdAogICAgICAgICByZXR1cm4gdHlwZXM7CiAg
ICAgfQogCisgICAgaWYgKG1faXRlbUxpc3QpIHsKKyAgICAgICAgYm9vbCBjb250YWluc0ZpbGUg
PSBmYWxzZTsKKyAgICAgICAgbV9pdGVtTGlzdC0+ZW51bWVyYXRlSXRlbXMoWyZjb250YWluc0Zp
bGVdIChjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgICAgICBjb250YWluc0ZpbGUgfD0gaXRl
bS5pc0ZpbGUoKTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChjb250YWluc0ZpbGUpCisgICAg
ICAgICAgICByZXR1cm4geyAiRmlsZXMiIH07CisgICAgfQorCiAgICAgaWYgKG1fcGFzdGVib2Fy
ZC0+Y29udGFpbnNGaWxlcygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wYXN0ZWJvYXJkLT50eXBl
c1NhZmVGb3JCaW5kaW5ncygpLmNvbnRhaW5zKCJGaWxlcyIpKTsKICAgICAgICAgcmV0dXJuIHsg
IkZpbGVzIiB9OwpAQCAtMjAxLDE4ICsyMjUsMjAgQEAgRmlsZUxpc3QmIERhdGFUcmFuc2Zlcjo6
ZmlsZXMoKSBjb25zdAogICAgICAgICByZXR1cm4gKm1fZmlsZUxpc3Q7CiAgICAgfQogCi0gICAg
aWYgKGZvckRyYWcoKSAmJiAhZm9yRmlsZURyYWcoKSkgewotICAgICAgICBpZiAobV9maWxlTGlz
dCkKLSAgICAgICAgICAgIEFTU0VSVChtX2ZpbGVMaXN0LT5pc0VtcHR5KCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX2ZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwotICAgICAg
ICByZXR1cm4gKm1fZmlsZUxpc3Q7Ci0gICAgfQotCiAgICAgaWYgKCFtX2ZpbGVMaXN0KSB7Ci0g
ICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXI7Ci0gICAgICAgIG1fcGFz
dGVib2FyZC0+cmVhZChyZWFkZXIpOwotICAgICAgICBtX2ZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNy
ZWF0ZShXVEZNb3ZlKHJlYWRlci5maWxlcykpOworICAgICAgICBWZWN0b3I8UmVmPEZpbGU+PiBm
aWxlczsKKyAgICAgICAgaWYgKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgeworICAgICAg
ICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlcjsKKyAgICAgICAgICAgIG1f
cGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworICAgICAgICAgICAgZmlsZXMgPSBXVEZNb3ZlKHJl
YWRlci5maWxlcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1faXRlbUxpc3QpIHsKKyAgICAg
ICAgICAgIG1faXRlbUxpc3QtPmVudW1lcmF0ZUl0ZW1zKFsmZmlsZXNdIChjb25zdCBhdXRvJiBp
dGVtKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gZmlsZSA9IGl0ZW0uZmlsZSgpKQorICAg
ICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoKmZpbGUpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShm
aWxlcykpOwogICAgIH0KICAgICByZXR1cm4gKm1fZmlsZUxpc3Q7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmgKaW5kZXggMDlkNGRmZjMyYjExZmI4ZmVmMmUwN2JjOGUxNWIzYzQwNWUyZjE2
Zi4uODAxMzQyNjkwYWUyN2I1ZmExN2U0YzczZWE2OTBiYjRlM2MyYmQ1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEcmFnRGF0YTsKIGNsYXNz
IERyYWdJbWFnZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxlTGlzdDsKK2NsYXNz
IEZpbGU7CiBjbGFzcyBQYXN0ZWJvYXJkOwogCiBjbGFzcyBEYXRhVHJhbnNmZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxEYXRhVHJhbnNmZXI+IHsKQEAgLTk5LDYgKzEwMCw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0RyYWdJbWFnZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIGl0ZW1MaXN0
RGlkQWRkRmlsZShSZWY8RmlsZT4mJik7CisgICAgdm9pZCBpdGVtTGlzdERpZFJlbW92ZUZpbGUo
KTsKKwogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFzdGUsIERyYWdB
bmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwogICAgIERhdGFUcmFu
c2ZlcihTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IFR5cGU6
OkNvcHlBbmRQYXN0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAppbmRleCA5
YWMxMWU3Y2IzMzVmNzMxMDAzZmExNjVhMTg2MjRmZTdmYWVlMjU2Li45Njg1NTI5MTg3ZTY2ZDQz
OWJiZjUwMmE3MDc2ZDA2YjQ4OGM5NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVySXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogCiAgICAgfkRhdGFUcmFuc2Zlckl0ZW0o
KTsKIAorICAgIFJlZlB0cjxGaWxlPiBmaWxlKCkgY29uc3QgeyByZXR1cm4gbV9maWxlOyB9CiAg
ICAgdm9pZCBjbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAKICAgICBib29sIGlz
RmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtTGlzdC5jcHAKaW5kZXggNTk3MDRiNGI1NjBjOGQ2M2Q4ZDFiZTdhZjg2YTUy
ODJlZDJhYjI4My4uZWYwOGM1NWNlY2MzYWZjNDliYTQ2ZDE0MGZhNTgxZWYxMmFmNzgwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC04NCw5ICs4
NCwxNCBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4+IERhdGFUcmFuc2Zl
ckl0ZW1MaXN0OjphZGQoY29uc3QgU3RyaW5nJiBkYQogICAgIHJldHVybiBSZWZQdHI8RGF0YVRy
YW5zZmVySXRlbT4geyBtX2l0ZW1zLT5sYXN0KCkuY29weVJlZigpIH07CiB9CiAKLVJlZlB0cjxE
YXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6YWRkKFJlZjxGaWxlPiYmKQor
UmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQoUmVmPEZp
bGU+JiYgZmlsZSkKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1fZGF0YVRyYW5z
ZmVyLmNhbldyaXRlRGF0YSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGVuc3Vy
ZUl0ZW1zKCkuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtX3dlYWtQdHJGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBmaWxlLT50eXBlKCksIGZpbGUuY29weVJlZigpKSk7Cisg
ICAgbV9kYXRhVHJhbnNmZXIuaXRlbUxpc3REaWRBZGRGaWxlKFdURk1vdmUoZmlsZSkpOworICAg
IHJldHVybiBSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4geyBtX2l0ZW1zLT5sYXN0KCkuY29weVJl
ZigpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1v
dmUodW5zaWduZWQgaW5kZXgpCkBAIC05OCwxMyArMTAzLDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1vdmUodW5zaWduZWQgaW5kZXgpCiAgICAgaWYgKGl0
ZW1zLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6
ZUVycm9yIH07IC8vIE1hdGNoZXMgR2Vja28uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L2h0bWwvaXNzdWVzLzI5MjUKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhlIHJlbW92YWwgb2Yg
ZmlsZXMgb25jZSB3ZSBhZGRlZCB0aGUgc3VwcG9ydCBmb3Igd3JpdGluZyBhIEZpbGUuCi0gICAg
QVNTRVJUKCFpdGVtc1tpbmRleF0tPmlzRmlsZSgpKTsKLQorICAgIC8vIFNpbmNlIGZpbGUtYmFj
a2VkIERhdGFUcmFuc2Zlckl0ZW1zIGFyZSBub3QgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgcGFz
dGVib2FyZCB5ZXQsIHdlIGRvbid0IG5lZWQgdG8gcmVtb3ZlIGFueQorICAgIC8vIHRlbXBvcmFy
eSBmaWxlcy4gV2hlbiB3ZSBzdXBwb3J0IHdyaXRpbmcgZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVy
SXRlbXMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIHdlIHdpbGwgbmVlZAorICAgIC8vIHRv
IGNsZWFuIHVwIGhlcmUuCiAgICAgYXV0byYgcmVtb3ZlZEl0ZW0gPSBpdGVtc1tpbmRleF0uZ2V0
KCk7Ci0gICAgbV9kYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmNsZWFyKHJlbW92ZWRJdGVtLnR5
cGUoKSk7CisgICAgaWYgKCFyZW1vdmVkSXRlbS5pc0ZpbGUoKSkKKyAgICAgICAgbV9kYXRhVHJh
bnNmZXIucGFzdGVib2FyZCgpLmNsZWFyKHJlbW92ZWRJdGVtLnR5cGUoKSk7CiAgICAgcmVtb3Zl
ZEl0ZW0uY2xlYXJMaXN0QW5kUHV0SW50b0Rpc2FibGVkTW9kZSgpOwogICAgIGl0ZW1zLnJlbW92
ZShpbmRleCk7CisgICAgaWYgKHJlbW92ZWRJdGVtLmlzRmlsZSgpKQorICAgICAgICBtX2RhdGFU
cmFuc2Zlci5pdGVtTGlzdERpZFJlbW92ZUZpbGUoKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC0xODAsNSArMTg4LDE0IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmRpZFNldFN0cmlu
Z0RhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIG1faXRlbXMtPmFwcGVuZChEYXRhVHJhbnNm
ZXJJdGVtOjpjcmVhdGUobV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgbG93
ZXJjYXNlZFR5cGUpKTsKIH0KIAordm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW51bWVyYXRl
SXRlbXMoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IERhdGFUcmFuc2Zlckl0ZW0mKT4gZnVuY3Rp
b24pIGNvbnN0Cit7CisgICAgaWYgKCFtX2l0ZW1zKQorICAgICAgICByZXR1cm47CisKKyAgICBm
b3IgKGF1dG8mIGl0ZW0gOiAqbV9pdGVtcykKKyAgICAgICAgZnVuY3Rpb24oaXRlbS5nZXQoKSk7
Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAppbmRl
eCBmY2U2OTQ3NDFjMmQ2NDUxZDY4ZjE1ZDkzMjlkNThmNWIwN2E4OWYwLi5lM2ZkOTk2YjY5ZjAz
YzQzZWRkMWNhMmI4OTUzNmFjMDUxZGNkYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbUxpc3QuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
ZENsZWFyU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIHZvaWQgZGlkU2V0U3Ry
aW5nRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHZvaWQgZW51bWVyYXRlSXRlbXMoc3Rk
OjpmdW5jdGlvbjx2b2lkKGNvbnN0IERhdGFUcmFuc2Zlckl0ZW0mKT4pIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBlbnN1cmVJdGVtcygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGE5ZjZiZTBhM2I5ZTYwNWQ5MThjOTJkZDIxMWRjN2Q5OTM4MTIzNDMuLjQy
YTY0ZDViZjkyYzhkZDY1ODdiOWFlNmEyOGI1NTgxOTRmMGI1NTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxNy0xMC0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIHZlcnNpb24gb2YgRGF0YVRyYW5z
ZmVySXRlbUxpc3QuYWRkIHRoYXQgdGFrZXMgYSBGaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc4NTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgRmlsZXMg
Y2FuIGJlIGFkZGVkIHRvIGFuZCByZW1vdmVkIGZyb20gdGhlIERhdGFUcmFuc2Zlckl0ZW1MaXN0
LCBhbmQgYWxzbyByZWFkIGJhY2sgdmlhCisgICAgICAgIGJvdGggdGhlIGl0ZW0gbGlzdCBhbmQg
dGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHdoZW4gY29weWluZyBhbmQgZHJhZ2dpbmcuCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0xMC0wMiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJ
bnRlcm1pdHRlbnQgY3Jhc2ggd2hpbGUgYWNjZXNzaW5nIERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBmNmRmZjQzMTY4M2NhMGU4MmUwYjgyYmY2NzlkYzhhN2E2NzZi
MWU4Li45ZDg5ZDczOThlMTA2NjMxMGIwOTFhNGE0NGJkNTA3ZTNlYTQ1MTY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTcxLDYgKzcxLDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNm
ZXItZ2V0LWRhdGEtb24tZHJvcC1wbGFpbi10ZXh0Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcmljaC10ZXh0Lmh0bWwgWyBT
a2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3At
dXJsLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWVuZC1jcmFzaC1hY2Nl
c3NpbmctaXRlbS1saXN0Lmh0bWwgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5
IGlPUyBzdXBwb3J0cyBRdWlja0xvb2sKIHF1aWNrbG9vayBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNhNDUzOTdjMWRlMTY2OGQxNDkwMDQ1Zjc1YzEzNzhjMmVjMWU1YzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFu
c2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MTcgQEAKK1RyeSB0byBjb3B5IG1lLgorCithZnRlciBhZGRpbmcgYSBzdHJpbmcKK3sKKyAgICAi
ZGF0YSI6IHsKKyAgICAgICAgInRleHQvcGxhaW4iOiAiaGVsbG8gd29ybGQiCisgICAgfSwKKyAg
ICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
LAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVs
bAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbXQorfQorCithZnRlciBhZGRpbmcg
YSBmaWxlIG9mIGN1c3RvbSB0eXBlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6
ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlw
ZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAi
ZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAg
ICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAg
ICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9CisKK2FmdGVyIGFkZGlu
ZyBhIHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAi
IgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAg
ICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUi
OiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZp
bGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAi
Ynl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxh
aW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaXJzdC50eHQiLAorICAgICAgICAgICAgICAgICJi
eXRlcyI6IDcyLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAg
ICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAibmFtZSI6ICJmaXJzdC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogNzIsCisgICAgICAg
ICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQorfQorCithZnRlciBy
ZW1vdmluZyB0aGUgbGFzdCBmaWxlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6
ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlw
ZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAi
ZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAg
ICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAg
ICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9CisKK2FmdGVyIGFkZGlu
ZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAgICAgICAiRmls
ZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAg
ICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAg
ICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAg
ICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRl
eHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmls
ZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAg
ICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMiOiA2NCwK
KyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyNywK
KyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CisK
K2FmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZQoreworICAgICJkYXRhIjogeworICAgICAg
ICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAg
ICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50
eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJm
aWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisg
ICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
CisgICAgICAgIH0KKyAgICBdCit9CisKK2FmdGVyIHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBm
aWxlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxk
IgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAg
ICAiZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogW10KK30KKwor
YWZ0ZXIgcmVtb3ZpbmcgdGhlIHN0cmluZworeworICAgICJkYXRhIjoge30sCisgICAgIml0ZW1z
IjogW10sCisgICAgImZpbGVzIjogW10KK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHku
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0t
bGlzdC1hZGQtZmlsZS1vbi1jb3B5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4MWYyNTljZDAxZTA3Y2Yw
ZTAyMDZiMDhlNWI0M2E5ZGJmNmYwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5
Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9
MSI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3
aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorPC9zdHls
ZT4KKzxib2R5PgorICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogNDBweDsiIGlkPSJzb3VyY2Ui
PlRyeSB0byBjb3B5IG1lLjwvZGl2PgorICAgIDxwcmUgc3R5bGU9ImhlaWdodDogMTAwJTsgd2lk
dGg6IDEwMCU7IiBpZD0ib3V0cHV0Ij48L3ByZT4KKzwvYm9keT4KKzxzY3JpcHQ+CitmdW5jdGlv
biByZXByZXNlbnRhdGlvbkZvckZpbGUoZmlsZSkgeworICAgIHJldHVybiBmaWxlID8geworICAg
ICAgICBuYW1lOiBmaWxlLm5hbWUsCisgICAgICAgIGJ5dGVzOiBmaWxlLnNpemUsCisgICAgICAg
IHR5cGU6IGZpbGUudHlwZQorICAgIH0gOiBudWxsOworfQorCitmdW5jdGlvbiB1cGRhdGVPdXRw
dXRUZXh0KGRlc2NyaXB0aW9uLCBldmVudCkgeworICAgIGNvbnN0IGRhdGFJbmZvID0ge307Cisg
ICAgZm9yIChsZXQgdHlwZSBvZiBldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKQorICAgICAgICBk
YXRhSW5mb1t0eXBlXSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSh0eXBlKTsKKyAgICBs
ZXQgaXRlbXNJbmZvID0gW10KKyAgICBmb3IgKGxldCBpdGVtIG9mIGV2ZW50LmNsaXBib2FyZERh
dGEuaXRlbXMpIHsKKyAgICAgICAgaXRlbXNJbmZvLnB1c2goeworICAgICAgICAgICAgdHlwZTog
aXRlbS50eXBlLAorICAgICAgICAgICAga2luZDogaXRlbS5raW5kLAorICAgICAgICAgICAgZmls
ZTogcmVwcmVzZW50YXRpb25Gb3JGaWxlKGl0ZW0uZ2V0QXNGaWxlKCkpCisgICAgICAgIH0pOwor
ICAgIH0KKyAgICBvdXRwdXQudGV4dENvbnRlbnQgKz0gYFxuJHtkZXNjcmlwdGlvbn1cbiR7SlNP
Ti5zdHJpbmdpZnkoeworICAgICAgICBkYXRhOiBkYXRhSW5mbywKKyAgICAgICAgaXRlbXM6IGl0
ZW1zSW5mbywKKyAgICAgICAgZmlsZXM6IEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5m
aWxlcykubWFwKHJlcHJlc2VudGF0aW9uRm9yRmlsZSkKKyAgICB9LCBudWxsLCAiICAgICIpfVxu
YDsKK30KKworc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImNvcHkiLCBldmVudCA9PiB7CisgICAg
ZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoImhlbGxvIHdvcmxkIiwgInRleHQvcGxhaW4i
KTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCJhZnRlciBhZGRpbmcgYSBzdHJpbmciLCBldmVudCk7
CisKKyAgICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBsZXQgYXJyYXkg
PSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAgYXJyYXkuZmlsbCgxNSk7CisgICAgZXZlbnQu
Y2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQobmV3IEZpbGUoWyBidWZmZXIgXSwgImZvbyIsIHsgdHlw
ZTogImN1c3RvbSIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVyIGFkZGluZyBhIGZp
bGUgb2YgY3VzdG9tIHR5cGUiLCBldmVudCk7CisKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0
ZW1zLmFkZChuZXcgRmlsZShbCisgICAgICAgIG5ldyBCbG9iKFsiVGhpcyBwYXJ0IGlzIGZyb20g
YSBKYXZhU2NyaXB0IEJsb2IiXSwgeyB0eXBlIDogInRleHQvcGxhaW4iIH0pLAorICAgICAgICAi
VGhpcyBwYXJ0IGlzIGp1c3QgZnJvbSBhIHBsYWluIHN0cmluZyIKKyAgICBdLCAiZmlyc3QudHh0
IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVy
IGFkZGluZyBhIHBsYWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmNsaXBib2Fy
ZERhdGEuaXRlbXMucmVtb3ZlKDIpOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVyIHJlbW92
aW5nIHRoZSBsYXN0IGZpbGUiLCBldmVudCk7CisKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0
ZW1zLmFkZChuZXcgRmlsZShbICJUaGlzIGlzIGp1c3QgYSBwbGFpbiBzdHJpbmciIF0sICJzZWNv
bmQudHh0IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQo
ImFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIGV2
ZW50LmNsaXBib2FyZERhdGEuaXRlbXMucmVtb3ZlKDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQo
ImFmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmNs
aXBib2FyZERhdGEuaXRlbXMucmVtb3ZlKDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVy
IHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxlIiwgZXZlbnQpOworCisgICAgZXZlbnQuY2xp
cGJvYXJkRGF0YS5pdGVtcy5yZW1vdmUoMCk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiYWZ0ZXIg
cmVtb3ZpbmcgdGhlIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7Cit9KTsKKworZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChzb3VyY2UsIDAsIHNv
dXJjZSwgMSk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiQ29weSIpOworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUt
b24tZHJhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTk5NDYwNzlkOGZiMzQwNWJhZmY0YjI5ZWVlNTE3OGQyNzc2YmIxZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxNyBAQAor
VHJ5IHRvIGRyYWcgbWUgb3V0LgorCithZnRlciBhZGRpbmcgYSBzdHJpbmcKK3sKKyAgICAiZGF0
YSI6IHsKKyAgICAgICAgInRleHQvcGxhaW4iOiAiaGVsbG8gd29ybGQiCisgICAgfSwKKyAgICAi
aXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAor
ICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAor
ICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbXQorfQorCithZnRlciBhZGRpbmcgYSBm
aWxlIG9mIGN1c3RvbSB0eXBlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIi
CisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6
ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmls
ZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAgICJi
eXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAg
ICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9CisKK2FmdGVyIGFkZGluZyBh
IHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgor
ICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAi
ZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAi
Y3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUi
OiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0
ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
LAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJmaXJzdC50eHQiLAorICAgICAgICAgICAgICAgICJieXRl
cyI6IDcyLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAg
ICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJmaXJzdC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogNzIsCisgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQorfQorCithZnRlciByZW1v
dmluZyB0aGUgbGFzdCBmaWxlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIi
CisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6
ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmls
ZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAgICJi
eXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAg
ICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9CisKK2FmdGVyIGFkZGluZyBh
bm90aGVyIHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMi
OiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAg
ICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5
cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAg
ImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAg
ICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICAg
ICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAg
ICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CisKK2Fm
dGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZQoreworICAgICJkYXRhIjogeworICAgICAgICAi
RmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisg
ICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAg
ICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQi
LAorICAgICAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxl
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAg
ICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisg
ICAgICAgIH0KKyAgICBdCit9CisKK2FmdGVyIHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxl
Cit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxkIgor
ICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAi
ZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogW10KK30KKworYWZ0
ZXIgcmVtb3ZpbmcgdGhlIHN0cmluZworeworICAgICJkYXRhIjoge30sCisgICAgIml0ZW1zIjog
W10sCisgICAgImZpbGVzIjogW10KK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlz
dC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk5ZWE0OGU4ZjgyZDVhMjMwOTcx
YjE1NDY5YjI5Y2Q0ZmVjMTY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0
bWwKQEAgLTAsMCArMSw5MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorPC9zdHlsZT4K
Kzxib2R5PgorICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogNDBweDsiIGlkPSJzb3VyY2UiIGRy
YWdnYWJsZT0idHJ1ZSI+VHJ5IHRvIGRyYWcgbWUgb3V0LjwvZGl2PgorICAgIDxwcmUgc3R5bGU9
IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCUiIGlkPSJvdXRwdXQiPjwvcHJlPgorPC9ib2R5Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHJlcHJlc2VudGF0aW9uRm9yRmlsZShmaWxlKSB7CisgICAgcmV0
dXJuIGZpbGUgPyB7CisgICAgICAgIG5hbWU6IGZpbGUubmFtZSwKKyAgICAgICAgYnl0ZXM6IGZp
bGUuc2l6ZSwKKyAgICAgICAgdHlwZTogZmlsZS50eXBlCisgICAgfSA6IG51bGw7Cit9CisKK2Z1
bmN0aW9uIHVwZGF0ZU91dHB1dFRleHQoZGVzY3JpcHRpb24sIGV2ZW50KSB7CisgICAgY29uc3Qg
ZGF0YUluZm8gPSB7fTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIGV2ZW50LmRhdGFUcmFuc2Zlci50
eXBlcykKKyAgICAgICAgZGF0YUluZm9bdHlwZV0gPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0
YSh0eXBlKTsKKyAgICBsZXQgaXRlbXNJbmZvID0gW10KKyAgICBmb3IgKGxldCBpdGVtIG9mIGV2
ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykgeworICAgICAgICBpdGVtc0luZm8ucHVzaCh7CisgICAg
ICAgICAgICB0eXBlOiBpdGVtLnR5cGUsCisgICAgICAgICAgICBraW5kOiBpdGVtLmtpbmQsCisg
ICAgICAgICAgICBmaWxlOiByZXByZXNlbnRhdGlvbkZvckZpbGUoaXRlbS5nZXRBc0ZpbGUoKSkK
KyAgICAgICAgfSk7CisgICAgfQorICAgIG91dHB1dC50ZXh0Q29udGVudCArPSBgXG4ke2Rlc2Ny
aXB0aW9ufVxuJHtKU09OLnN0cmluZ2lmeSh7CisgICAgICAgIGRhdGE6IGRhdGFJbmZvLAorICAg
ICAgICBpdGVtczogaXRlbXNJbmZvLAorICAgICAgICBmaWxlczogQXJyYXkuZnJvbShldmVudC5k
YXRhVHJhbnNmZXIuZmlsZXMpLm1hcChyZXByZXNlbnRhdGlvbkZvckZpbGUpCisgICAgfSwgbnVs
bCwgIiAgICAiKX1cbmA7Cit9CisKK291dHB1dC5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIs
IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpOworb3V0cHV0LmFkZEV2ZW50TGlzdGVu
ZXIoImRyb3AiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTsKK3NvdXJjZS5hZGRF
dmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiB7CisgICAgZXZlbnQuZGF0YVRyYW5z
ZmVyLml0ZW1zLmFkZCgiaGVsbG8gd29ybGQiLCAidGV4dC9wbGFpbiIpOworICAgIHVwZGF0ZU91
dHB1dFRleHQoImFmdGVyIGFkZGluZyBhIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGxldCBidWZm
ZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIGxldCBhcnJheSA9IG5ldyBJbnQ4QXJyYXko
YnVmZmVyKTsKKyAgICBhcnJheS5maWxsKDE1KTsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRl
bXMuYWRkKG5ldyBGaWxlKFsgYnVmZmVyIF0sICJmb28iLCB7IHR5cGU6ICJjdXN0b20iIH0pKTsK
KyAgICB1cGRhdGVPdXRwdXRUZXh0KCJhZnRlciBhZGRpbmcgYSBmaWxlIG9mIGN1c3RvbSB0eXBl
IiwgZXZlbnQpOworCisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChuZXcgRmlsZShb
CisgICAgICAgIG5ldyBCbG9iKFsiVGhpcyBwYXJ0IGlzIGZyb20gYSBKYXZhU2NyaXB0IEJsb2Ii
XSwgeyB0eXBlIDogInRleHQvcGxhaW4iIH0pLAorICAgICAgICAiVGhpcyBwYXJ0IGlzIGp1c3Qg
ZnJvbSBhIHBsYWluIHN0cmluZyIKKyAgICBdLCAiZmlyc3QudHh0IiwgeyB0eXBlOiAidGV4dC9w
bGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVyIGFkZGluZyBhIHBsYWluIHRl
eHQgZmlsZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5yZW1vdmUo
Mik7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiYWZ0ZXIgcmVtb3ZpbmcgdGhlIGxhc3QgZmlsZSIs
IGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5hZGQobmV3IEZpbGUoWyAi
VGhpcyBpcyBqdXN0IGEgcGxhaW4gc3RyaW5nIiBdLCAic2Vjb25kLnR4dCIsIHsgdHlwZTogInRl
eHQvcGxhaW4iIH0pKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCJhZnRlciBhZGRpbmcgYW5vdGhl
ciBwbGFpbiB0ZXh0IGZpbGUiLCBldmVudCk7CisKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRl
bXMucmVtb3ZlKDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVyIHJlbW92aW5nIHRoZSBj
dXN0b20gZmlsZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5yZW1v
dmUoMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiYWZ0ZXIgcmVtb3ZpbmcgdGhlIHNlY29uZCB0
ZXh0IGZpbGUiLCBldmVudCk7CisKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMucmVtb3Zl
KDApOworICAgIHVwZGF0ZU91dHB1dFRleHQoImFmdGVyIHJlbW92aW5nIHRoZSBzdHJpbmciLCBl
dmVudCk7CisKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSk7CisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIgJiYgd2luZG93LmludGVybmFscykgewor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQodHJ1
ZSk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMTAwLCAyNSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRT
ZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAw
LCA0MDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKzwvc2NyaXB0PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNGY5YzQ0YzMzMDExMDRlNmNhZjQzN2MyNGRlNTNkNmU0ZmUy
ZGZkMC4uMzdkM2NmYjEyODBhYzc1MjM0NWMwYzg0MTU0YjljNDZkNjFmZWQ1ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xMSwzICsxMSw0IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWdldC1kYXRhLW9uLXBhc3RlLWN1c3RvbS5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1wbGFpbi10ZXh0Lmh0bWwgWyBQYXNz
IF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLXBhc3RlLXJp
Y2gtdGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1n
ZXQtZGF0YS1ub24tbm9ybWFsaXplZC10eXBlcy5odG1sIFsgUGFzcyBdCitlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sIFsgUGFz
cyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggZWM0OWZjNDhhNGU5YjBiMmEwZjRjM2NiNzBlNmZkMTlhZTlkZWNkZC4uZGRiYjA4MWRiNzM3
MTNmNTZjZjE2MDhlYjRkYTAxNTBiY2E3ZGUzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTIsNiArMTIsNyBAQCBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1kcm9wLXBsYWluLXRleHQuaHRtbCBbIFBh
c3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtb24tZHJvcC1y
aWNoLXRleHQuaHRtbCBbIFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
Z2V0LWRhdGEtb24tZHJvcC11cmwuaHRtbCBbIFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctZW5kLWNyYXNoLWFjY2Vzc2luZy1pdGVtLWxpc3QuaHRtbCBbIFBhc3MgXQorZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbCBb
IFBhc3MgXQogCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0
Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322635</attachid>
            <date>2017-10-04 00:12:34 -0700</date>
            <delta_ts>2017-10-04 11:09:40 -0700</delta_ts>
            <desc>Second pass</desc>
            <filename>bug-177853-20171004001233.patch</filename>
            <type>text/plain</type>
            <size>37358</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlMGIxZDYzMmQ2MTE5
M2I3OGUwOTNhY2Q4YjQ1MTMwYWY5NDRhNi4uOWM0ZmZiNTYwZTNlYWZiYTdmN2YzMGE2ZDQ1NTNj
MzQ3ZTk4NTU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE3LTEwLTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBz
dXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQgdGhhdCB0
YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MDczNDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB2ZXJ5IGJhc2ljIHN1
cHBvcnQgZm9yIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmFkZChGaWxlKS4gU28gZmFyLCBhIEZpbGUg
YWRkZWQgaW4gdGhpcyB3YXkgY2FuIG9ubHkgYmUgcmVhZAorICAgICAgICBiYWNrIGZyb20gdGhl
IHNhbWUgRGF0YVRyYW5zZmVyLCBkdXJpbmcgZHJhZ3N0YXJ0IG9yIGNvcHkuIFRoaXMgRmlsZSBp
c24ndCB3cml0dGVuIHRvIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkCisgICAgICAgIHlldCwgc28g
ZXZlbiBkcm9wcGluZyBvciBwYXN0aW5nIGluIHRoZSBzYW1lIHBhZ2Ugd2lsbCBub3QgdHJhbnNm
ZXIgdGhlIEZpbGUsIGJ1dCB0aGlzIGJyaW5ncyB1cyBjbG9zZXIgdG8KKyAgICAgICAgcGFyaXR5
IHdpdGggb3RoZXIgYnJvd3NlcnMuIFNlZSBwZXItbWV0aG9kIGNvbW1lbnRzIGZvciBkZXRhaWxz
LgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVt
LWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sCisKKyAg
ICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlcjo6aXRlbUxpc3REaWRSZW1vdmVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlcjo6aXRlbUxpc3REaWRBZGRGaWxlKToKKworICAgICAgICBVcGRhdGUgdGhlIERhdGFUcmFu
c2ZlcidzIEZpbGVMaXN0IHdoZW4gYWRkaW5nIG9yIHJlbW92aW5nIGEgZmlsZSB2aWEgdGhlIERh
dGFUcmFuc2Zlckl0ZW1MaXN0LgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnR5
cGVzIGNvbnN0KToKKworICAgICAgICBSZXR1cm4gb25seSB0aGUgIkZpbGVzIiB0eXBlIGlmIHRo
ZXJlIGFyZSBmaWxlLWJhY2tlZCBpdGVtcyBpbiB0aGUgRGF0YVRyYW5zZmVyJ3MgaXRlbSBsaXN0
LgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmZpbGVzIGNvbnN0KToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmZpbGUgY29uc3QpOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6YWRkKToKKworICAgICAgICBXaGVuIGFkZGluZyBhIEZpbGUs
IGNhbGwgb3V0IHRvIHRoZSBEYXRhVHJhbnNmZXIgdG8gYWRkaXRpb25hbGx5IGFwcGVuZCB0aGUg
RmlsZSB0byB0aGUgRGF0YVRyYW5zZmVyJ3MgRmlsZUxpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1vdmUpOgorCisgICAgICAgIFdoZW4gcmVtb3Zpbmcg
YSBGaWxlLCBvbmx5IGNsZWFyIGZyb20gdGhlIERhdGFUcmFuc2ZlcidzIHBhc3RlYm9hcmQgaWYg
dGhlIHJlbW92ZWQgaXRlbSBpcyBub3QgYSBGaWxlIChvdGhlcndpc2UsCisgICAgICAgIGNsZWFy
aW5nIGEgRmlsZSB0aGF0IHNoYXJlcyB0aGUgc2FtZSB0eXBlIGFzIHNvbWUgb3RoZXIgaXRlbSBp
biB0aGUgcGFzdGVib2FyZCB3aWxsIGVycm9uZW91c2x5IGNsZWFyIHRoYXQgb3RoZXIKKyAgICAg
ICAgaXRlbSBhcyB3ZWxsKS4gQWRkaXRpb25hbGx5LCBjYWxsIG91dCB0byB0aGUgRGF0YVRyYW5z
ZmVyIHRvIHVwZGF0ZSB0aGUgRmlsZUxpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlckl0ZW1MaXN0OjppdGVtcyBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6aGFzSXRl
bXMgY29uc3QpOgorCisgICAgICAgIEFkZCBoZWxwZXJzIGZvciBkaXJlY3RseSBhY2Nlc3Npbmcg
YW4gaXRlbSBsaXN0J3MgaXRlbXMuIGl0ZW1zKCkgc2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rp
b24gd2l0aCBoYXNJdGVtcygpLgorICAgICAgICBUaGlzIHJvdXRlIGlzIHRha2VuIHRvICgxKSBh
dm9pZCBoYXZpbmcgdG8gY29weSB0aGUgdmVjdG9yIG9mIEZpbGVzLCBhbmQgKDIpIHRvIGF2b2lk
IGdlbmVyYXRpbmcgbV9pdGVtcyBpZiBpdAorICAgICAgICBkb2Vzbid0IGFscmVhZHkgZXhpc3Qu
CisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVMaXN0OjpyZW1vdmVGaWxlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHJl
bW92ZSBhIHBhcnRpY3VsYXIgRmlsZSBmcm9tIGEgRmlsZUxpc3QuCisKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVMaXN0Lmg6CisKIDIwMTctMTAtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjIyNTk1KTogSW50ZXJtaXR0ZW50
IGNyYXNoIHdoaWxlIGFjY2Vzc2luZyBEYXRhVHJhbnNmZXJJdGVtTGlzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAppbmRleCBhZGRlZjBmOTE3M2M0NTZhODFlYWU3NDkwNTEyNGYwYzJm
NDkzZmUyLi5jODdmZGVjZDEwYmM4OWZjZTM3Y2I3NDRiMWM2YjlkZjVkZWY4OTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgorI2luY2x1ZGUg
IkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC0xNjEsNiArMTYy
LDIwIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBtX2l0ZW1MaXN0LT5kaWRTZXRTdHJpbmdEYXRhKG5v
cm1hbGl6ZWRUeXBlKTsKIH0KIAordm9pZCBEYXRhVHJhbnNmZXI6Oml0ZW1MaXN0RGlkUmVtb3Zl
RmlsZShSZWY8RmlsZT4mJiBmaWxlKQoreworICAgIEFTU0VSVChtX2ZpbGVMaXN0KTsKKyAgICBB
U1NFUlQoY2FuV3JpdGVEYXRhKCkpOworICAgIG1fZmlsZUxpc3QtPnJlbW92ZUZpbGUoV1RGTW92
ZShmaWxlKSk7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVyOjppdGVtTGlzdERpZEFkZEZpbGUoUmVm
PEZpbGU+JiYgZmlsZSkKK3sKKyAgICBBU1NFUlQoY2FuV3JpdGVEYXRhKCkpOworICAgIGlmICht
X2ZpbGVMaXN0KQorICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoV1RGTW92ZShmaWxlKSk7Cit9
CisKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkKIHsKICAgICBp
ZiAoIW1faXRlbUxpc3QpCkBAIC0xODEsNiArMTk2LDkgQEAgVmVjdG9yPFN0cmluZz4gRGF0YVRy
YW5zZmVyOjp0eXBlcygpIGNvbnN0CiAgICAgICAgIHJldHVybiB0eXBlczsKICAgICB9CiAKKyAg
ICBpZiAobV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0LT5oYXNJdGVtcygpICYmIG1faXRlbUxpc3Qt
Pml0ZW1zKCkuZmluZE1hdGNoaW5nKFtdIChjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVt
LT5pc0ZpbGUoKTsgfSkgIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiB7ICJGaWxlcyIgfTsK
KwogICAgIGlmIChtX3Bhc3RlYm9hcmQtPmNvbnRhaW5zRmlsZXMoKSkgewogICAgICAgICBBU1NF
UlQoIW1fcGFzdGVib2FyZC0+dHlwZXNTYWZlRm9yQmluZGluZ3MoKS5jb250YWlucygiRmlsZXMi
KSk7CiAgICAgICAgIHJldHVybiB7ICJGaWxlcyIgfTsKQEAgLTIwMSwxOCArMjE5LDIwIEBAIEZp
bGVMaXN0JiBEYXRhVHJhbnNmZXI6OmZpbGVzKCkgY29uc3QKICAgICAgICAgcmV0dXJuICptX2Zp
bGVMaXN0OwogICAgIH0KIAotICAgIGlmIChmb3JEcmFnKCkgJiYgIWZvckZpbGVEcmFnKCkpIHsK
LSAgICAgICAgaWYgKG1fZmlsZUxpc3QpCi0gICAgICAgICAgICBBU1NFUlQobV9maWxlTGlzdC0+
aXNFbXB0eSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVM
aXN0OjpjcmVhdGUoKTsKLSAgICAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwotICAgIH0KLQogICAg
IGlmICghbV9maWxlTGlzdCkgewotICAgICAgICBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIg
cmVhZGVyOwotICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKLSAgICAgICAgbV9m
aWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShyZWFkZXIuZmlsZXMpKTsKKyAgICAg
ICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CisgICAgICAgIGlmICghZm9yRHJhZygpIHx8IGZv
ckZpbGVEcmFnKCkpIHsKKyAgICAgICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBy
ZWFkZXI7CisgICAgICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKKyAgICAgICAg
ICAgIGZpbGVzID0gV1RGTW92ZShyZWFkZXIuZmlsZXMpOworICAgICAgICB9CisgICAgICAgIGlm
IChtX2l0ZW1MaXN0ICYmIG1faXRlbUxpc3QtPmhhc0l0ZW1zKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgaXRlbSA6IG1faXRlbUxpc3QtPml0ZW1zKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byBmaWxlID0gaXRlbS0+ZmlsZSgpKQorICAgICAgICAgICAgICAgICAgICBmaWxlcy5h
cHBlbmQoKmZpbGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fZmlsZUxp
c3QgPSBGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMpKTsKICAgICB9CiAgICAgcmV0dXJu
ICptX2ZpbGVMaXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IDA5ZDRkZmYz
MmIxMWZiOGZlZjJlMDdiYzhlMTViM2M0MDVlMmYxNmYuLjFlOTRiYjZmOTYwMDhkNjllMzZlNjNh
ZDJjYTIzOWUxY2Y5MTA3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAgY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBEcmFnSW1hZ2VMb2FkZXI7CiBjbGFzcyBF
bGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7CitjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsK
IAogY2xhc3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7
CkBAIC05OSw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNEcmFnSW1hZ2UoKSBjb25z
dDsKICNlbmRpZgogCisgICAgdm9pZCBpdGVtTGlzdERpZEFkZEZpbGUoUmVmPEZpbGU+JiYpOwor
ICAgIHZvaWQgaXRlbUxpc3REaWRSZW1vdmVGaWxlKFJlZjxGaWxlPiYmKTsKKwogcHJpdmF0ZToK
ICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFzdGUsIERyYWdBbmREcm9wRGF0YSwgRHJh
Z0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwogICAgIERhdGFUcmFuc2ZlcihTdG9yZU1vZGUs
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAppbmRleCA5YWMxMWU3Y2IzMzVmNzMx
MDAzZmExNjVhMTg2MjRmZTdmYWVlMjU2Li45Njg1NTI5MTg3ZTY2ZDQzOWJiZjUwMmE3MDc2ZDA2
YjQ4OGM5NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTU0LDYg
KzU0LDcgQEAgcHVibGljOgogCiAgICAgfkRhdGFUcmFuc2Zlckl0ZW0oKTsKIAorICAgIFJlZlB0
cjxGaWxlPiBmaWxlKCkgY29uc3QgeyByZXR1cm4gbV9maWxlOyB9CiAgICAgdm9pZCBjbGVhckxp
c3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlz
dC5jcHAKaW5kZXggNTk3MDRiNGI1NjBjOGQ2M2Q4ZDFiZTdhZjg2YTUyODJlZDJhYjI4My4uNTkw
NDU1NjczYTRhM2RhMWZiMDAyYzllYmEwYjhmOTIwNWNmYzQ0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCkBAIC04NCw5ICs4NCwxNCBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQo
Y29uc3QgU3RyaW5nJiBkYQogICAgIHJldHVybiBSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4geyBt
X2l0ZW1zLT5sYXN0KCkuY29weVJlZigpIH07CiB9CiAKLVJlZlB0cjxEYXRhVHJhbnNmZXJJdGVt
PiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6YWRkKFJlZjxGaWxlPiYmKQorUmVmUHRyPERhdGFUcmFu
c2Zlckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQoUmVmPEZpbGU+JiYgZmlsZSkKIHsK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1fZGF0YVRyYW5zZmVyLmNhbldyaXRlRGF0
YSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGVuc3VyZUl0ZW1zKCkuYXBwZW5k
KERhdGFUcmFuc2Zlckl0ZW06OmNyZWF0ZShtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KnRoaXMpLCBmaWxlLT50eXBlKCksIGZpbGUuY29weVJlZigpKSk7CisgICAgbV9kYXRhVHJhbnNm
ZXIuaXRlbUxpc3REaWRBZGRGaWxlKFdURk1vdmUoZmlsZSkpOworICAgIHJldHVybiBSZWZQdHI8
RGF0YVRyYW5zZmVySXRlbT4geyBtX2l0ZW1zLT5sYXN0KCkucHRyKCkgfTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSh1bnNpZ25lZCBpbmRleCkK
QEAgLTk4LDEzICsxMDMsMTYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxp
c3Q6OnJlbW92ZSh1bnNpZ25lZCBpbmRleCkKICAgICBpZiAoaXRlbXMuc2l6ZSgpIDw9IGluZGV4
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsgLy8gTWF0Y2hl
cyBHZWNrby4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjkyNQog
Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgcmVtb3ZhbCBvZiBmaWxlcyBvbmNlIHdlIGFkZGVk
IHRoZSBzdXBwb3J0IGZvciB3cml0aW5nIGEgRmlsZS4KLSAgICBBU1NFUlQoIWl0ZW1zW2luZGV4
XS0+aXNGaWxlKCkpOwotCisgICAgLy8gU2luY2UgZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRl
bXMgYXJlIG5vdCBhY3R1YWxseSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHlldCwgd2UgZG9u
J3QgbmVlZCB0byByZW1vdmUgYW55CisgICAgLy8gdGVtcG9yYXJ5IGZpbGVzLiBXaGVuIHdlIHN1
cHBvcnQgd3JpdGluZyBmaWxlLWJhY2tlZCBEYXRhVHJhbnNmZXJJdGVtcyB0byB0aGUgcGxhdGZv
cm0gcGFzdGVib2FyZCwgd2Ugd2lsbCBuZWVkCisgICAgLy8gdG8gY2xlYW4gdXAgaGVyZS4KICAg
ICBhdXRvJiByZW1vdmVkSXRlbSA9IGl0ZW1zW2luZGV4XS5nZXQoKTsKLSAgICBtX2RhdGFUcmFu
c2Zlci5wYXN0ZWJvYXJkKCkuY2xlYXIocmVtb3ZlZEl0ZW0udHlwZSgpKTsKKyAgICBpZiAoIXJl
bW92ZWRJdGVtLmlzRmlsZSgpKQorICAgICAgICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
Y2xlYXIocmVtb3ZlZEl0ZW0udHlwZSgpKTsKICAgICByZW1vdmVkSXRlbS5jbGVhckxpc3RBbmRQ
dXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMucmVtb3ZlKGluZGV4KTsKKyAgICBpZiAo
cmVtb3ZlZEl0ZW0uaXNGaWxlKCkpCisgICAgICAgIG1fZGF0YVRyYW5zZmVyLml0ZW1MaXN0RGlk
UmVtb3ZlRmlsZSgqcmVtb3ZlZEl0ZW0uZmlsZSgpKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC0xODAsNSArMTg4LDExIEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmRpZFNldFN0cmlu
Z0RhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIG1faXRlbXMtPmFwcGVuZChEYXRhVHJhbnNm
ZXJJdGVtOjpjcmVhdGUobV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSwgbG93
ZXJjYXNlZFR5cGUpKTsKIH0KIAorY29uc3QgVmVjdG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4m
IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjppdGVtcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXRl
bXMpOworICAgIHJldHVybiAqbV9pdGVtczsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtTGlzdC5oCmluZGV4IGZjZTY5NDc0MWMyZDY0NTFkNjhmMTVkOTMyOWQ1
OGY1YjA3YTg5ZjAuLjhhYzgxMzhkMzg5YTFlYTFhNzNjNzQ3ZmVmOTE3MTkxYWM2M2FiOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCkBAIC02NSw2ICs2NSw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ2xlYXJTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSk7CiAgICAgdm9pZCBkaWRTZXRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgYm9vbCBoYXNJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuaGFzX3ZhbHVlKCk7IH0K
KyAgICBjb25zdCBWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgaXRlbXMoKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRl
bXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAKaW5kZXggN2NhN2YxYjRm
NWRlNzZkZWJkNGNmYWFlY2I1OWIyZTNiZmExMDk1ZC4uODRkMDRlZWNmYzU3ODQwNjhhZWIxOThh
MDFkYzZjYTFmNzczMWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAKQEAgLTQ0
LDQgKzQ0LDExIEBAIFZlY3RvcjxTdHJpbmc+IEZpbGVMaXN0OjpwYXRocygpIGNvbnN0CiAgICAg
cmV0dXJuIHBhdGhzOwogfQogCit2b2lkIEZpbGVMaXN0OjpyZW1vdmVGaWxlKFJlZjxGaWxlPiYm
IGZpbGVUb1JlbW92ZSkKK3sKKyAgICBtX2ZpbGVzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZmaWxl
VG9SZW1vdmVdIChjb25zdCBhdXRvJiBmaWxlKSB7CisgICAgICAgIHJldHVybiBmaWxlVG9SZW1v
dmUucHRyKCkgPT0gZmlsZS5wdHIoKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5oCmluZGV4IGMxYzVlZjE2YmE0OWE1NGMxMzdl
ZWRkNWYwNWExZWQwYmFiY2UxZTAuLjA0OTUyZTcxNDg0YzgwNWU0ZmNjNmY4OWFlYzAzNGI1Yzky
YmM2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVi
bGljOgogCiAgICAgY29uc3QgVmVjdG9yPFJlZjxGaWxlPj4mIGZpbGVzKCkgY29uc3QgeyByZXR1
cm4gbV9maWxlczsgfQogICAgIGNvbnN0IEZpbGUmIGZpbGUodW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsZXNbaW5kZXhdLmdldCgpOyB9CisgICAgdm9pZCByZW1vdmVGaWxlKFJl
ZjxGaWxlPiYmKTsKIAogcHJpdmF0ZToKICAgICBGaWxlTGlzdCgpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhOWY2YmUwYTNiOWU2MDVkOTE4YzkyZGQyMTFkYzdkOTkzODEyMzQzLi40ZDcxZGUyMDkzZGU1
YThkYmU0OTljNjE2ZTM4NmI2ZGFlOWY4NDdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTct
MTAtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGJhc2ljIHN1cHBvcnQgZm9yIHRoZSB2ZXJzaW9uIG9mIERhdGFUcmFuc2Zlckl0ZW1MaXN0
LmFkZCB0aGF0IHRha2VzIGEgRmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3ODUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDgwNzM0Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dHMgdG8gdmVyaWZ5IHRoYXQgRmlsZXMgY2FuIGJlIGFkZGVkIHRvIGFuZCByZW1vdmVkIGZyb20g
dGhlIERhdGFUcmFuc2Zlckl0ZW1MaXN0LCBhbmQgYWxzbyByZWFkIGJhY2sgdmlhCisgICAgICAg
IGJvdGggdGhlIGl0ZW0gbGlzdCBhbmQgdGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHdoZW4g
Y29weWluZyBhbmQgZHJhZ2dpbmcuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmls
ZS1vbi1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAx
Ny0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJbnRlcm1pdHRlbnQgY3Jhc2ggd2hpbGUgYWNjZXNzaW5n
IERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNmRmZjQzMTY4M2Nh
MGU4MmUwYjgyYmY2NzlkYzhhN2E2NzZiMWU4Li45ZDg5ZDczOThlMTA2NjMxMGIwOTFhNGE0NGJk
NTA3ZTNlYTQ1MTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcxLDYgKzcxLDcgQEAgZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtb24tZHJvcC1wbGFpbi10ZXh0Lmh0
bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9u
LWRyb3AtcmljaC10ZXh0Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtdXJsLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLWVuZC1jcmFzaC1hY2Nlc3NpbmctaXRlbS1saXN0Lmh0bWwgWyBTa2lwIF0KK2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFn
Lmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5IGlPUyBzdXBwb3J0cyBRdWlja0xvb2sKIHF1aWNrbG9v
ayBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1m
aWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZGY2N2NhZWQxYjExNzhjNDJm
OGM1ZDAwYjU5NTQ3NzFlNmNlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMDQgQEAKK0NvcHkgdGhpcyB0ZXh0IQorVG8gbWFudWFs
bHkgdGVzdCwgY29weSB0aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBkdW1wcyBEYXRh
VHJhbnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLAorCitkZXNjcmliZWQgZGly
ZWN0bHkgYWJvdmUgdGhlIG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBEYXRhVHJhbnNm
ZXIgc3RhdGUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUKKworb3BlcmF0aW9uIHBlcmZv
cm1lZCBhdCBlYWNoIHN0ZXAuCisKKworMS4gQWZ0ZXIgYWRkaW5nIGEgc3RyaW5nCit7CisgICAg
ImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxkIgorICAgIH0sCisg
ICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWlu
IiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51
bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogW10KK30KKworMi4gQWZ0ZXIgYWRk
aW5nIGEgZmlsZSBvZiBjdXN0b20gdHlwZQoreworICAgICJkYXRhIjogeworICAgICAgICAiRmls
ZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAg
ICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAg
ICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAg
ICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAg
ICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9CisgICAgXQorfQorCiszLiBBZnRl
ciBhZGRpbmcgdGhlIGZpcnN0IHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAg
ICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmlu
ZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAor
ICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAg
ICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0
b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0
eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAg
ICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaXJzdC50eHQiLAorICAg
ICAgICAgICAgICAgICJieXRlcyI6IDcyLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRl
cyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaXJzdC50eHQiLAorICAgICAgICAgICAgImJ5dGVz
IjogNzIsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAg
XQorfQorCis0LiBBZnRlciByZW1vdmluZyB0aGUgbGFzdCBmaWxlCit7CisgICAgImRhdGEiOiB7
CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAi
c3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmls
ZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28i
LAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjog
ImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjog
WworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5
dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBd
Cit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis1LiBB
ZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZp
bGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAg
ICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAg
ICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAg
ICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJm
aWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAg
ICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfQorICAgIF0KK30KKworNi4gQWZ0
ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4gdGV4dCBmaWxlCit7CisgICAgImRhdGEiOiB7CisgICAg
ICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisg
ICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAg
ICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3Rv
bSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAg
ICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAg
ICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAg
ICAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRl
cyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICJieXRl
cyI6IDI3LAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAg
IF0KK30KKworNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlCit7CisgICAgImRhdGEi
OiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZWNv
bmQudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgp
IHNob3VsZCBiZSBudWxsOiBudWxsCisKKzguIEFmdGVyIHJlbW92aW5nIHRoZSBIVE1MIHN0cmlu
ZworeworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0
ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAg
ICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAg
ICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6
IDI3LAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVk
SXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis5LiBBZnRlciByZW1vdmlu
ZyB0aGUgc2Vjb25kIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9w
bGFpbiI6ICJoZWxsbyB3b3JsZCIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJz
dHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAg
ICJmaWxlcyI6IFtdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDog
bnVsbAorCisxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHBsYWluIHRleHQgc3RyaW5nCit7CisgICAg
ImRhdGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVtb3Zl
ZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKK1RoZSBEYXRhVHJhbnNmZXIn
cyBGaWxlTGlzdCBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0OiB0cnVlCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1h
ZGQtZmlsZS1vbi1jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2
ZDY4ODNjYmZjODkzMDY0ZmYwM2NhYjA0NDAxNGY4N2UzMzM0MTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3Qt
YWRkLWZpbGUtb24tY29weS5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzdHlsZT4KK2Jv
ZHksIGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJn
aW46IDA7Cit9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiA0
MHB4OyIgaWQ9InNvdXJjZSI+Q29weSB0aGlzIHRleHQhPC9kaXY+CisgICAgPHA+VG8gbWFudWFs
bHkgdGVzdCwgY29weSB0aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBkdW1wcyBEYXRh
VHJhbnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLDwvcD4KKyAgICA8cD5kZXNj
cmliZWQgZGlyZWN0bHkgYWJvdmUgdGhlIG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBE
YXRhVHJhbnNmZXIgc3RhdGUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGU8L3A+CisgICAg
PHA+b3BlcmF0aW9uIHBlcmZvcm1lZCBhdCBlYWNoIHN0ZXAuPC9wPgorICAgIDxwcmUgc3R5bGU9
ImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IiBpZD0ib3V0cHV0Ij48L3ByZT4KKzwvYm9keT4K
KzxzY3JpcHQ+CitmdW5jdGlvbiB3cml0ZShtZXNzYWdlKSB7CisgICAgb3V0cHV0LnRleHRDb250
ZW50ICs9IGAke21lc3NhZ2V9XG5gOworfQorCitmdW5jdGlvbiByZXByZXNlbnRhdGlvbkZvckZp
bGUoZmlsZSkgeworICAgIHJldHVybiBmaWxlID8geworICAgICAgICBuYW1lOiBmaWxlLm5hbWUs
CisgICAgICAgIGJ5dGVzOiBmaWxlLnNpemUsCisgICAgICAgIHR5cGU6IGZpbGUudHlwZQorICAg
IH0gOiBudWxsOworfQorCitmdW5jdGlvbiB1cGRhdGVPdXRwdXRUZXh0KGRlc2NyaXB0aW9uLCBl
dmVudCkgeworICAgIGNvbnN0IGRhdGFJbmZvID0ge307CisgICAgZm9yIChjb25zdCB0eXBlIG9m
IGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpCisgICAgICAgIGRhdGFJbmZvW3R5cGVdID0gZXZl
bnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKHR5cGUpOworICAgIGNvbnN0IGl0ZW1zSW5mbyA9IFtd
OworICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zKSB7Cisg
ICAgICAgIGl0ZW1zSW5mby5wdXNoKHsKKyAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSwKKyAg
ICAgICAgICAgIGtpbmQ6IGl0ZW0ua2luZCwKKyAgICAgICAgICAgIGZpbGU6IHJlcHJlc2VudGF0
aW9uRm9yRmlsZShpdGVtLmdldEFzRmlsZSgpKQorICAgICAgICB9KTsKKyAgICB9CisgICAgd3Jp
dGUoYFxuJHtkZXNjcmlwdGlvbn1cbiR7SlNPTi5zdHJpbmdpZnkoeworICAgICAgICBkYXRhOiBk
YXRhSW5mbywKKyAgICAgICAgaXRlbXM6IGl0ZW1zSW5mbywKKyAgICAgICAgZmlsZXM6IEFycmF5
LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlcykubWFwKHJlcHJlc2VudGF0aW9uRm9yRmls
ZSkKKyAgICB9LCBudWxsLCAiICAgICIpfWApOworfQorCitmdW5jdGlvbiByZW1vdmVBdChpdGVt
TGlzdCwgaW5kZXgpIHsKKyAgICBjb25zdCByZW1vdmVkSXRlbSA9IGV2ZW50LmNsaXBib2FyZERh
dGEuaXRlbXNbaW5kZXhdOworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMucmVtb3ZlKGlu
ZGV4KTsKKyAgICByZXR1cm4gcmVtb3ZlZEl0ZW07Cit9CisKK3NvdXJjZS5hZGRFdmVudExpc3Rl
bmVyKCJjb3B5IiwgZXZlbnQgPT4geworICAgIGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJv
YXJkRGF0YS5maWxlczsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZCgiaGVsbG8g
d29ybGQiLCAidGV4dC9wbGFpbiIpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjEuIEFmdGVyIGFk
ZGluZyBhIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1
ZmZlcig2NCk7CisgICAgY29uc3QgYXJyYXkgPSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAg
YXJyYXkuZmlsbCgxNSk7CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQobmV3IEZp
bGUoWyBidWZmZXIgXSwgImZvbyIsIHsgdHlwZTogImN1c3RvbSIgfSkpOworICAgIHVwZGF0ZU91
dHB1dFRleHQoIjIuIEFmdGVyIGFkZGluZyBhIGZpbGUgb2YgY3VzdG9tIHR5cGUiLCBldmVudCk7
CisKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChuZXcgRmlsZShbCisgICAgICAg
IG5ldyBCbG9iKFsiVGhpcyBwYXJ0IGlzIGZyb20gYSBKYXZhU2NyaXB0IEJsb2IiXSwgeyB0eXBl
IDogInRleHQvcGxhaW4iIH0pLAorICAgICAgICAiVGhpcyBwYXJ0IGlzIGp1c3QgZnJvbSBhIHBs
YWluIHN0cmluZyIKKyAgICBdLCAiZmlyc3QudHh0IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSkp
OworICAgIHVwZGF0ZU91dHB1dFRleHQoIjMuIEFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcGxhaW4g
dGV4dCBmaWxlIiwgZXZlbnQpOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5j
bGlwYm9hcmREYXRhLml0ZW1zLCAyKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI0LiBBZnRlciBy
ZW1vdmluZyB0aGUgbGFzdCBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5n
ZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsK
KworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKCI8YT5nb29kYnllIHdvcmxkPC9h
PiIsICJ0ZXh0L2h0bWwiKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI1LiBBZnRlciBhZGRpbmcg
YW4gSFRNTCBzdHJpbmciLCBldmVudCk7CisKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1z
LmFkZChuZXcgRmlsZShbICJUaGlzIGlzIGp1c3QgYSBwbGFpbiBzdHJpbmciIF0sICJzZWNvbmQu
dHh0IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjYu
IEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIHJl
bW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMSk7CisgICAg
dXBkYXRlT3V0cHV0VGV4dCgiNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlIiwgZXZl
bnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDog
JHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3Zl
QXQoZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgi
OC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIEhUTUwgc3RyaW5nIiwgZXZlbnQpOworICAgIHdyaXRlKGBy
ZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJk
RGF0YS5pdGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiOS4gQWZ0ZXIgcmVtb3Zpbmcg
dGhlIHNlY29uZCB0ZXh0IGZpbGUiLCBldmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdl
dEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOwor
CisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAw
KTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHBsYWluIHRl
eHQgc3RyaW5nIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBz
aG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKyAgICB3cml0ZShg
VGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3Q6ICR7
ZmlsZUxpc3QgPT0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlc31gKTsKKworICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Cit9KTsKKworZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChz
b3VyY2UsIDAsIHNvdXJjZSwgMSk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiQ29weSIpOworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxp
c3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2FkYTY1NDE5M2ZkZTBkYTVmZmI4YTc2NWYxYjBhODE2NTk5NjVj
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
LXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMwNCBAQAorRHJhZyBtZSBvdXQuCitUbyBtYW51YWxseSB0ZXN0LCBkcmFnIHRoZSBhYm92
ZSB0ZXh0LiBUaGUgb3V0cHV0IGJlbG93IGR1bXBzIERhdGFUcmFuc2ZlciBzdGF0ZSBmb2xsb3dp
bmcgZWFjaCBvcGVyYXRpb24sCisKK2Rlc2NyaWJlZCBkaXJlY3RseSBhYm92ZSB0aGUgb3V0cHV0
IHRleHQgZm9yIGVhY2ggc3RlcC4gVGhlIERhdGFUcmFuc2ZlciBzdGF0ZSBzaG91bGQgYmUgY29u
c2lzdGVudCB3aXRoIHRoZQorCitvcGVyYXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC4KKwor
CisxLiBBZnRlciBhZGRpbmcgYSBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgInRl
eHQvcGxhaW4iOiAiaGVsbG8gd29ybGQiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwK
KyAgICAiZmlsZXMiOiBbXQorfQorCisyLiBBZnRlciBhZGRpbmcgYSBmaWxlIG9mIGN1c3RvbSB0
eXBlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAi
aXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAor
ICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAg
ICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAg
ICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJm
b28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0
b20iCisgICAgICAgIH0KKyAgICBdCit9CisKKzMuIEFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcGxh
aW4gdGV4dCBmaWxlCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAg
fSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxl
IjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0
b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6
IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAg
ICAgICAgICAgICJuYW1lIjogImZpcnN0LnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjog
NzIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAi
dHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogImZpcnN0LnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiA3MiwKKyAgICAgICAgICAgICJ0
eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CisKKzQuIEFmdGVyIHJlbW92
aW5nIHRoZSBsYXN0IGZpbGUKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIK
KyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAg
ImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
ImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxl
IjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAgICAgImJ5
dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAg
ICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFz
RmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0
cmluZworeworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAg
Iml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwK
KyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAg
ICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAg
ICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAg
ICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0K
KyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
Zm9vIiwKKyAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3Vz
dG9tIgorICAgICAgICB9CisgICAgXQorfQorCis2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFp
biB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9
LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUi
OiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3Rv
bSIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogewor
ICAgICAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjog
NjQsCisgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAg
ICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAg
ICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAg
ICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjog
MjcsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAi
dHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQorfQorCis3LiBBZnRlciByZW1v
dmluZyB0aGUgY3VzdG9tIGZpbGUKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjog
IiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUi
OiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAg
ICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAg
ICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3Bs
YWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAg
ImJ5dGVzIjogMjcsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9
CisgICAgXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwK
KworOC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIEhUTUwgc3RyaW5nCit7CisgICAgImRhdGEiOiB7Cisg
ICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3Ry
aW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZp
bGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2Vj
b25kLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisg
ICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0
IiwKKyAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3Vs
ZCBiZSBudWxsOiBudWxsCisKKzkuIEFmdGVyIHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxl
Cit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxkIgor
ICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAi
ZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogW10KK30KK3JlbW92
ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzEwLiBBZnRlciByZW1v
dmluZyB0aGUgcGxhaW4gdGV4dCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHt9LAorICAgICJpdGVt
cyI6IFtdLAorICAgICJmaWxlcyI6IFtdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91
bGQgYmUgbnVsbDogbnVsbAorVGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHNob3VsZCBiZSB0
aGUgc2FtZSBvYmplY3Q6IHRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1h
ZGQtZmlsZS1vbi1kcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIyMGQ1MmNmZjQ5MmE2Y2ZlNmQ1NzZi
ZjhkYTZiZDNlNjY2NDk1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwK
QEAgLTAsMCArMSwxMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8
Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDQwcHg7IiBpZD0ic291cmNlIiBkcmFn
Z2FibGU9InRydWUiPkRyYWcgbWUgb3V0LjwvZGl2PgorICAgIDxwPlRvIG1hbnVhbGx5IHRlc3Qs
IGRyYWcgdGhlIGFib3ZlIHRleHQuIFRoZSBvdXRwdXQgYmVsb3cgZHVtcHMgRGF0YVRyYW5zZmVy
IHN0YXRlIGZvbGxvd2luZyBlYWNoIG9wZXJhdGlvbiw8L3A+CisgICAgPHA+ZGVzY3JpYmVkIGRp
cmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQgdGV4dCBmb3IgZWFjaCBzdGVwLiBUaGUgRGF0YVRyYW5z
ZmVyIHN0YXRlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlPC9wPgorICAgIDxwPm9wZXJh
dGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLjwvcD4KKyAgICA8cHJlIHN0eWxlPSJ3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlIiBpZD0ib3V0cHV0Ij48L3ByZT4KKzwvYm9keT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiB3cml0ZShtZXNzYWdlKSB7CisgICAgb3V0cHV0LnRleHRDb250ZW50ICs9IGAk
e21lc3NhZ2V9XG5gOworfQorCitmdW5jdGlvbiByZXByZXNlbnRhdGlvbkZvckZpbGUoZmlsZSkg
eworICAgIHJldHVybiBmaWxlID8geworICAgICAgICBuYW1lOiBmaWxlLm5hbWUsCisgICAgICAg
IGJ5dGVzOiBmaWxlLnNpemUsCisgICAgICAgIHR5cGU6IGZpbGUudHlwZQorICAgIH0gOiBudWxs
OworfQorCitmdW5jdGlvbiB1cGRhdGVPdXRwdXRUZXh0KGRlc2NyaXB0aW9uLCBldmVudCkgewor
ICAgIGNvbnN0IGRhdGFJbmZvID0ge307CisgICAgZm9yIChjb25zdCB0eXBlIG9mIGV2ZW50LmRh
dGFUcmFuc2Zlci50eXBlcykKKyAgICAgICAgZGF0YUluZm9bdHlwZV0gPSBldmVudC5kYXRhVHJh
bnNmZXIuZ2V0RGF0YSh0eXBlKTsKKyAgICBjb25zdCBpdGVtc0luZm8gPSBbXQorICAgIGZvciAo
Y29uc3QgaXRlbSBvZiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHsKKyAgICAgICAgaXRlbXNJ
bmZvLnB1c2goeworICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLAorICAgICAgICAgICAga2lu
ZDogaXRlbS5raW5kLAorICAgICAgICAgICAgZmlsZTogcmVwcmVzZW50YXRpb25Gb3JGaWxlKGl0
ZW0uZ2V0QXNGaWxlKCkpCisgICAgICAgIH0pOworICAgIH0KKyAgICBvdXRwdXQudGV4dENvbnRl
bnQgKz0gYFxuJHtkZXNjcmlwdGlvbn1cbiR7SlNPTi5zdHJpbmdpZnkoeworICAgICAgICBkYXRh
OiBkYXRhSW5mbywKKyAgICAgICAgaXRlbXM6IGl0ZW1zSW5mbywKKyAgICAgICAgZmlsZXM6IEFy
cmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKS5tYXAocmVwcmVzZW50YXRpb25Gb3JG
aWxlKQorICAgIH0sIG51bGwsICIgICAgIil9XG5gOworfQorCitmdW5jdGlvbiByZW1vdmVBdChp
dGVtTGlzdCwgaW5kZXgpIHsKKyAgICBjb25zdCByZW1vdmVkSXRlbSA9IGV2ZW50LmRhdGFUcmFu
c2Zlci5pdGVtc1tpbmRleF07CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLnJlbW92ZShp
bmRleCk7CisgICAgcmV0dXJuIHJlbW92ZWRJdGVtOworfQorCitvdXRwdXQuYWRkRXZlbnRMaXN0
ZW5lcigiZHJhZ292ZXIiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTsKK291dHB1
dC5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQo
KSk7Citzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgZXZlbnQgPT4geworICAg
IGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzOworICAgIGV2ZW50LmRh
dGFUcmFuc2Zlci5pdGVtcy5hZGQoImhlbGxvIHdvcmxkIiwgInRleHQvcGxhaW4iKTsKKyAgICB1
cGRhdGVPdXRwdXRUZXh0KCIxLiBBZnRlciBhZGRpbmcgYSBzdHJpbmciLCBldmVudCk7CisKKyAg
ICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIGNvbnN0IGFycmF5ID0g
bmV3IEludDhBcnJheShidWZmZXIpOworICAgIGFycmF5LmZpbGwoMTUpOworICAgIGV2ZW50LmRh
dGFUcmFuc2Zlci5pdGVtcy5hZGQobmV3IEZpbGUoWyBidWZmZXIgXSwgImZvbyIsIHsgdHlwZTog
ImN1c3RvbSIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjIuIEFmdGVyIGFkZGluZyBhIGZp
bGUgb2YgY3VzdG9tIHR5cGUiLCBldmVudCk7CisKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRl
bXMuYWRkKG5ldyBGaWxlKFsKKyAgICAgICAgbmV3IEJsb2IoWyJUaGlzIHBhcnQgaXMgZnJvbSBh
IEphdmFTY3JpcHQgQmxvYiJdLCB7IHR5cGUgOiAidGV4dC9wbGFpbiIgfSksCisgICAgICAgICJU
aGlzIHBhcnQgaXMganVzdCBmcm9tIGEgcGxhaW4gc3RyaW5nIgorICAgIF0sICJmaXJzdC50eHQi
LCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMy4gQWZ0
ZXIgYWRkaW5nIHRoZSBmaXJzdCBwbGFpbiB0ZXh0IGZpbGUiLCBldmVudCk7CisKKyAgICByZW1v
dmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcywgMik7CisgICAgdXBk
YXRlT3V0cHV0VGV4dCgiNC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGxhc3QgZmlsZSIsIGV2ZW50KTsK
KyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVt
b3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMu
YWRkKCI8YT5nb29kYnllIHdvcmxkPC9hPiIsICJ0ZXh0L2h0bWwiKTsKKyAgICB1cGRhdGVPdXRw
dXRUZXh0KCI1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmciLCBldmVudCk7CisKKyAgICBl
dmVudC5kYXRhVHJhbnNmZXIuaXRlbXMuYWRkKG5ldyBGaWxlKFsgIlRoaXMgaXMganVzdCBhIHBs
YWluIHN0cmluZyIgXSwgInNlY29uZC50eHQiLCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KSk7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4gdGV4dCBm
aWxlIiwgZXZlbnQpOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5kYXRhVHJh
bnNmZXIuaXRlbXMsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjcuIEFmdGVyIHJlbW92aW5n
IHRoZSBjdXN0b20gZmlsZSIsIGV2ZW50KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNG
aWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAg
ICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcywgMSk7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiOC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIEhUTUwgc3RyaW5nIiwg
ZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVs
bDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVt
b3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCAxKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0
KCI5LiBBZnRlciByZW1vdmluZyB0aGUgc2Vjb25kIHRleHQgZmlsZSIsIGV2ZW50KTsKKyAgICB3
cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0
ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRh
dGFUcmFuc2Zlci5pdGVtcywgMCk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMTAuIEFmdGVyIHJl
bW92aW5nIHRoZSBwbGFpbiB0ZXh0IHN0cmluZyIsIGV2ZW50KTsKKyAgICB3cml0ZShgcmVtb3Zl
ZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxl
KCl9YCk7CisgICAgd3JpdGUoYFRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlzdCBzaG91bGQgYmUg
dGhlIHNhbWUgb2JqZWN0OiAke2ZpbGVMaXN0ID09IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc31g
KTsKKworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9KTsKKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0cnVlKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygxMDAsIDI1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMDAsIDQw
MCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA0ZjljNDRjMzMwMTEwNGU2Y2FmNDM3YzI0ZGU1M2Q2ZTRmZTJkZmQw
Li4zN2QzY2ZiMTI4MGFjNzUyMzQ1YzBjODQxNTRiOWM0NmQ2MWZlZDVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTExLDMgKzExLDQgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0
LWRhdGEtb24tcGFzdGUtY3VzdG9tLmh0bWwgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLXBhc3RlLXBsYWluLXRleHQuaHRtbCBbIFBhc3MgXQog
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtb24tcGFzdGUtcmljaC10
ZXh0Lmh0bWwgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1k
YXRhLW5vbi1ub3JtYWxpemVkLXR5cGVzLmh0bWwgWyBQYXNzIF0KK2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5Lmh0bWwgWyBQYXNzIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBl
YzQ5ZmM0OGE0ZTliMGIyYTBmNGMzY2I3MGU2ZmQxOWFlOWRlY2RkLi5kZGJiMDgxZGI3MzcxM2Y1
NmNmMTYwOGViNGRhMDE1MGJjYTdkZTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMiw2ICsxMiw3IEBAIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcGxhaW4tdGV4dC5odG1sIFsgUGFzcyBd
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1kcm9wLXJpY2gt
dGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQt
ZGF0YS1vbi1kcm9wLXVybC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1l
bmQtY3Jhc2gtYWNjZXNzaW5nLWl0ZW0tbGlzdC5odG1sIFsgUGFzcyBdCitlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sIFsgUGFz
cyBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3Jt
LXNwZWNpZmljIGRpcmVjdG9yaWVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322691</attachid>
            <date>2017-10-04 11:09:42 -0700</date>
            <delta_ts>2017-10-04 13:30:49 -0700</delta_ts>
            <desc>Support adding and removing the same File</desc>
            <filename>bug-177853-20171004110941.patch</filename>
            <type>text/plain</type>
            <size>52805</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlMGIxZDYzMmQ2MTE5
M2I3OGUwOTNhY2Q4YjQ1MTMwYWY5NDRhNi4uZTBhMDkwM2MzOTZmZDM1YWFjNDI4ZGNhOWNmOWM0
ZmFkZjYzZmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBz
dXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQgdGhhdCB0
YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MDczNDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB2ZXJ5IGJhc2ljIHN1
cHBvcnQgZm9yIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmFkZChGaWxlKS4gU28gZmFyLCBhIEZpbGUg
YWRkZWQgaW4gdGhpcyB3YXkgY2FuIG9ubHkgYmUgcmVhZAorICAgICAgICBiYWNrIGZyb20gdGhl
IHNhbWUgRGF0YVRyYW5zZmVyLCBkdXJpbmcgZHJhZ3N0YXJ0IG9yIGNvcHkuIFRoaXMgRmlsZSBp
c24ndCB3cml0dGVuIHRvIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkCisgICAgICAgIHlldCwgc28g
ZXZlbiBkcm9wcGluZyBvciBwYXN0aW5nIGluIHRoZSBzYW1lIHBhZ2Ugd2lsbCBub3QgdHJhbnNm
ZXIgdGhlIEZpbGUsIGJ1dCB0aGlzIGJyaW5ncyB1cyBjbG9zZXIgdG8KKyAgICAgICAgcGFyaXR5
IHdpdGggb3RoZXIgYnJvd3NlcnMuIFNlZSBwZXItbWV0aG9kIGNvbW1lbnRzIGZvciBkZXRhaWxz
LgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVt
LWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMuaHRtbAorICAgICAgICAgICAgICAgZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRt
bAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldEZpbGVMaXN0TmVlZHNVcGRh
dGUpOgorCisgICAgICAgIEludmFsaWRhdGUgdGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0LiBU
aGlzIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGRlc3Ryb3lpbmcgdGhlIEZpbGVMaXN0IGFsdG9n
ZXRoZXIsIGJ1dCB3ZQorICAgICAgICBhdm9pZCB0aGF0IGFwcHJvYWNoIGJlY2F1c2UgdGhlIEZp
bGVMaXN0IG9iamVjdCBuZWVkcyB0byBtYWludGFpbiB0aGUgc2FtZSBET00gd3JhcHBlciwgZXZl
biBhZnRlciBpbnZhbGlkYXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
aXRlbUxpc3REaWRBZGRGaWxlKToKKworICAgICAgICBBZGQgdGhlIG5ld2x5IGFwcGVuZGVkIERh
dGFUcmFuc2Zlckl0ZW0ncyBGaWxlIHRvIHRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlzdC4KKwor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjp0eXBlcyBjb25zdCk6CisKKyAgICAgICAg
UmV0dXJuIG9ubHkgdGhlICJGaWxlcyIgdHlwZSBpZiB0aGVyZSBhcmUgZmlsZS1iYWNrZWQgaXRl
bXMgaW4gdGhlIERhdGFUcmFuc2ZlcidzIGl0ZW0gbGlzdC4KKworICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVyOjpmaWxlcyBjb25zdCk6CisKKyAgICAgICAgUmVwb3B1bGF0ZSB0aGUgRmls
ZUxpc3QgaWYgZWl0aGVyIHRoZSBGaWxlTGlzdCBoYXNuJ3QgYmVlbiBpbml0aWFsaXplZCwgb3Ig
bV9maWxlTGlzdE5lZWRzVXBkYXRlIGlzIHRydWUuCisgICAgICAgIG1fZmlsZUxpc3ROZWVkc1Vw
ZGF0ZSBpcyByZXNldCB0byBmYWxzZSBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmZpbGUgY29uc3QpOgor
ICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6YWRkKToKKworICAgICAgICBJbnN0ZWFkIG9mIGludmFs
aWRhdGluZyB0aGUgRmlsZUxpc3QgaGVyZSBhbmQgaGF2aW5nIHRvIHJlZ2VuZXJhdGUgaXQgbGF0
ZXIsIHdlIGNhbiBzaW1wbHkgYXBwZW5kIHRoZSBuZXdseQorICAgICAgICBhZGRlZCBGaWxlLWJh
Y2tlZCBpdGVtJ3MgRmlsZSB0byBvdXIgRmlsZUxpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1vdmUpOgorCisgICAgICAgIFdoZW4gcmVtb3ZpbmcgYSBG
aWxlLCBvbmx5IGNsZWFyIGZyb20gdGhlIERhdGFUcmFuc2ZlcidzIHBhc3RlYm9hcmQgaWYgdGhl
IHJlbW92ZWQgaXRlbSBpcyBub3QgYSBGaWxlIChvdGhlcndpc2UsCisgICAgICAgIGNsZWFyaW5n
IGEgRmlsZSB0aGF0IHNoYXJlcyB0aGUgc2FtZSB0eXBlIGFzIHNvbWUgb3RoZXIgaXRlbSBpbiB0
aGUgcGFzdGVib2FyZCB3aWxsIGVycm9uZW91c2x5IGNsZWFyIHRoYXQgb3RoZXIKKyAgICAgICAg
aXRlbSBhcyB3ZWxsKS4gQWRkaXRpb25hbGx5LCBjYWxsIG91dCB0byB0aGUgRGF0YVRyYW5zZmVy
IHRvIGludmFsaWRhdGUgdGhlIEZpbGVMaXN0LgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorCisgICAgICAgIElmIGEgRmlsZS1iYWNrZWQgaXRlbSB3
YXMgcmVtb3ZlZCB3aGVuIGNsZWFyaW5nIG91dCB0aGUgaXRlbSBsaXN0LCBpbnZhbGlkYXRlIHRo
ZSBEYXRhVHJhbnNmZXIncyBjdXJyZW50IEZpbGVMaXN0CisgICAgICAgIGJ5IGNsZWFyaW5nIHRo
ZSBsaXN0IG9mIEZpbGVzIGFuZCBzZXR0aW5nIGEgZmxhZy4KKworICAgICAgICAqIGRvbS9EYXRh
VHJhbnNmZXJJdGVtTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxp
c3Q6Omhhc0l0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1M
aXN0OjppdGVtcyBjb25zdCk6CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGRpcmVjdGx5IGFj
Y2Vzc2luZyBhbiBpdGVtIGxpc3QncyBpdGVtcy4gaXRlbXMoKSBzaG91bGQgYmUgdXNlZCBpbiBj
b25qdW5jdGlvbiB3aXRoIGhhc0l0ZW1zKCkuCisgICAgICAgIFRoaXMgcm91dGUgaXMgdGFrZW4g
dG8gKDEpIGF2b2lkIGhhdmluZyB0byBjb3B5IHRoZSB2ZWN0b3Igb2YgRmlsZXMsIGFuZCAoMikg
dG8gYXZvaWQgZ2VuZXJhdGluZyBtX2l0ZW1zIGlmIGl0CisgICAgICAgIGRvZXNuJ3QgYWxyZWFk
eSBleGlzdC4KKwogMjAxNy0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJbnRlcm1pdHRlbnQgY3Jhc2gg
d2hpbGUgYWNjZXNzaW5nIERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwCmluZGV4IGFkZGVmMGY5MTczYzQ1NmE4MWVhZTc0OTA1MTI0ZjBjMmY0OTNmZTIu
LjA0OGI0YzA5ZTI1ZjZjZjRiM2FhMTQwYTExZGJiYTVkZTE4MjlkMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJ
bWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YVRy
YW5zZmVySXRlbS5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVk
ZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTE2MSw2ICsxNjIsMjkgQEAg
dm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpCiAgICAgICAgIG1faXRlbUxpc3QtPmRpZFNldFN0cmluZ0RhdGEobm9ybWFsaXpl
ZFR5cGUpOwogfQogCit2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RmlsZUxpc3ROZWVkc1VwZGF0ZSgp
Cit7CisgICAgLy8gSWYgd2UncmUgcmVtb3ZpbmcgYW4gaXRlbSwgdGhlbiB0aGUgaXRlbSBtdXN0
IGV4aXN0LCB3aGljaCBpbXBsaWVzIHRoYXQgdGhlIGZpbGUgbGlzdCBtdXN0IGhhdmUgYmVlbiBp
bml0aWFsaXplZCBhbHJlYWR5LgorICAgIEFTU0VSVChtX2ZpbGVMaXN0KTsKKyAgICBBU1NFUlQo
Y2FuV3JpdGVEYXRhKCkpOworCisgICAgLy8gV2UgZG9uJ3QgZGVzdHJveSBhbmQgcmVjcmVhdGUg
dGhlIGVudGlyZSBGaWxlTGlzdCBoZXJlIGJlY2F1c2UgdGhlIEZpbGVMaXN0IG9iamVjdCBuZWVk
cyB0byBzdGF5IHRoZSBzYW1lLCBwZXIgdGhlIERhdGFUcmFuc2ZlciBzcGVjLgorICAgIC8vIElu
c3RlYWQsIGZsYWcgdGhlIGZpbGUgbGlzdCBmb3IgYW4gdXBkYXRlLCBzbyB0aGUgbmV4dCB0aW1l
IGl0IGlzIHF1ZXJpZWQsIHdlIHJlY29tcHV0ZSB0aGUgc3RhdGUsIHJlc3BlY3RpbmcgYW55IHVw
ZGF0ZWQgZGF0YSB0cmFuc2ZlciBpdGVtcy4KKyAgICBtX2ZpbGVMaXN0LT5jbGVhcigpOworICAg
IG1fZmlsZUxpc3ROZWVkc1VwZGF0ZSA9IHRydWU7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVyOjpp
dGVtTGlzdERpZEFkZEZpbGUoKQoreworICAgIEFTU0VSVChjYW5Xcml0ZURhdGEoKSk7CisgICAg
aWYgKCFtX2ZpbGVMaXN0IHx8IG1fZmlsZUxpc3ROZWVkc1VwZGF0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgbmV3SXRlbSA9IG1faXRlbUxpc3QtPml0ZW1zKCkubGFzdCgpOworICAg
IEFTU0VSVChuZXdJdGVtLT5pc0ZpbGUoKSk7CisgICAgbV9maWxlTGlzdC0+YXBwZW5kKCpuZXdJ
dGVtLT5maWxlKCkpOworfQorCiBEYXRhVHJhbnNmZXJJdGVtTGlzdCYgRGF0YVRyYW5zZmVyOjpp
dGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQpAQCAtMTgxLDYgKzIwNSw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFUcmFuc2Zlcjo6dHlwZXMoKSBjb25zdAogICAgICAgICByZXR1cm4gdHlw
ZXM7CiAgICAgfQogCisgICAgaWYgKG1faXRlbUxpc3QgJiYgbV9pdGVtTGlzdC0+aGFzSXRlbXMo
KSAmJiBtX2l0ZW1MaXN0LT5pdGVtcygpLmZpbmRNYXRjaGluZyhbXSAoY29uc3QgYXV0byYgaXRl
bSkgeyByZXR1cm4gaXRlbS0+aXNGaWxlKCk7IH0pICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4geyAiRmlsZXMiIH07CisKICAgICBpZiAobV9wYXN0ZWJvYXJkLT5jb250YWluc0ZpbGVzKCkp
IHsKICAgICAgICAgQVNTRVJUKCFtX3Bhc3RlYm9hcmQtPnR5cGVzU2FmZUZvckJpbmRpbmdzKCku
Y29udGFpbnMoIkZpbGVzIikpOwogICAgICAgICByZXR1cm4geyAiRmlsZXMiIH07CkBAIC0xOTgs
MjIgKzIyNSwzMSBAQCBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0CiAgICAg
ICAgICAgICBtX2ZpbGVMaXN0LT5jbGVhcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2ZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOworCisgICAgICAgIG1fZmlsZUxpc3ROZWVk
c1VwZGF0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4gKm1fZmlsZUxpc3Q7CiAgICAgfQogCi0g
ICAgaWYgKGZvckRyYWcoKSAmJiAhZm9yRmlsZURyYWcoKSkgewotICAgICAgICBpZiAobV9maWxl
TGlzdCkKLSAgICAgICAgICAgIEFTU0VSVChtX2ZpbGVMaXN0LT5pc0VtcHR5KCkpOworICAgIGlm
ICghbV9maWxlTGlzdCB8fCBtX2ZpbGVMaXN0TmVlZHNVcGRhdGUpIHsKKyAgICAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CisgICAgICAgIGlmICghZm9yRHJhZygpIHx8IGZvckZpbGVEcmFn
KCkpIHsKKyAgICAgICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXI7Cisg
ICAgICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKKyAgICAgICAgICAgIGZpbGVz
ID0gV1RGTW92ZShyZWFkZXIuZmlsZXMpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2l0ZW1M
aXN0ICYmIG1faXRlbUxpc3QtPmhhc0l0ZW1zKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IG1faXRlbUxpc3QtPml0ZW1zKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBm
aWxlID0gaXRlbS0+ZmlsZSgpKQorICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoKmZp
bGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbV9maWxlTGlzdCkK
KyAgICAgICAgICAgIG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVh
dGUoKTsKLSAgICAgICAgcmV0dXJuICptX2ZpbGVMaXN0OworICAgICAgICAgICAgbV9maWxlTGlz
dC0+bV9maWxlcyA9IFdURk1vdmUoZmlsZXMpOwogICAgIH0KIAotICAgIGlmICghbV9maWxlTGlz
dCkgewotICAgICAgICBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyOwotICAgICAg
ICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKLSAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVM
aXN0OjpjcmVhdGUoV1RGTW92ZShyZWFkZXIuZmlsZXMpKTsKLSAgICB9CisgICAgbV9maWxlTGlz
dE5lZWRzVXBkYXRlID0gZmFsc2U7CiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggMDlkNGRmZjMyYjExZmI4ZmVmMmUwN2JjOGUxNWIz
YzQwNWUyZjE2Zi4uM2JhNjdhMzZjMGI3ZGVlZTAzMTdmOWU0YzA3ZDI4MTBhNDgyOWY3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApAQCAtMzIsMTAgKzMyLDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBEYXRhVHJhbnNmZXJJdGVtTGlz
dDsKK2NsYXNzIERhdGFUcmFuc2Zlckl0ZW07CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIERyYWdJ
bWFnZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxlTGlzdDsKK2NsYXNzIEZpbGU7
CiBjbGFzcyBQYXN0ZWJvYXJkOwogCiBjbGFzcyBEYXRhVHJhbnNmZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxEYXRhVHJhbnNmZXI+IHsKQEAgLTk5LDYgKzEwMSw5IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc0RyYWdJbWFnZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIGl0ZW1MaXN0RGlkQWRk
RmlsZSgpOworICAgIHZvaWQgc2V0RmlsZUxpc3ROZWVkc1VwZGF0ZSgpOworCiBwcml2YXRlOgog
ICAgIGVudW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQYXN0ZSwgRHJhZ0FuZERyb3BEYXRhLCBEcmFn
QW5kRHJvcEZpbGVzLCBJbnB1dEV2ZW50IH07CiAgICAgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZSwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gVHlwZTo6Q29weUFuZFBhc3RlKTsK
QEAgLTExNiw2ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJh
bnNmZXJJdGVtTGlzdD4gbV9pdGVtTGlzdDsKIAogICAgIG11dGFibGUgUmVmUHRyPEZpbGVMaXN0
PiBtX2ZpbGVMaXN0OworICAgIG11dGFibGUgYm9vbCBtX2ZpbGVMaXN0TmVlZHNVcGRhdGUgeyB0
cnVlIH07CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFR5cGUgbV90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKaW5kZXggOWFjMTFlN2NiMzM1ZjczMTAwM2Zh
MTY1YTE4NjI0ZmU3ZmFlZTI1Ni4uOTY4NTUyOTE4N2U2NmQ0MzliYmY1MDJhNzA3NmQwNmI0ODhj
OTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCkBAIC01NCw2ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIH5EYXRhVHJhbnNmZXJJdGVtKCk7CiAKKyAgICBSZWZQdHI8Rmls
ZT4gZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZTsgfQogICAgIHZvaWQgY2xlYXJMaXN0QW5k
UHV0SW50b0Rpc2FibGVkTW9kZSgpOwogCiAgICAgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVy
biBtX2ZpbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3Bw
CmluZGV4IDU5NzA0YjRiNTYwYzhkNjNkOGQxYmU3YWY4NmE1MjgyZWQyYWIyODMuLmI2M2U3MmVj
ZjZiNDgxZDI2ZDVmZTRjNzFiZTZkM2Y5YTRkNTFlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcApAQCAtODQsOSArODQsMTQgQEAgRXhjZXB0aW9uT3I8
UmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+PiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6YWRkKGNvbnN0
IFN0cmluZyYgZGEKICAgICByZXR1cm4gUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IHsgbV9pdGVt
cy0+bGFzdCgpLmNvcHlSZWYoKSB9OwogfQogCi1SZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0
YVRyYW5zZmVySXRlbUxpc3Q6OmFkZChSZWY8RmlsZT4mJikKK1JlZlB0cjxEYXRhVHJhbnNmZXJJ
dGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6YWRkKFJlZjxGaWxlPiYmIGZpbGUpCiB7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX2RhdGFUcmFuc2Zlci5jYW5Xcml0ZURhdGEoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBlbnN1cmVJdGVtcygpLmFwcGVuZChEYXRh
VHJhbnNmZXJJdGVtOjpjcmVhdGUobV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlz
KSwgZmlsZS0+dHlwZSgpLCBmaWxlLmNvcHlSZWYoKSkpOworICAgIG1fZGF0YVRyYW5zZmVyLml0
ZW1MaXN0RGlkQWRkRmlsZSgpOworICAgIHJldHVybiBSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4g
eyBtX2l0ZW1zLT5sYXN0KCkucHRyKCkgfTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRy
YW5zZmVySXRlbUxpc3Q6OnJlbW92ZSh1bnNpZ25lZCBpbmRleCkKQEAgLTk4LDEzICsxMDMsMTYg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSh1bnNpZ25l
ZCBpbmRleCkKICAgICBpZiAoaXRlbXMuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsgLy8gTWF0Y2hlcyBHZWNrby4gU2VlIGh0dHBz
Oi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjkyNQogCi0gICAgLy8gRklYTUU6IEhh
bmRsZSB0aGUgcmVtb3ZhbCBvZiBmaWxlcyBvbmNlIHdlIGFkZGVkIHRoZSBzdXBwb3J0IGZvciB3
cml0aW5nIGEgRmlsZS4KLSAgICBBU1NFUlQoIWl0ZW1zW2luZGV4XS0+aXNGaWxlKCkpOwotCisg
ICAgLy8gU2luY2UgZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRlbXMgYXJlIG5vdCBhY3R1YWxs
eSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHlldCwgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUg
YW55CisgICAgLy8gdGVtcG9yYXJ5IGZpbGVzLiBXaGVuIHdlIHN1cHBvcnQgd3JpdGluZyBmaWxl
LWJhY2tlZCBEYXRhVHJhbnNmZXJJdGVtcyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCwgd2Ug
d2lsbCBuZWVkCisgICAgLy8gdG8gY2xlYW4gdXAgaGVyZS4KICAgICBhdXRvJiByZW1vdmVkSXRl
bSA9IGl0ZW1zW2luZGV4XS5nZXQoKTsKLSAgICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
Y2xlYXIocmVtb3ZlZEl0ZW0udHlwZSgpKTsKKyAgICBpZiAoIXJlbW92ZWRJdGVtLmlzRmlsZSgp
KQorICAgICAgICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuY2xlYXIocmVtb3ZlZEl0ZW0u
dHlwZSgpKTsKICAgICByZW1vdmVkSXRlbS5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2Rl
KCk7CiAgICAgaXRlbXMucmVtb3ZlKGluZGV4KTsKKyAgICBpZiAocmVtb3ZlZEl0ZW0uaXNGaWxl
KCkpCisgICAgICAgIG1fZGF0YVRyYW5zZmVyLnNldEZpbGVMaXN0TmVlZHNVcGRhdGUoKTsKIAog
ICAgIHJldHVybiB7IH07CiB9CkBAIC0xMTIsMTEgKzEyMCwxNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQogdm9pZCBEYXRh
VHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIoKQogewogICAgIG1fZGF0YVRyYW5zZmVyLnBhc3RlYm9h
cmQoKS5jbGVhcigpOworICAgIGJvb2wgcmVtb3ZlZEl0ZW1Db250YWluaW5nRmlsZSA9IGZhbHNl
OwogICAgIGlmIChtX2l0ZW1zKSB7Ci0gICAgICAgIGZvciAoYXV0byYgaXRlbSA6ICptX2l0ZW1z
KQorICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiAqbV9pdGVtcykgeworICAgICAgICAgICAgcmVt
b3ZlZEl0ZW1Db250YWluaW5nRmlsZSB8PSBpdGVtLT5pc0ZpbGUoKTsKICAgICAgICAgICAgIGl0
ZW0tPmNsZWFyTGlzdEFuZFB1dEludG9EaXNhYmxlZE1vZGUoKTsKKyAgICAgICAgfQogICAgICAg
ICBtX2l0ZW1zLT5jbGVhcigpOwogICAgIH0KKworICAgIGlmIChyZW1vdmVkSXRlbUNvbnRhaW5p
bmdGaWxlKQorICAgICAgICBtX2RhdGFUcmFuc2Zlci5zZXRGaWxlTGlzdE5lZWRzVXBkYXRlKCk7
CiB9CiAKIFZlY3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlz
dDo6ZW5zdXJlSXRlbXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRl
bUxpc3QuaAppbmRleCBmY2U2OTQ3NDFjMmQ2NDUxZDY4ZjE1ZDkzMjlkNThmNWIwN2E4OWYwLi4x
MzEyMGU1NGFkMzY4MGFlNjY5ODNjZmZlMmNjYTJkNDRiYjY3YjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaApAQCAtNjUsNiArNjUsMTIgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaWRDbGVhclN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2
b2lkIGRpZFNldFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBib29sIGhhc0l0
ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5oYXNfdmFsdWUoKTsgfQorICAgIGNvbnN0IFZl
Y3RvcjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBpdGVtcygpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV9pdGVtcyk7CisgICAgICAgIHJldHVybiAqbV9pdGVtczsKKyAgICB9CiAKIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4mIGVuc3VyZUl0ZW1zKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTlmNmJlMGEzYjllNjA1ZDkxOGM5MmRkMjExZGM3ZDk5MzgxMjM0My4u
ZDVkMmQ5MWNlODU4MDFhZjk4M2ViMWY3ZjdmOWZiMzY3ZTkxZjg0NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDE3LTEwLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJh
bnNmZXJJdGVtTGlzdC5hZGQgdGhhdCB0YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzQ4MDczNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHRlc3RzIHRvIHZlcmlmeSB0aGF0IEZpbGVzIGNhbiBiZSBhZGRlZCB0byBhbmQg
cmVtb3ZlZCBmcm9tIHRoZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5kIGFsc28gcmVhZCBiYWNr
IHZpYQorICAgICAgICBib3RoIHRoZSBpdGVtIGxpc3QgYW5kIHRoZSBEYXRhVHJhbnNmZXIncyBG
aWxlTGlzdCB3aGVuIGNvcHlpbmcgYW5kIGRyYWdnaW5nLiBBZGRpdGlvbmFsbHksIGFkZHMgYSB0
ZXN0IHRoYXQgYWRkcworICAgICAgICBhbmQgcmVtb3ZlcyB0aGUgc2FtZSBGaWxlIHRvIHRoZSBE
YXRhVHJhbnNmZXJJdGVtTGlzdCBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRl
bS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxl
LW11bHRpcGxlLXRpbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0xMC0wMiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJ
bnRlcm1pdHRlbnQgY3Jhc2ggd2hpbGUgYWNjZXNzaW5nIERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBmNmRmZjQzMTY4M2NhMGU4MmUwYjgyYmY2NzlkYzhhN2E2NzZi
MWU4Li45ZDg5ZDczOThlMTA2NjMxMGIwOTFhNGE0NGJkNTA3ZTNlYTQ1MTY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTcxLDYgKzcxLDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNm
ZXItZ2V0LWRhdGEtb24tZHJvcC1wbGFpbi10ZXh0Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcmljaC10ZXh0Lmh0bWwgWyBT
a2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3At
dXJsLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWVuZC1jcmFzaC1hY2Nl
c3NpbmctaXRlbS1saXN0Lmh0bWwgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5
IGlPUyBzdXBwb3J0cyBRdWlja0xvb2sKIHF1aWNrbG9vayBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1l
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUwNjUzOTJlYzgyMDAyMWYzZWIzZjk3ZmRmYjgz
YzdlYTVmYTlkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0MDIgQEAKK0NvcHkgdGhpcyB0ZXh0IQorVG8gbWFudWFsbHkg
dGVzdCwgY29weSB0aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBkdW1wcyBEYXRhVHJh
bnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLAorCitkZXNjcmliZWQgZGlyZWN0
bHkgYWJvdmUgdGhlIG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBEYXRhVHJhbnNmZXIg
c3RhdGUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUKKworb3BlcmF0aW9uIHBlcmZvcm1l
ZCBhdCBlYWNoIHN0ZXAuCisKKworMS4gQWZ0ZXIgYWRkaW5nIGFsbCBpdGVtcworeworICAgICJk
YXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAg
ICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJr
aW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAg
ImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAi
bmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAg
ICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAg
ICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAor
ICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAg
ICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAs
CisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAg
ICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAg
ICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CisKKzIuIEFm
dGVyIHJlbW92aW5nIGF0IGluZGV4IDQKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVz
IjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAg
ICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAg
ICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3Bs
YWluIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAg
ICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAg
ICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAg
ICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3VyaS1saXN0IiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0
IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmls
ZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAg
ICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAg
ICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisg
ICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
CisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUg
bnVsbDogbnVsbAorCiszLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAxCit7CisgICAgImRhdGEi
OiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2lu
ZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAgICAgICAg
ImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAg
ICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
ZmlsZS50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0Zp
bGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis0LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAz
Cit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRl
bXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAg
ICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAs
CisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3Qi
LAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVs
bAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzUuIEFmdGVyIGNsZWFyaW5n
IGl0ZW1zCit7CisgICAgImRhdGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMi
OiBbXQorfQorCis2LiBBZnRlciBhZGRpbmcgdHdvIGZpbGVzIGFuZCBzb21lIHN0cmluZyBkYXRh
IGFnYWluCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAg
ICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
LAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVz
IjogMjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9odG1s
IiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51
bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFp
biIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBu
dWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxh
aW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5
dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAor
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KKwor
Ny4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMgoreworICAgICJkYXRhIjogeworICAgICAgICAi
RmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAg
ICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAor
ICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRl
eHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAor
ICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisg
ICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIs
CisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVz
IjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAg
ICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAg
ICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxs
OiBudWxsCisKKzguIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIKK3sKKyAgICAiZGF0YSI6IHsK
KyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJm
aWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZp
bGUudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAi
c3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAg
ICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwK
KyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFp
biIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBi
ZSBudWxsOiBudWxsCisKKzkuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDEKK3sKKyAgICAiZGF0
YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2lu
ZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1l
IjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAg
ICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
XSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUu
dHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4
dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNo
b3VsZCBiZSBudWxsOiBudWxsCisKKzEwLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAwCit7Cisg
ICAgImRhdGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVt
b3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKK1RoZSBEYXRhVHJhbnNm
ZXIncyBGaWxlTGlzdCBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0OiB0cnVlCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlz
dC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGMyZjhiYjUxYjUzNDk3YzYzMWVmYWQ5MjYzYTE5ZjFlNzI4ZjEyZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy5odG1sCkBAIC0wLDAgKzEs
MTE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzdHlsZT4KK2JvZHksIGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAg
IGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46IDA7Cit9Cis8L3N0eWxlPgorPGJvZHk+CisgICAg
PGRpdiBzdHlsZT0iZm9udC1zaXplOiA0MHB4OyIgaWQ9InNvdXJjZSI+Q29weSB0aGlzIHRleHQh
PC9kaXY+CisgICAgPHA+VG8gbWFudWFsbHkgdGVzdCwgY29weSB0aGUgYWJvdmUgdGV4dC4gVGhl
IG91dHB1dCBiZWxvdyBkdW1wcyBEYXRhVHJhbnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3Bl
cmF0aW9uLDwvcD4KKyAgICA8cD5kZXNjcmliZWQgZGlyZWN0bHkgYWJvdmUgdGhlIG91dHB1dCB0
ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBEYXRhVHJhbnNmZXIgc3RhdGUgc2hvdWxkIGJlIGNvbnNp
c3RlbnQgd2l0aCB0aGU8L3A+CisgICAgPHA+b3BlcmF0aW9uIHBlcmZvcm1lZCBhdCBlYWNoIHN0
ZXAuPC9wPgorICAgIDxwcmUgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCUiIGlkPSJv
dXRwdXQiPjwvcHJlPgorPC9ib2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHdyaXRlKG1lc3NhZ2Up
IHsKKyAgICBvdXRwdXQudGV4dENvbnRlbnQgKz0gYCR7bWVzc2FnZX1cbmA7Cit9CisKK2Z1bmN0
aW9uIHJlcHJlc2VudGF0aW9uRm9yRmlsZShmaWxlKSB7CisgICAgcmV0dXJuIGZpbGUgPyB7Cisg
ICAgICAgIG5hbWU6IGZpbGUubmFtZSwKKyAgICAgICAgYnl0ZXM6IGZpbGUuc2l6ZSwKKyAgICAg
ICAgdHlwZTogZmlsZS50eXBlCisgICAgfSA6IG51bGw7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUF0
KGl0ZW1MaXN0LCBpbmRleCkgeworICAgIGNvbnN0IHJlbW92ZWRJdGVtID0gaXRlbUxpc3RbaW5k
ZXhdOworICAgIGl0ZW1MaXN0LnJlbW92ZShpbmRleCk7CisgICAgcmV0dXJuIHJlbW92ZWRJdGVt
OworfQorCitmdW5jdGlvbiB1cGRhdGVPdXRwdXRUZXh0KGRlc2NyaXB0aW9uLCBldmVudCkgewor
ICAgIGNvbnN0IGRhdGFJbmZvID0ge307CisgICAgZm9yIChjb25zdCB0eXBlIG9mIGV2ZW50LmNs
aXBib2FyZERhdGEudHlwZXMpCisgICAgICAgIGRhdGFJbmZvW3R5cGVdID0gZXZlbnQuY2xpcGJv
YXJkRGF0YS5nZXREYXRhKHR5cGUpOworICAgIGNvbnN0IGl0ZW1zSW5mbyA9IFtdCisgICAgZm9y
IChjb25zdCBpdGVtIG9mIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMpIHsKKyAgICAgICAgaXRl
bXNJbmZvLnB1c2goeworICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLAorICAgICAgICAgICAg
a2luZDogaXRlbS5raW5kLAorICAgICAgICAgICAgZmlsZTogcmVwcmVzZW50YXRpb25Gb3JGaWxl
KGl0ZW0uZ2V0QXNGaWxlKCkpCisgICAgICAgIH0pOworICAgIH0KKyAgICBvdXRwdXQudGV4dENv
bnRlbnQgKz0gYFxuJHtkZXNjcmlwdGlvbn1cbiR7SlNPTi5zdHJpbmdpZnkoeworICAgICAgICBk
YXRhOiBkYXRhSW5mbywKKyAgICAgICAgaXRlbXM6IGl0ZW1zSW5mbywKKyAgICAgICAgZmlsZXM6
IEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlcykubWFwKHJlcHJlc2VudGF0aW9u
Rm9yRmlsZSkKKyAgICB9LCBudWxsLCAiICAgICIpfVxuYDsKK30KKworc291cmNlLmFkZEV2ZW50
TGlzdGVuZXIoImNvcHkiLCBldmVudCA9PiB7CisgICAgY29uc3QgZmlsZUxpc3QgPSBldmVudC5j
bGlwYm9hcmREYXRhLmZpbGVzOworICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbICJUaGlzIGlz
IGEgdGV4dCBmaWxlLiIgXSwgImZpbGUudHh0IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSk7CisK
KyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICBldmVudC5jbGlw
Ym9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1z
LmFkZCgicGxhaW4gdGV4dCBzdHJpbmciLCAidGV4dC9wbGFpbiIpOworICAgIGV2ZW50LmNsaXBi
b2FyZERhdGEuaXRlbXMuYWRkKCJodHRwczovL3dlYmtpdC5vcmciLCAidGV4dC91cmktbGlzdCIp
OworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKGZpbGUpOworICAgIGV2ZW50LmNs
aXBib2FyZERhdGEuaXRlbXMuYWRkKGZpbGUpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjEuIEFm
dGVyIGFkZGluZyBhbGwgaXRlbXMiLCBldmVudCk7CisKKyAgICBsZXQgcmVtb3ZlZEl0ZW0gPSBy
ZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCA0KTsKKyAgICB1cGRhdGVPdXRwdXRU
ZXh0KCIyLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCA0IiwgZXZlbnQpOworICAgIHdyaXRlKGBy
ZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJk
RGF0YS5pdGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMy4gQWZ0ZXIgcmVtb3Zpbmcg
YXQgaW5kZXggMSIsIGV2ZW50KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkg
c2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICByZW1v
dmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMsIDMpOworICAgIHVw
ZGF0ZU91dHB1dFRleHQoIjQuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDMiLCBldmVudCk7Cisg
ICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92
ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5j
bGVhcigpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjUuIEFmdGVyIGNsZWFyaW5nIGl0ZW1zIiwg
ZXZlbnQpOworCisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoZmlsZSk7CisgICAg
ZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoIjxzdHJvbmc+c29tZSBzdHlsZWQgdGV4dDwv
c3Ryb25nPiIsICJ0ZXh0L2h0bWwiKTsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFk
ZCgic29tZSBwbGFpbiB0ZXh0IiwgInRleHQvcGxhaW4iKTsKKyAgICBldmVudC5jbGlwYm9hcmRE
YXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI2LiBBZnRlciBhZGRp
bmcgdHdvIGZpbGVzIGFuZCBzb21lIHN0cmluZyBkYXRhIGFnYWluIiwgZXZlbnQpOworCisgICAg
cmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAyKTsKKyAg
ICB1cGRhdGVPdXRwdXRUZXh0KCI3LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAyIiwgZXZlbnQp
OworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHty
ZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQo
ZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMik7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiOC4g
QWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMiIsIGV2ZW50KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0
ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9
YCk7CisKKyAgICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmNsaXBib2FyZERhdGEuaXRl
bXMsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjkuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4
IDEiLCBldmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBi
ZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgcmVtb3ZlZEl0ZW0g
PSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAwKTsKKyAgICB1cGRhdGVPdXRw
dXRUZXh0KCIxMC4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMCIsIGV2ZW50KTsKKyAgICB3cml0
ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0u
Z2V0QXNGaWxlKCl9YCk7CisgICAgd3JpdGUoYFRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlzdCBz
aG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0OiAke2ZpbGVMaXN0ID09IGV2ZW50LmNsaXBib2FyZERh
dGEuZmlsZXN9YCk7CisKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSk7CisKK2dldFNl
bGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoc291cmNlLCAwLCBzb3VyY2UsIDEpOworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiKTsKK30K
Kzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZGY2N2NhZWQx
YjExNzhjNDJmOGM1ZDAwYjU5NTQ3NzFlNmNlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUt
b24tY29weS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMDQgQEAKK0NvcHkgdGhpcyB0ZXh0IQor
VG8gbWFudWFsbHkgdGVzdCwgY29weSB0aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBk
dW1wcyBEYXRhVHJhbnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLAorCitkZXNj
cmliZWQgZGlyZWN0bHkgYWJvdmUgdGhlIG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBE
YXRhVHJhbnNmZXIgc3RhdGUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUKKworb3BlcmF0
aW9uIHBlcmZvcm1lZCBhdCBlYWNoIHN0ZXAuCisKKworMS4gQWZ0ZXIgYWRkaW5nIGEgc3RyaW5n
Cit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxkIgor
ICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAi
ZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogW10KK30KKworMi4g
QWZ0ZXIgYWRkaW5nIGEgZmlsZSBvZiBjdXN0b20gdHlwZQoreworICAgICJkYXRhIjogeworICAg
ICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmlu
ZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAor
ICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAg
ICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0
b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAg
ICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRlcyI6
IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9CisgICAgXQorfQor
CiszLiBBZnRlciBhZGRpbmcgdGhlIGZpcnN0IHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRh
IjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
Zm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIs
CisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaXJzdC50
eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDcyLAorICAgICAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJm
aWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAg
ICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaXJzdC50eHQiLAorICAgICAgICAg
ICAgImJ5dGVzIjogNzIsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAg
ICB9CisgICAgXQorfQorCis0LiBBZnRlciByZW1vdmluZyB0aGUgbGFzdCBmaWxlCit7CisgICAg
ImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAg
ImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtp
bmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJmb28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAg
ICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAg
ImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAg
ICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAg
IH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVs
bAorCis1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAg
ICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJp
bmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisg
ICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5cGUiOiAiY3Vz
dG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMi
OiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfQorICAgIF0KK30K
KworNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4gdGV4dCBmaWxlCit7CisgICAgImRhdGEi
OiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAi
ZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJm
b28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBl
IjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50
eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJm
aWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAg
ICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAg
ICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAg
ICAgfQorICAgIF0KK30KKworNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlCit7Cisg
ICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAg
ICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAg
ICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAg
ICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjcsCisg
ICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDI3LAorICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdl
dEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzguIEFmdGVyIHJlbW92aW5nIHRoZSBI
VE1MIHN0cmluZworeworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0s
CisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3Bs
YWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6
IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjog
eworICAgICAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgICAg
ICJieXRlcyI6IDI3LAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAy
NywKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9
CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis5LiBBZnRl
ciByZW1vdmluZyB0aGUgc2Vjb25kIHRleHQgZmlsZQoreworICAgICJkYXRhIjogeworICAgICAg
ICAidGV4dC9wbGFpbiI6ICJoZWxsbyB3b3JsZCIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAg
ICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAi
a2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAg
ICBdLAorICAgICJmaWxlcyI6IFtdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQg
YmUgbnVsbDogbnVsbAorCisxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHBsYWluIHRleHQgc3RyaW5n
Cit7CisgICAgImRhdGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQor
fQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKK1RoZSBEYXRh
VHJhbnNmZXIncyBGaWxlTGlzdCBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0OiB0cnVlCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY0N2FmODZjMDM4MjcwZDNmODg3ZDE5ZjBjM2EyNWMwN2U3NmM5N2QKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRl
dmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
dHlsZT4KK2JvZHksIGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsK
KyAgICBtYXJnaW46IDA7Cit9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBzdHlsZT0iZm9u
dC1zaXplOiA0MHB4OyIgaWQ9InNvdXJjZSI+Q29weSB0aGlzIHRleHQhPC9kaXY+CisgICAgPHA+
VG8gbWFudWFsbHkgdGVzdCwgY29weSB0aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBk
dW1wcyBEYXRhVHJhbnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLDwvcD4KKyAg
ICA8cD5kZXNjcmliZWQgZGlyZWN0bHkgYWJvdmUgdGhlIG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0
ZXAuIFRoZSBEYXRhVHJhbnNmZXIgc3RhdGUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGU8
L3A+CisgICAgPHA+b3BlcmF0aW9uIHBlcmZvcm1lZCBhdCBlYWNoIHN0ZXAuPC9wPgorICAgIDxw
cmUgc3R5bGU9ImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IiBpZD0ib3V0cHV0Ij48L3ByZT4K
KzwvYm9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB3cml0ZShtZXNzYWdlKSB7CisgICAgb3V0cHV0
LnRleHRDb250ZW50ICs9IGAke21lc3NhZ2V9XG5gOworfQorCitmdW5jdGlvbiByZXByZXNlbnRh
dGlvbkZvckZpbGUoZmlsZSkgeworICAgIHJldHVybiBmaWxlID8geworICAgICAgICBuYW1lOiBm
aWxlLm5hbWUsCisgICAgICAgIGJ5dGVzOiBmaWxlLnNpemUsCisgICAgICAgIHR5cGU6IGZpbGUu
dHlwZQorICAgIH0gOiBudWxsOworfQorCitmdW5jdGlvbiB1cGRhdGVPdXRwdXRUZXh0KGRlc2Ny
aXB0aW9uLCBldmVudCkgeworICAgIGNvbnN0IGRhdGFJbmZvID0ge307CisgICAgZm9yIChjb25z
dCB0eXBlIG9mIGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpCisgICAgICAgIGRhdGFJbmZvW3R5
cGVdID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKHR5cGUpOworICAgIGNvbnN0IGl0ZW1z
SW5mbyA9IFtdOworICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5jbGlwYm9hcmREYXRhLml0
ZW1zKSB7CisgICAgICAgIGl0ZW1zSW5mby5wdXNoKHsKKyAgICAgICAgICAgIHR5cGU6IGl0ZW0u
dHlwZSwKKyAgICAgICAgICAgIGtpbmQ6IGl0ZW0ua2luZCwKKyAgICAgICAgICAgIGZpbGU6IHJl
cHJlc2VudGF0aW9uRm9yRmlsZShpdGVtLmdldEFzRmlsZSgpKQorICAgICAgICB9KTsKKyAgICB9
CisgICAgd3JpdGUoYFxuJHtkZXNjcmlwdGlvbn1cbiR7SlNPTi5zdHJpbmdpZnkoeworICAgICAg
ICBkYXRhOiBkYXRhSW5mbywKKyAgICAgICAgaXRlbXM6IGl0ZW1zSW5mbywKKyAgICAgICAgZmls
ZXM6IEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlcykubWFwKHJlcHJlc2VudGF0
aW9uRm9yRmlsZSkKKyAgICB9LCBudWxsLCAiICAgICIpfWApOworfQorCitmdW5jdGlvbiByZW1v
dmVBdChpdGVtTGlzdCwgaW5kZXgpIHsKKyAgICBjb25zdCByZW1vdmVkSXRlbSA9IGl0ZW1MaXN0
W2luZGV4XTsKKyAgICBpdGVtTGlzdC5yZW1vdmUoaW5kZXgpOworICAgIHJldHVybiByZW1vdmVk
SXRlbTsKK30KKworc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImNvcHkiLCBldmVudCA9PiB7Cisg
ICAgY29uc3QgZmlsZUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIGV2ZW50
LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKCJoZWxsbyB3b3JsZCIsICJ0ZXh0L3BsYWluIik7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiMS4gQWZ0ZXIgYWRkaW5nIGEgc3RyaW5nIiwgZXZlbnQpOwor
CisgICAgY29uc3QgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTsKKyAgICBjb25zdCBhcnJh
eSA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBhcnJheS5maWxsKDE1KTsKKyAgICBldmVu
dC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChuZXcgRmlsZShbIGJ1ZmZlciBdLCAiZm9vIiwgeyB0
eXBlOiAiY3VzdG9tIiB9KSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMi4gQWZ0ZXIgYWRkaW5n
IGEgZmlsZSBvZiBjdXN0b20gdHlwZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmNsaXBib2FyZERh
dGEuaXRlbXMuYWRkKG5ldyBGaWxlKFsKKyAgICAgICAgbmV3IEJsb2IoWyJUaGlzIHBhcnQgaXMg
ZnJvbSBhIEphdmFTY3JpcHQgQmxvYiJdLCB7IHR5cGUgOiAidGV4dC9wbGFpbiIgfSksCisgICAg
ICAgICJUaGlzIHBhcnQgaXMganVzdCBmcm9tIGEgcGxhaW4gc3RyaW5nIgorICAgIF0sICJmaXJz
dC50eHQiLCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgi
My4gQWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdCBwbGFpbiB0ZXh0IGZpbGUiLCBldmVudCk7CisKKyAg
ICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMsIDIpOwor
ICAgIHVwZGF0ZU91dHB1dFRleHQoIjQuIEFmdGVyIHJlbW92aW5nIHRoZSBsYXN0IGZpbGUiLCBl
dmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxs
OiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgZXZlbnQuY2xpcGJvYXJkRGF0
YS5pdGVtcy5hZGQoIjxhPmdvb2RieWUgd29ybGQ8L2E+IiwgInRleHQvaHRtbCIpOworICAgIHVw
ZGF0ZU91dHB1dFRleHQoIjUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmluZyIsIGV2ZW50KTsK
KworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKG5ldyBGaWxlKFsgIlRoaXMgaXMg
anVzdCBhIHBsYWluIHN0cmluZyIgXSwgInNlY29uZC50eHQiLCB7IHR5cGU6ICJ0ZXh0L3BsYWlu
IiB9KSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxh
aW4gdGV4dCBmaWxlIiwgZXZlbnQpOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVu
dC5jbGlwYm9hcmREYXRhLml0ZW1zLCAxKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI3LiBBZnRl
ciByZW1vdmluZyB0aGUgY3VzdG9tIGZpbGUiLCBldmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgp
fWApOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0
ZW1zLCAxKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI4LiBBZnRlciByZW1vdmluZyB0aGUgSFRN
TCBzdHJpbmciLCBldmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNo
b3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgcmVtb3Zl
ZEl0ZW0gPSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAxKTsKKyAgICB1cGRh
dGVPdXRwdXRUZXh0KCI5LiBBZnRlciByZW1vdmluZyB0aGUgc2Vjb25kIHRleHQgZmlsZSIsIGV2
ZW50KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6
ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICByZW1vdmVkSXRlbSA9IHJlbW92
ZUF0KGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMsIDApOworICAgIHVwZGF0ZU91dHB1dFRleHQo
IjEwLiBBZnRlciByZW1vdmluZyB0aGUgcGxhaW4gdGV4dCBzdHJpbmciLCBldmVudCk7CisgICAg
d3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpfWApOworICAgIHdyaXRlKGBUaGUgRGF0YVRyYW5zZmVyJ3MgRmlsZUxp
c3Qgc2hvdWxkIGJlIHRoZSBzYW1lIG9iamVjdDogJHtmaWxlTGlzdCA9PSBldmVudC5jbGlwYm9h
cmREYXRhLmZpbGVzfWApOworCisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30pOworCitn
ZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHNvdXJjZSwgMCwgc291cmNlLCAxKTsKKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7
Cit9Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWRhNjU0
MTkzZmRlMGRhNWZmYjhhNzY1ZjFiMGE4MTY1OTk2NWMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1m
aWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzA0IEBACitEcmFnIG1lIG91dC4K
K1RvIG1hbnVhbGx5IHRlc3QsIGRyYWcgdGhlIGFib3ZlIHRleHQuIFRoZSBvdXRwdXQgYmVsb3cg
ZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBlYWNoIG9wZXJhdGlvbiwKKworZGVz
Y3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQgdGV4dCBmb3IgZWFjaCBzdGVwLiBUaGUg
RGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlCisKK29wZXJh
dGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLgorCisKKzEuIEFmdGVyIGFkZGluZyBhIHN0cmlu
ZworeworICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9wbGFpbiI6ICJoZWxsbyB3b3JsZCIK
KyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAg
ImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFtdCit9CisKKzIu
IEFmdGVyIGFkZGluZyBhIGZpbGUgb2YgY3VzdG9tIHR5cGUKK3sKKyAgICAiZGF0YSI6IHsKKyAg
ICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJp
bmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisg
ICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5cGUiOiAiY3Vz
dG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMi
OiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfQorICAgIF0KK30K
KworMy4gQWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdCBwbGFpbiB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0
YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2lu
ZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6
ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUi
LAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlyc3Qu
dHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA3MiwKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAi
ZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlyc3QudHh0IiwKKyAgICAgICAg
ICAgICJieXRlcyI6IDcyLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAg
ICAgfQorICAgIF0KK30KKworNC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGxhc3QgZmlsZQoreworICAg
ICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAg
ICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJr
aW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAg
ICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAg
ICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAg
ICB9CisgICAgXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51
bGwKKworNS4gQWZ0ZXIgYWRkaW5nIGFuIEhUTUwgc3RyaW5nCit7CisgICAgImRhdGEiOiB7Cisg
ICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3Ry
aW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIs
CisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAor
ICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1
c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAg
ICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVz
IjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9
CisKKzYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRh
IjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
Zm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIs
CisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQu
dHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAi
ZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgIH0KKyAgICBdCit9CisKKzcuIEFmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZQorewor
ICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjog
WworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAg
ICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAg
ICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAg
ICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDI3LAor
ICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5n
ZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis4LiBBZnRlciByZW1vdmluZyB0aGUg
SFRNTCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9
LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUi
OiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICAg
ICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjog
MjcsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQor
fQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKworOS4gQWZ0
ZXIgcmVtb3ZpbmcgdGhlIHNlY29uZCB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAg
ICAgInRleHQvcGxhaW4iOiAiaGVsbG8gd29ybGQiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAg
ImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9Cisg
ICAgXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxk
IGJlIG51bGw6IG51bGwKKworMTAuIEFmdGVyIHJlbW92aW5nIHRoZSBwbGFpbiB0ZXh0IHN0cmlu
ZworeworICAgICJkYXRhIjoge30sCisgICAgIml0ZW1zIjogW10sCisgICAgImZpbGVzIjogW10K
K30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCitUaGUgRGF0
YVRyYW5zZmVyJ3MgRmlsZUxpc3Qgc2hvdWxkIGJlIHRoZSBzYW1lIG9iamVjdDogdHJ1ZQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZGRmOWRiYmY2ODc1Y2IwMDQ3NTYxZTNjMjQyNzk1MWE2ZmNmNzQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
aXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbApAQCAtMCwwICsxLDExNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7
CisgICAgbWFyZ2luOiAwOworfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXYgc3R5bGU9ImZv
bnQtc2l6ZTogNDBweDsiIGlkPSJzb3VyY2UiIGRyYWdnYWJsZT0idHJ1ZSI+RHJhZyBtZSBvdXQu
PC9kaXY+CisgICAgPHA+VG8gbWFudWFsbHkgdGVzdCwgZHJhZyB0aGUgYWJvdmUgdGV4dC4gVGhl
IG91dHB1dCBiZWxvdyBkdW1wcyBEYXRhVHJhbnNmZXIgc3RhdGUgZm9sbG93aW5nIGVhY2ggb3Bl
cmF0aW9uLDwvcD4KKyAgICA8cD5kZXNjcmliZWQgZGlyZWN0bHkgYWJvdmUgdGhlIG91dHB1dCB0
ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBEYXRhVHJhbnNmZXIgc3RhdGUgc2hvdWxkIGJlIGNvbnNp
c3RlbnQgd2l0aCB0aGU8L3A+CisgICAgPHA+b3BlcmF0aW9uIHBlcmZvcm1lZCBhdCBlYWNoIHN0
ZXAuPC9wPgorICAgIDxwcmUgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCUiIGlkPSJv
dXRwdXQiPjwvcHJlPgorPC9ib2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHdyaXRlKG1lc3NhZ2Up
IHsKKyAgICBvdXRwdXQudGV4dENvbnRlbnQgKz0gYCR7bWVzc2FnZX1cbmA7Cit9CisKK2Z1bmN0
aW9uIHJlcHJlc2VudGF0aW9uRm9yRmlsZShmaWxlKSB7CisgICAgcmV0dXJuIGZpbGUgPyB7Cisg
ICAgICAgIG5hbWU6IGZpbGUubmFtZSwKKyAgICAgICAgYnl0ZXM6IGZpbGUuc2l6ZSwKKyAgICAg
ICAgdHlwZTogZmlsZS50eXBlCisgICAgfSA6IG51bGw7Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZU91
dHB1dFRleHQoZGVzY3JpcHRpb24sIGV2ZW50KSB7CisgICAgY29uc3QgZGF0YUluZm8gPSB7fTsK
KyAgICBmb3IgKGNvbnN0IHR5cGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzKQorICAgICAg
ICBkYXRhSW5mb1t0eXBlXSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKHR5cGUpOworICAg
IGNvbnN0IGl0ZW1zSW5mbyA9IFtdCisgICAgZm9yIChjb25zdCBpdGVtIG9mIGV2ZW50LmRhdGFU
cmFuc2Zlci5pdGVtcykgeworICAgICAgICBpdGVtc0luZm8ucHVzaCh7CisgICAgICAgICAgICB0
eXBlOiBpdGVtLnR5cGUsCisgICAgICAgICAgICBraW5kOiBpdGVtLmtpbmQsCisgICAgICAgICAg
ICBmaWxlOiByZXByZXNlbnRhdGlvbkZvckZpbGUoaXRlbS5nZXRBc0ZpbGUoKSkKKyAgICAgICAg
fSk7CisgICAgfQorICAgIG91dHB1dC50ZXh0Q29udGVudCArPSBgXG4ke2Rlc2NyaXB0aW9ufVxu
JHtKU09OLnN0cmluZ2lmeSh7CisgICAgICAgIGRhdGE6IGRhdGFJbmZvLAorICAgICAgICBpdGVt
czogaXRlbXNJbmZvLAorICAgICAgICBmaWxlczogQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNm
ZXIuZmlsZXMpLm1hcChyZXByZXNlbnRhdGlvbkZvckZpbGUpCisgICAgfSwgbnVsbCwgIiAgICAi
KX1cbmA7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUF0KGl0ZW1MaXN0LCBpbmRleCkgeworICAgIGNv
bnN0IHJlbW92ZWRJdGVtID0gaXRlbUxpc3RbaW5kZXhdOworICAgIGl0ZW1MaXN0LnJlbW92ZShp
bmRleCk7CisgICAgcmV0dXJuIHJlbW92ZWRJdGVtOworfQorCitvdXRwdXQuYWRkRXZlbnRMaXN0
ZW5lcigiZHJhZ292ZXIiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTsKK291dHB1
dC5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQo
KSk7Citzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgZXZlbnQgPT4geworICAg
IGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzOworICAgIGV2ZW50LmRh
dGFUcmFuc2Zlci5pdGVtcy5hZGQoImhlbGxvIHdvcmxkIiwgInRleHQvcGxhaW4iKTsKKyAgICB1
cGRhdGVPdXRwdXRUZXh0KCIxLiBBZnRlciBhZGRpbmcgYSBzdHJpbmciLCBldmVudCk7CisKKyAg
ICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpOworICAgIGNvbnN0IGFycmF5ID0g
bmV3IEludDhBcnJheShidWZmZXIpOworICAgIGFycmF5LmZpbGwoMTUpOworICAgIGV2ZW50LmRh
dGFUcmFuc2Zlci5pdGVtcy5hZGQobmV3IEZpbGUoWyBidWZmZXIgXSwgImZvbyIsIHsgdHlwZTog
ImN1c3RvbSIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjIuIEFmdGVyIGFkZGluZyBhIGZp
bGUgb2YgY3VzdG9tIHR5cGUiLCBldmVudCk7CisKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRl
bXMuYWRkKG5ldyBGaWxlKFsKKyAgICAgICAgbmV3IEJsb2IoWyJUaGlzIHBhcnQgaXMgZnJvbSBh
IEphdmFTY3JpcHQgQmxvYiJdLCB7IHR5cGUgOiAidGV4dC9wbGFpbiIgfSksCisgICAgICAgICJU
aGlzIHBhcnQgaXMganVzdCBmcm9tIGEgcGxhaW4gc3RyaW5nIgorICAgIF0sICJmaXJzdC50eHQi
LCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMy4gQWZ0
ZXIgYWRkaW5nIHRoZSBmaXJzdCBwbGFpbiB0ZXh0IGZpbGUiLCBldmVudCk7CisKKyAgICByZW1v
dmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcywgMik7CisgICAgdXBk
YXRlT3V0cHV0VGV4dCgiNC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGxhc3QgZmlsZSIsIGV2ZW50KTsK
KyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVt
b3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMu
YWRkKCI8YT5nb29kYnllIHdvcmxkPC9hPiIsICJ0ZXh0L2h0bWwiKTsKKyAgICB1cGRhdGVPdXRw
dXRUZXh0KCI1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmciLCBldmVudCk7CisKKyAgICBl
dmVudC5kYXRhVHJhbnNmZXIuaXRlbXMuYWRkKG5ldyBGaWxlKFsgIlRoaXMgaXMganVzdCBhIHBs
YWluIHN0cmluZyIgXSwgInNlY29uZC50eHQiLCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KSk7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4gdGV4dCBm
aWxlIiwgZXZlbnQpOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5kYXRhVHJh
bnNmZXIuaXRlbXMsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjcuIEFmdGVyIHJlbW92aW5n
IHRoZSBjdXN0b20gZmlsZSIsIGV2ZW50KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNG
aWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAg
ICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcywgMSk7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiOC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIEhUTUwgc3RyaW5nIiwg
ZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVs
bDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVt
b3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCAxKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0
KCI5LiBBZnRlciByZW1vdmluZyB0aGUgc2Vjb25kIHRleHQgZmlsZSIsIGV2ZW50KTsKKyAgICB3
cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0
ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRh
dGFUcmFuc2Zlci5pdGVtcywgMCk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMTAuIEFmdGVyIHJl
bW92aW5nIHRoZSBwbGFpbiB0ZXh0IHN0cmluZyIsIGV2ZW50KTsKKyAgICB3cml0ZShgcmVtb3Zl
ZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxl
KCl9YCk7CisgICAgd3JpdGUoYFRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlzdCBzaG91bGQgYmUg
dGhlIHNhbWUgb2JqZWN0OiAke2ZpbGVMaXN0ID09IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc31g
KTsKKworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9KTsKKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0cnVlKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygxMDAsIDI1KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMDAsIDQw
MCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA0ZjljNDRjMzMwMTEwNGU2Y2FmNDM3YzI0ZGU1M2Q2ZTRmZTJkZmQw
Li4zN2QzY2ZiMTI4MGFjNzUyMzQ1YzBjODQxNTRiOWM0NmQ2MWZlZDVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTExLDMgKzExLDQgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0
LWRhdGEtb24tcGFzdGUtY3VzdG9tLmh0bWwgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLXBhc3RlLXBsYWluLXRleHQuaHRtbCBbIFBhc3MgXQog
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtb24tcGFzdGUtcmljaC10
ZXh0Lmh0bWwgWyBQYXNzIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1k
YXRhLW5vbi1ub3JtYWxpemVkLXR5cGVzLmh0bWwgWyBQYXNzIF0KK2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5Lmh0bWwgWyBQYXNzIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBl
YzQ5ZmM0OGE0ZTliMGIyYTBmNGMzY2I3MGU2ZmQxOWFlOWRlY2RkLi5kZGJiMDgxZGI3MzcxM2Y1
NmNmMTYwOGViNGRhMDE1MGJjYTdkZTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMiw2ICsxMiw3IEBAIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcGxhaW4tdGV4dC5odG1sIFsgUGFzcyBd
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1kcm9wLXJpY2gt
dGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQt
ZGF0YS1vbi1kcm9wLXVybC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1l
bmQtY3Jhc2gtYWNjZXNzaW5nLWl0ZW0tbGlzdC5odG1sIFsgUGFzcyBdCitlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5odG1sIFsgUGFz
cyBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3Jt
LXNwZWNpZmljIGRpcmVjdG9yaWVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322712</attachid>
            <date>2017-10-04 13:30:50 -0700</date>
            <delta_ts>2017-10-04 21:51:12 -0700</delta_ts>
            <desc>Support adding and removing the same File (2)</desc>
            <filename>bug-177853-20171004133049.patch</filename>
            <type>text/plain</type>
            <size>52643</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlMGIxZDYzMmQ2MTE5
M2I3OGUwOTNhY2Q4YjQ1MTMwYWY5NDRhNi4uYmI5MGMyYmE2ZDY0OTg2ZTBkNDNhMzkxODU5NWE4
YTZhNDc0OWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBz
dXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQgdGhhdCB0
YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MDczNDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB2ZXJ5IGJhc2ljIHN1
cHBvcnQgZm9yIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmFkZChGaWxlKS4gU28gZmFyLCBhIEZpbGUg
YWRkZWQgaW4gdGhpcyB3YXkgY2FuIG9ubHkgYmUgcmVhZAorICAgICAgICBiYWNrIGZyb20gdGhl
IHNhbWUgRGF0YVRyYW5zZmVyLCBkdXJpbmcgZHJhZ3N0YXJ0IG9yIGNvcHkuIFRoaXMgRmlsZSBp
c24ndCB3cml0dGVuIHRvIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkCisgICAgICAgIHlldCwgc28g
ZXZlbiBkcm9wcGluZyBvciBwYXN0aW5nIGluIHRoZSBzYW1lIHBhZ2Ugd2lsbCBub3QgdHJhbnNm
ZXIgdGhlIEZpbGUsIGJ1dCB0aGlzIGJyaW5ncyB1cyBjbG9zZXIgdG8KKyAgICAgICAgcGFyaXR5
IHdpdGggb3RoZXIgYnJvd3NlcnMuIFNlZSBwZXItbWV0aG9kIGNvbW1lbnRzIGZvciBkZXRhaWxz
LgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVt
LWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMuaHRtbAorICAgICAgICAgICAgICAgZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRt
bAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KToKKwor
ICAgICAgICBSZWNvbXB1dGUgdGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0LiBUaGlzIGJlaGF2
ZXMgdGhlIHNhbWUgd2F5IGFzIGRlc3Ryb3lpbmcgdGhlIEZpbGVMaXN0IGFsdG9nZXRoZXIgYW5k
CisgICAgICAgIGJ1aWxkaW5nIGl0IGZyb20gc2NyYXRjaCwgYnV0IHdlIGF2b2lkIHRoYXQgYXBw
cm9hY2ggYmVjYXVzZSB0aGUgRmlsZUxpc3Qgb2JqZWN0IG5lZWRzIHRvIG1haW50YWluIHRoZSBz
YW1lIERPTQorICAgICAgICB3cmFwcGVyIGFmdGVyIGEgRmlsZS1iYWNrZWQgaXRlbSBpcyByZW1v
dmVkLgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6Oml0ZW1MaXN0RGlkQWRkRmls
ZSk6CisKKyAgICAgICAgQWRkIHRoZSBuZXdseSBhcHBlbmRlZCBEYXRhVHJhbnNmZXJJdGVtJ3Mg
RmlsZSB0byB0aGUgRGF0YVRyYW5zZmVyJ3MgRmlsZUxpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6dHlwZXMgY29uc3QpOgorCisgICAgICAgIFJldHVybiBvbmx5IHRoZSAi
RmlsZXMiIHR5cGUgaWYgdGhlcmUgYXJlIGZpbGUtYmFja2VkIGl0ZW1zIGluIHRoZSBEYXRhVHJh
bnNmZXIncyBpdGVtIGxpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6dXBk
YXRlZEZpbGVzRm9yRmlsZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyOjpmaWxlcyBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAg
ICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXJJdGVtOjpmaWxlIGNvbnN0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0OjpjbGVhcik6CisKKyAgICAgICAgV2hlbiByZW1v
dmluZyBhIEZpbGUsIG9ubHkgY2xlYXIgZnJvbSB0aGUgRGF0YVRyYW5zZmVyJ3MgcGFzdGVib2Fy
ZCBpZiB0aGUgcmVtb3ZlZCBpdGVtIGlzIG5vdCBhIEZpbGUgKG90aGVyd2lzZSwKKyAgICAgICAg
Y2xlYXJpbmcgYSBGaWxlIHRoYXQgc2hhcmVzIHRoZSBzYW1lIHR5cGUgYXMgc29tZSBvdGhlciBp
dGVtIGluIHRoZSBwYXN0ZWJvYXJkIHdpbGwgZXJyb25lb3VzbHkgY2xlYXIgdGhhdCBvdGhlcgor
ICAgICAgICBpdGVtIGFzIHdlbGwpLiBBZGRpdGlvbmFsbHksIGNhbGwgb3V0IHRvIHRoZSBEYXRh
VHJhbnNmZXIgdG8gdXBkYXRlIHRoZSBGaWxlTGlzdC4KKworICAgICAgICAqIGRvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6
Omhhc0l0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0
OjppdGVtcyBjb25zdCk6CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGRpcmVjdGx5IGFjY2Vz
c2luZyBhbiBpdGVtIGxpc3QncyBpdGVtcy4gaXRlbXMoKSBzaG91bGQgYmUgdXNlZCBpbiBjb25q
dW5jdGlvbiB3aXRoIGhhc0l0ZW1zKCkuCisgICAgICAgIFRoaXMgcm91dGUgaXMgdGFrZW4gdG8g
KDEpIGF2b2lkIGhhdmluZyB0byBjb3B5IHRoZSB2ZWN0b3Igb2YgRmlsZXMsIGFuZCAoMikgdG8g
YXZvaWQgZ2VuZXJhdGluZyBtX2l0ZW1zIGlmIGl0CisgICAgICAgIGRvZXNuJ3QgYWxyZWFkeSBl
eGlzdC4KKwogMjAxNy0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJbnRlcm1pdHRlbnQgY3Jhc2ggd2hp
bGUgYWNjZXNzaW5nIERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCmluZGV4IGFkZGVmMGY5MTczYzQ1NmE4MWVhZTc0OTA1MTI0ZjBjMmY0OTNmZTIuLmY4
MWEyNmYyODU2MGMxNjUwNWMwMGM2MWQ1MzRlYTRhOTQzZTY1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFn
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YVRyYW5z
ZmVySXRlbS5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0LmgiCiAjaW5jbHVkZSAi
RHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTE2MSw2ICsxNjIsMjYgQEAgdm9p
ZCBEYXRhVHJhbnNmZXI6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGRhdGEpCiAgICAgICAgIG1faXRlbUxpc3QtPmRpZFNldFN0cmluZ0RhdGEobm9ybWFsaXplZFR5
cGUpOwogfQogCit2b2lkIERhdGFUcmFuc2Zlcjo6dXBkYXRlRmlsZUxpc3QoKQoreworICAgIC8v
IElmIHdlJ3JlIHJlbW92aW5nIGFuIGl0ZW0sIHRoZW4gdGhlIGl0ZW0gbGlzdCBtdXN0IGV4aXN0
LCB3aGljaCBpbXBsaWVzIHRoYXQgdGhlIGZpbGUgbGlzdCBtdXN0IGhhdmUgYmVlbiBpbml0aWFs
aXplZCBhbHJlYWR5LgorICAgIEFTU0VSVChtX2ZpbGVMaXN0KTsKKyAgICBBU1NFUlQoY2FuV3Jp
dGVEYXRhKCkpOworCisgICAgbV9maWxlTGlzdC0+bV9maWxlcyA9IHVwZGF0ZWRGaWxlc0ZvckZp
bGVMaXN0KCk7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVyOjppdGVtTGlzdERpZEFkZEZpbGUoKQor
eworICAgIEFTU0VSVChjYW5Xcml0ZURhdGEoKSk7CisgICAgaWYgKCFtX2ZpbGVMaXN0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBuZXdJdGVtID0gbV9pdGVtTGlzdC0+aXRlbXMoKS5s
YXN0KCk7CisgICAgQVNTRVJUKG5ld0l0ZW0tPmlzRmlsZSgpKTsKKyAgICBtX2ZpbGVMaXN0LT5h
cHBlbmQoKm5ld0l0ZW0tPmZpbGUoKSk7Cit9CisKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRh
VHJhbnNmZXI6Oml0ZW1zKCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCkBAIC0xODEsNiArMjAy
LDkgQEAgVmVjdG9yPFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcygpIGNvbnN0CiAgICAgICAg
IHJldHVybiB0eXBlczsKICAgICB9CiAKKyAgICBpZiAobV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0
LT5oYXNJdGVtcygpICYmIG1faXRlbUxpc3QtPml0ZW1zKCkuZmluZE1hdGNoaW5nKFtdIChjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5pc0ZpbGUoKTsgfSkgIT0gbm90Rm91bmQpCisg
ICAgICAgIHJldHVybiB7ICJGaWxlcyIgfTsKKwogICAgIGlmIChtX3Bhc3RlYm9hcmQtPmNvbnRh
aW5zRmlsZXMoKSkgewogICAgICAgICBBU1NFUlQoIW1fcGFzdGVib2FyZC0+dHlwZXNTYWZlRm9y
QmluZGluZ3MoKS5jb250YWlucygiRmlsZXMiKSk7CiAgICAgICAgIHJldHVybiB7ICJGaWxlcyIg
fTsKQEAgLTE5MSw2ICsyMTUsMjUgQEAgVmVjdG9yPFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBl
cygpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCitWZWN0b3I8UmVmPEZpbGU+PiBEYXRh
VHJhbnNmZXI6OnVwZGF0ZWRGaWxlc0ZvckZpbGVMaXN0KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKKyAgICBpZiAoIWZvckRyYWcoKSB8fCBmb3JGaWxlRHJhZygpKSB7
CisgICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXI7CisgICAgICAgIG1f
cGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworICAgICAgICBmaWxlcyA9IFdURk1vdmUocmVhZGVy
LmZpbGVzKTsKKyAgICB9CisKKyAgICBpZiAobV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0LT5oYXNJ
dGVtcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbUxpc3QtPml0ZW1zKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIGZpbGUgPSBpdGVtLT5maWxlKCkpCisgICAgICAgICAg
ICAgICAgZmlsZXMuYXBwZW5kKCpmaWxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBmaWxlczsKK30KKwogRmlsZUxpc3QmIERhdGFUcmFuc2Zlcjo6ZmlsZXMoKSBjb25zdAogewog
ICAgIGlmICghY2FuUmVhZERhdGEoKSkgewpAQCAtMjAxLDE5ICsyNDQsOSBAQCBGaWxlTGlzdCYg
RGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0CiAgICAgICAgIHJldHVybiAqbV9maWxlTGlzdDsK
ICAgICB9CiAKLSAgICBpZiAoZm9yRHJhZygpICYmICFmb3JGaWxlRHJhZygpKSB7Ci0gICAgICAg
IGlmIChtX2ZpbGVMaXN0KQotICAgICAgICAgICAgQVNTRVJUKG1fZmlsZUxpc3QtPmlzRW1wdHko
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHJldHVybiAqbV9maWxlTGlzdDsKLSAgICB9CisgICAgaWYgKCFtX2Zp
bGVMaXN0KQorICAgICAgICBtX2ZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSh1cGRhdGVkRmls
ZXNGb3JGaWxlTGlzdCgpKTsKIAotICAgIGlmICghbV9maWxlTGlzdCkgewotICAgICAgICBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyOwotICAgICAgICBtX3Bhc3RlYm9hcmQtPnJl
YWQocmVhZGVyKTsKLSAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92
ZShyZWFkZXIuZmlsZXMpKTsKLSAgICB9CiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggMDlkNGRmZjMyYjExZmI4ZmVmMmUwN2JjOGUx
NWIzYzQwNWUyZjE2Zi4uZDRjNzMyN2ZhZDRhOWMzMDEzNmRhOGMzMzUwYTdjNDUzYjJhY2VlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEcmFn
RGF0YTsKIGNsYXNzIERyYWdJbWFnZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxl
TGlzdDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBQYXN0ZWJvYXJkOwogCiBjbGFzcyBEYXRhVHJhbnNm
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhVHJhbnNmZXI+IHsKQEAgLTk5LDYgKzEwMCw5IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0RyYWdJbWFnZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2
b2lkIGl0ZW1MaXN0RGlkQWRkRmlsZSgpOworICAgIHZvaWQgdXBkYXRlRmlsZUxpc3QoKTsKKwog
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5QW5kUGFzdGUsIERyYWdBbmREcm9w
RGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9OwogICAgIERhdGFUcmFuc2ZlcihT
dG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IFR5cGU6OkNvcHlB
bmRQYXN0ZSk7CkBAIC0xMTEsNiArMTE1LDggQEAgcHJpdmF0ZToKICAgICBib29sIGZvckZpbGVE
cmFnKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisgICAgVmVjdG9yPFJlZjxG
aWxlPj4gdXBkYXRlZEZpbGVzRm9yRmlsZUxpc3QoKSBjb25zdDsKKwogICAgIFN0b3JlTW9kZSBt
X3N0b3JlTW9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJk
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJhbnNmZXJJdGVtTGlzdD4gbV9pdGVtTGlzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDlhYzExZTdjYjMzNWY3MzEw
MDNmYTE2NWExODYyNGZlN2ZhZWUyNTYuLjk2ODU1MjkxODdlNjZkNDM5YmJmNTAyYTcwNzZkMDZi
NDg4Yzk3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaApAQCAtNTQsNiAr
NTQsNyBAQCBwdWJsaWM6CiAKICAgICB+RGF0YVRyYW5zZmVySXRlbSgpOwogCisgICAgUmVmUHRy
PEZpbGU+IGZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGU7IH0KICAgICB2b2lkIGNsZWFyTGlz
dEFuZFB1dEludG9EaXNhYmxlZE1vZGUoKTsKIAogICAgIGJvb2wgaXNGaWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmNwcAppbmRleCA1OTcwNGI0YjU2MGM4ZDYzZDhkMWJlN2FmODZhNTI4MmVkMmFiMjgzLi45Y2Fm
YTljM2Q1YThmYWM0Y2YxN2QyZjk5MDY4NjNiYWRlZDRjNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAKQEAgLTg0LDkgKzg0LDE0IEBAIEV4Y2VwdGlv
bk9yPFJlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPj4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmFkZChj
b25zdCBTdHJpbmcmIGRhCiAgICAgcmV0dXJuIFJlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiB7IG1f
aXRlbXMtPmxhc3QoKS5jb3B5UmVmKCkgfTsKIH0KIAotUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+
IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQoUmVmPEZpbGU+JiYpCitSZWZQdHI8RGF0YVRyYW5z
ZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmFkZChSZWY8RmlsZT4mJiBmaWxlKQogewot
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9kYXRhVHJhbnNmZXIuY2FuV3JpdGVEYXRh
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZW5zdXJlSXRlbXMoKS5hcHBlbmQo
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigq
dGhpcyksIGZpbGUtPnR5cGUoKSwgZmlsZS5jb3B5UmVmKCkpKTsKKyAgICBtX2RhdGFUcmFuc2Zl
ci5pdGVtTGlzdERpZEFkZEZpbGUoKTsKKyAgICByZXR1cm4gUmVmUHRyPERhdGFUcmFuc2Zlckl0
ZW0+IHsgbV9pdGVtcy0+bGFzdCgpLnB0cigpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERh
dGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1vdmUodW5zaWduZWQgaW5kZXgpCkBAIC05OCwxMyArMTAz
LDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1vdmUodW5z
aWduZWQgaW5kZXgpCiAgICAgaWYgKGl0ZW1zLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07IC8vIE1hdGNoZXMgR2Vja28uIFNlZSBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzI5MjUKIAotICAgIC8vIEZJWE1F
OiBIYW5kbGUgdGhlIHJlbW92YWwgb2YgZmlsZXMgb25jZSB3ZSBhZGRlZCB0aGUgc3VwcG9ydCBm
b3Igd3JpdGluZyBhIEZpbGUuCi0gICAgQVNTRVJUKCFpdGVtc1tpbmRleF0tPmlzRmlsZSgpKTsK
LQorICAgIC8vIFNpbmNlIGZpbGUtYmFja2VkIERhdGFUcmFuc2Zlckl0ZW1zIGFyZSBub3QgYWN0
dWFsbHkgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB5ZXQsIHdlIGRvbid0IG5lZWQgdG8gcmVt
b3ZlIGFueQorICAgIC8vIHRlbXBvcmFyeSBmaWxlcy4gV2hlbiB3ZSBzdXBwb3J0IHdyaXRpbmcg
ZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRlbXMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQs
IHdlIHdpbGwgbmVlZAorICAgIC8vIHRvIGNsZWFuIHVwIGhlcmUuCiAgICAgYXV0byYgcmVtb3Zl
ZEl0ZW0gPSBpdGVtc1tpbmRleF0uZ2V0KCk7Ci0gICAgbV9kYXRhVHJhbnNmZXIucGFzdGVib2Fy
ZCgpLmNsZWFyKHJlbW92ZWRJdGVtLnR5cGUoKSk7CisgICAgaWYgKCFyZW1vdmVkSXRlbS5pc0Zp
bGUoKSkKKyAgICAgICAgbV9kYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmNsZWFyKHJlbW92ZWRJ
dGVtLnR5cGUoKSk7CiAgICAgcmVtb3ZlZEl0ZW0uY2xlYXJMaXN0QW5kUHV0SW50b0Rpc2FibGVk
TW9kZSgpOwogICAgIGl0ZW1zLnJlbW92ZShpbmRleCk7CisgICAgaWYgKHJlbW92ZWRJdGVtLmlz
RmlsZSgpKQorICAgICAgICBtX2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KQEAgLTExMiwxMSArMTIwLDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERh
dGFUcmFuc2Zlckl0ZW1MaXN0OjpyZW1vdmUodW5zaWduZWQgaW5kZXgpCiB2b2lkIERhdGFUcmFu
c2Zlckl0ZW1MaXN0OjpjbGVhcigpCiB7CiAgICAgbV9kYXRhVHJhbnNmZXIucGFzdGVib2FyZCgp
LmNsZWFyKCk7CisgICAgYm9vbCByZW1vdmVkSXRlbUNvbnRhaW5pbmdGaWxlID0gZmFsc2U7CiAg
ICAgaWYgKG1faXRlbXMpIHsKLSAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogKm1faXRlbXMpCisg
ICAgICAgIGZvciAoYXV0byYgaXRlbSA6ICptX2l0ZW1zKSB7CisgICAgICAgICAgICByZW1vdmVk
SXRlbUNvbnRhaW5pbmdGaWxlIHw9IGl0ZW0tPmlzRmlsZSgpOwogICAgICAgICAgICAgaXRlbS0+
Y2xlYXJMaXN0QW5kUHV0SW50b0Rpc2FibGVkTW9kZSgpOworICAgICAgICB9CiAgICAgICAgIG1f
aXRlbXMtPmNsZWFyKCk7CiAgICAgfQorCisgICAgaWYgKHJlbW92ZWRJdGVtQ29udGFpbmluZ0Zp
bGUpCisgICAgICAgIG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7CiB9CiAKIFZlY3Rv
cjxSZWY8RGF0YVRyYW5zZmVySXRlbT4+JiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6ZW5zdXJlSXRl
bXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAppbmRl
eCBmY2U2OTQ3NDFjMmQ2NDUxZDY4ZjE1ZDkzMjlkNThmNWIwN2E4OWYwLi4xMzEyMGU1NGFkMzY4
MGFlNjY5ODNjZmZlMmNjYTJkNDRiYjY3YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbUxpc3QuaApAQCAtNjUsNiArNjUsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBk
aWRDbGVhclN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIGRpZFNldFN0
cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBib29sIGhhc0l0ZW1zKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVtcy5oYXNfdmFsdWUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWY8RGF0
YVRyYW5zZmVySXRlbT4+JiBpdGVtcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9p
dGVtcyk7CisgICAgICAgIHJldHVybiAqbV9pdGVtczsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4mIGVuc3VyZUl0ZW1zKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYTlmNmJlMGEzYjllNjA1ZDkxOGM5MmRkMjExZGM3ZDk5MzgxMjM0My4uZDVkMmQ5MWNlODU4
MDFhZjk4M2ViMWY3ZjdmOWZiMzY3ZTkxZjg0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3
LTEwLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBiYXNpYyBzdXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJhbnNmZXJJdGVtTGlz
dC5hZGQgdGhhdCB0YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MDczNDY+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3RzIHRvIHZlcmlmeSB0aGF0IEZpbGVzIGNhbiBiZSBhZGRlZCB0byBhbmQgcmVtb3ZlZCBmcm9t
IHRoZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5kIGFsc28gcmVhZCBiYWNrIHZpYQorICAgICAg
ICBib3RoIHRoZSBpdGVtIGxpc3QgYW5kIHRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlzdCB3aGVu
IGNvcHlpbmcgYW5kIGRyYWdnaW5nLiBBZGRpdGlvbmFsbHksIGFkZHMgYSB0ZXN0IHRoYXQgYWRk
cworICAgICAgICBhbmQgcmVtb3ZlcyB0aGUgc2FtZSBGaWxlIHRvIHRoZSBEYXRhVHJhbnNmZXJJ
dGVtTGlzdCBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1m
aWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRp
bWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxl
LW9uLWNvcHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEt
dHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRk
LWZpbGUtb24tZHJhZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAxNy0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJbnRlcm1pdHRlbnQg
Y3Jhc2ggd2hpbGUgYWNjZXNzaW5nIERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBmNmRmZjQzMTY4M2NhMGU4MmUwYjgyYmY2NzlkYzhhN2E2NzZiMWU4Li45ZDg5ZDcz
OThlMTA2NjMxMGIwOTFhNGE0NGJkNTA3ZTNlYTQ1MTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTcxLDYgKzcxLDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEt
b24tZHJvcC1wbGFpbi10ZXh0Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
LXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcmljaC10ZXh0Lmh0bWwgWyBTa2lwIF0KIGVkaXRp
bmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtdXJsLmh0bWwgWyBT
a2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWVuZC1jcmFzaC1hY2Nlc3NpbmctaXRlbS1s
aXN0Lmh0bWwgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0t
bGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5IGlPUyBzdXBwb3J0
cyBRdWlja0xvb2sKIHF1aWNrbG9vayBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRp
cGxlLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDgwMTYwNjk4NDM0YmU2ODk2OTQ3NzFkMjQ0ZDRiMjgxYmFhNjdhNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0MDEgQEAKK0NvcHkgdGhpcyB0ZXh0IQorVG8gbWFudWFsbHkgdGVzdCwgY29weSB0
aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBkdW1wcyBEYXRhVHJhbnNmZXIgc3RhdGUg
Zm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLAorCitkZXNjcmliZWQgZGlyZWN0bHkgYWJvdmUgdGhl
IG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBEYXRhVHJhbnNmZXIgc3RhdGUgc2hvdWxk
IGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUKKworb3BlcmF0aW9uIHBlcmZvcm1lZCBhdCBlYWNoIHN0
ZXAuCisKKworMS4gQWZ0ZXIgYWRkaW5nIGFsbCBpdGVtcworeworICAgICJkYXRhIjogeworICAg
ICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUi
LAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50
eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmls
ZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxl
LnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJz
dHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtp
bmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxl
LnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRl
eHQvcGxhaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZp
bGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
ZmlsZS50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CisKKzIuIEFmdGVyIHJlbW92aW5n
IGF0IGluZGV4IDQKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9
LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjog
eworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICAgICAi
Ynl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0
L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUi
OiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAg
ICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRl
eHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJm
aWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L3VyaS1saXN0IiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAg
ICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUi
OiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAg
ICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAg
ICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWlu
IgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRl
cyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgImJ5
dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAi
Ynl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0K
KyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAor
CiszLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAxCit7CisgICAgImRhdGEiOiB7CisgICAgICAg
ICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisg
ICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIs
CisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAgICAgICAgImtpbmQiOiAic3Ry
aW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZp
bGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmls
ZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0
eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAg
ICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAor
ICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWlu
IgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIs
CisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxh
aW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQg
YmUgbnVsbDogbnVsbAorCis0LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAzCit7CisgICAgImRh
dGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtp
bmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAi
a2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAgICAg
ICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9
CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
ImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUi
OiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmls
ZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzUuIEFmdGVyIGNsZWFyaW5nIGl0ZW1zCit7Cisg
ICAgImRhdGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQorfQorCis2
LiBBZnRlciBhZGRpbmcgdHdvIGZpbGVzIGFuZCBzb21lIHN0cmluZyBkYXRhIGFnYWluCit7Cisg
ICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAg
ICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAg
ICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAg
ICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisg
ICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0
eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KKworNy4gQWZ0ZXIgcmVt
b3ZpbmcgYXQgaW5kZXggMgoreworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgor
ICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0
ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZp
bGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAg
ICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAg
ImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAi
ZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAg
ICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMi
OiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRl
cyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAg
IF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzgu
IEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZp
bGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAg
ICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAg
ICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0
L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAg
ICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAg
ICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAg
fQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxs
CisKKzkuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDEKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAg
ICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0
IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmls
ZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAg
ICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAg
ICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxs
OiBudWxsCisKKzEwLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAwCit7CisgICAgImRhdGEiOiB7
fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVtb3ZlZEl0ZW0uZ2V0
QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRp
cGxlLXRpbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFu
c2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MmUxMWY1NzgwZmJjODA1NDRlMDYwMGRkMjliNzVkMzNkZjZiYzY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0
LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLmh0bWwKQEAgLTAsMCArMSwxMzYgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2
aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHN0
eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOwor
ICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJmb250
LXNpemU6IDQwcHg7IiBpZD0ic291cmNlIj5Db3B5IHRoaXMgdGV4dCE8L2Rpdj4KKyAgICA8cD5U
byBtYW51YWxseSB0ZXN0LCBjb3B5IHRoZSBhYm92ZSB0ZXh0LiBUaGUgb3V0cHV0IGJlbG93IGR1
bXBzIERhdGFUcmFuc2ZlciBzdGF0ZSBmb2xsb3dpbmcgZWFjaCBvcGVyYXRpb24sPC9wPgorICAg
IDxwPmRlc2NyaWJlZCBkaXJlY3RseSBhYm92ZSB0aGUgb3V0cHV0IHRleHQgZm9yIGVhY2ggc3Rl
cC4gVGhlIERhdGFUcmFuc2ZlciBzdGF0ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZTwv
cD4KKyAgICA8cD5vcGVyYXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC48L3A+CisgICAgPHBy
ZSBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSIgaWQ9Im91dHB1dCI+PC9wcmU+Cis8
L2JvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gd3JpdGUobWVzc2FnZSkgeworICAgIG91dHB1dC50
ZXh0Q29udGVudCArPSBgJHttZXNzYWdlfVxuYDsKK30KKworZnVuY3Rpb24gcmVwcmVzZW50YXRp
b25Gb3JGaWxlKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZSA/IHsKKyAgICAgICAgbmFtZTogZmls
ZS5uYW1lLAorICAgICAgICBieXRlczogZmlsZS5zaXplLAorICAgICAgICB0eXBlOiBmaWxlLnR5
cGUKKyAgICB9IDogbnVsbDsKK30KKworZnVuY3Rpb24gcmVtb3ZlQXQoaXRlbUxpc3QsIGluZGV4
KSB7CisgICAgY29uc3QgcmVtb3ZlZEl0ZW0gPSBpdGVtTGlzdFtpbmRleF07CisgICAgaXRlbUxp
c3QucmVtb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gcmVtb3ZlZEl0ZW07Cit9CisKK2Z1bmN0aW9u
IHVwZGF0ZU91dHB1dFRleHQoZGVzY3JpcHRpb24sIGV2ZW50LCBpdGVtTGlzdCwgZmlsZUxpc3Qp
IHsKKyAgICBjb25zdCBkYXRhSW5mbyA9IHt9OworICAgIGZvciAoY29uc3QgdHlwZSBvZiBldmVu
dC5jbGlwYm9hcmREYXRhLnR5cGVzKQorICAgICAgICBkYXRhSW5mb1t0eXBlXSA9IGV2ZW50LmNs
aXBib2FyZERhdGEuZ2V0RGF0YSh0eXBlKTsKKyAgICBjb25zdCBpdGVtc0luZm8gPSBbXQorICAg
IGZvciAoY29uc3QgaXRlbSBvZiBpdGVtTGlzdCkgeworICAgICAgICBpdGVtc0luZm8ucHVzaCh7
CisgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsCisgICAgICAgICAgICBraW5kOiBpdGVtLmtp
bmQsCisgICAgICAgICAgICBmaWxlOiByZXByZXNlbnRhdGlvbkZvckZpbGUoaXRlbS5nZXRBc0Zp
bGUoKSkKKyAgICAgICAgfSk7CisgICAgfQorICAgIHdyaXRlKGBcbiR7ZGVzY3JpcHRpb259XG4k
e0pTT04uc3RyaW5naWZ5KHsKKyAgICAgICAgZGF0YTogZGF0YUluZm8sCisgICAgICAgIGl0ZW1z
OiBpdGVtc0luZm8sCisgICAgICAgIGZpbGVzOiBBcnJheS5mcm9tKGZpbGVMaXN0KS5tYXAocmVw
cmVzZW50YXRpb25Gb3JGaWxlKQorICAgIH0sIG51bGwsICIgICAgIil9YCk7Cit9CisKK3NvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKCJjb3B5IiwgZXZlbnQgPT4geworICAgIGNvbnN0IGZpbGUgPSBu
ZXcgRmlsZShbICJUaGlzIGlzIGEgdGV4dCBmaWxlLiIgXSwgImZpbGUudHh0IiwgeyB0eXBlOiAi
dGV4dC9wbGFpbiIgfSk7CisKKyAgICBsZXQgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRh
Lml0ZW1zOworICAgIGxldCBmaWxlTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuZmlsZXM7Cisg
ICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoZmlsZSk7CisgICAgZXZlbnQuY2xpcGJv
YXJkRGF0YS5pdGVtcy5hZGQoZmlsZSk7CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5h
ZGQoInBsYWluIHRleHQgc3RyaW5nIiwgInRleHQvcGxhaW4iKTsKKyAgICBldmVudC5jbGlwYm9h
cmREYXRhLml0ZW1zLmFkZCgiaHR0cHM6Ly93ZWJraXQub3JnIiwgInRleHQvdXJpLWxpc3QiKTsK
KyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICBldmVudC5jbGlw
Ym9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIxLiBBZnRl
ciBhZGRpbmcgYWxsIGl0ZW1zIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisKKyAgICBp
dGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3QgPSBldmVu
dC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIGxldCByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGl0
ZW1MaXN0LCA0KTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIyLiBBZnRlciByZW1vdmluZyBhdCBp
bmRleCA0IiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisgICAgd3JpdGUoYHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgp
fWApOworCisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zOworICAgIGZp
bGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAgICByZW1vdmVkSXRlbSA9IHJl
bW92ZUF0KGl0ZW1MaXN0LCAxKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIzLiBBZnRlciByZW1v
dmluZyBhdCBpbmRleCAxIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisgICAgd3JpdGUo
YHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdl
dEFzRmlsZSgpfWApOworCisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1z
OworICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAgICByZW1vdmVk
SXRlbSA9IHJlbW92ZUF0KGl0ZW1MaXN0LCAzKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI0LiBB
ZnRlciByZW1vdmluZyBhdCBpbmRleCAzIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7Cisg
ICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92
ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9hcmRE
YXRhLml0ZW1zOworICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAg
ICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmNsZWFyKCk7CisgICAgdXBkYXRlT3V0cHV0VGV4
dCgiNS4gQWZ0ZXIgY2xlYXJpbmcgaXRlbXMiLCBldmVudCwgaXRlbUxpc3QsIGZpbGVMaXN0KTsK
KworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKGZpbGUpOworICAgIGV2ZW50LmNs
aXBib2FyZERhdGEuaXRlbXMuYWRkKCI8c3Ryb25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0cm9uZz4i
LCAidGV4dC9odG1sIik7CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoInNvbWUg
cGxhaW4gdGV4dCIsICJ0ZXh0L3BsYWluIik7CisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9h
cmREYXRhLml0ZW1zOworICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsK
KyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICB1cGRhdGVPdXRw
dXRUZXh0KCI2LiBBZnRlciBhZGRpbmcgdHdvIGZpbGVzIGFuZCBzb21lIHN0cmluZyBkYXRhIGFn
YWluIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisKKyAgICBpdGVtTGlzdCA9IGV2ZW50
LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRh
LmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoaXRlbUxpc3QsIDIpOworICAgIHVw
ZGF0ZU91dHB1dFRleHQoIjcuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIiLCBldmVudCwgaXRl
bUxpc3QsIGZpbGVMaXN0KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hv
dWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICBpdGVtTGlz
dCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3QgPSBldmVudC5jbGlw
Ym9hcmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoaXRlbUxpc3QsIDIp
OworICAgIHVwZGF0ZU91dHB1dFRleHQoIjguIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIiLCBl
dmVudCwgaXRlbUxpc3QsIGZpbGVMaXN0KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNG
aWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAg
ICBpdGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3QgPSBl
dmVudC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoaXRl
bUxpc3QsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjkuIEFmdGVyIHJlbW92aW5nIGF0IGlu
ZGV4IDEiLCBldmVudCwgaXRlbUxpc3QsIGZpbGVMaXN0KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0
ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9
YCk7CisKKyAgICBpdGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmls
ZUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVt
b3ZlQXQoaXRlbUxpc3QsIDApOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjEwLiBBZnRlciByZW1v
dmluZyBhdCBpbmRleCAwIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisgICAgd3JpdGUo
YHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdl
dEFzRmlsZSgpfWApOworCisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30pOworCitnZXRT
ZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHNvdXJjZSwgMCwgc291cmNlLCAxKTsKKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7Cit9
Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0t
bGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmRmNjdjYWVk
MWIxMTc4YzQyZjhjNWQwMGI1OTU0NzcxZTZjZTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxl
LW9uLWNvcHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzA0IEBACitDb3B5IHRoaXMgdGV4dCEK
K1RvIG1hbnVhbGx5IHRlc3QsIGNvcHkgdGhlIGFib3ZlIHRleHQuIFRoZSBvdXRwdXQgYmVsb3cg
ZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBlYWNoIG9wZXJhdGlvbiwKKworZGVz
Y3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQgdGV4dCBmb3IgZWFjaCBzdGVwLiBUaGUg
RGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlCisKK29wZXJh
dGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLgorCisKKzEuIEFmdGVyIGFkZGluZyBhIHN0cmlu
ZworeworICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9wbGFpbiI6ICJoZWxsbyB3b3JsZCIK
KyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAg
ImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFtdCit9CisKKzIu
IEFmdGVyIGFkZGluZyBhIGZpbGUgb2YgY3VzdG9tIHR5cGUKK3sKKyAgICAiZGF0YSI6IHsKKyAg
ICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJp
bmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisg
ICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5cGUiOiAiY3Vz
dG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAiYnl0ZXMi
OiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfQorICAgIF0KK30K
KworMy4gQWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdCBwbGFpbiB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0
YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2lu
ZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6
ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUi
LAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlyc3Qu
dHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA3MiwKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAi
ZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlyc3QudHh0IiwKKyAgICAgICAg
ICAgICJieXRlcyI6IDcyLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAg
ICAgfQorICAgIF0KK30KKworNC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGxhc3QgZmlsZQoreworICAg
ICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAg
ICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJr
aW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdLAorICAg
ICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAg
ICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAg
ICB9CisgICAgXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51
bGwKKworNS4gQWZ0ZXIgYWRkaW5nIGFuIEhUTUwgc3RyaW5nCit7CisgICAgImRhdGEiOiB7Cisg
ICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3Ry
aW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIs
CisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAor
ICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1
c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAg
ICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVz
IjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9
CisKKzYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQoreworICAgICJkYXRh
IjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
Zm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIs
CisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQu
dHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAi
ZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgIH0KKyAgICBdCit9CisKKzcuIEFmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZQorewor
ICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjog
WworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAg
ICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAg
ICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAg
ICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDI3LAor
ICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5n
ZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis4LiBBZnRlciByZW1vdmluZyB0aGUg
SFRNTCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9
LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUi
OiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICAg
ICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjog
MjcsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQor
fQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKworOS4gQWZ0
ZXIgcmVtb3ZpbmcgdGhlIHNlY29uZCB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAg
ICAgInRleHQvcGxhaW4iOiAiaGVsbG8gd29ybGQiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAg
ImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9Cisg
ICAgXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxk
IGJlIG51bGw6IG51bGwKKworMTAuIEFmdGVyIHJlbW92aW5nIHRoZSBwbGFpbiB0ZXh0IHN0cmlu
ZworeworICAgICJkYXRhIjoge30sCisgICAgIml0ZW1zIjogW10sCisgICAgImZpbGVzIjogW10K
K30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCitUaGUgRGF0
YVRyYW5zZmVyJ3MgRmlsZUxpc3Qgc2hvdWxkIGJlIHRoZSBzYW1lIG9iamVjdDogdHJ1ZQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NDdhZjg2YzAzODI3MGQzZjg4N2QxOWYwYzNhMjVjMDdlNzZjOTdkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
aXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbApAQCAtMCwwICsxLDExMiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7
CisgICAgbWFyZ2luOiAwOworfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXYgc3R5bGU9ImZv
bnQtc2l6ZTogNDBweDsiIGlkPSJzb3VyY2UiPkNvcHkgdGhpcyB0ZXh0ITwvZGl2PgorICAgIDxw
PlRvIG1hbnVhbGx5IHRlc3QsIGNvcHkgdGhlIGFib3ZlIHRleHQuIFRoZSBvdXRwdXQgYmVsb3cg
ZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBlYWNoIG9wZXJhdGlvbiw8L3A+Cisg
ICAgPHA+ZGVzY3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQgdGV4dCBmb3IgZWFjaCBz
dGVwLiBUaGUgRGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhl
PC9wPgorICAgIDxwPm9wZXJhdGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLjwvcD4KKyAgICA8
cHJlIHN0eWxlPSJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyIgaWQ9Im91dHB1dCI+PC9wcmU+
Cis8L2JvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gd3JpdGUobWVzc2FnZSkgeworICAgIG91dHB1
dC50ZXh0Q29udGVudCArPSBgJHttZXNzYWdlfVxuYDsKK30KKworZnVuY3Rpb24gcmVwcmVzZW50
YXRpb25Gb3JGaWxlKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZSA/IHsKKyAgICAgICAgbmFtZTog
ZmlsZS5uYW1lLAorICAgICAgICBieXRlczogZmlsZS5zaXplLAorICAgICAgICB0eXBlOiBmaWxl
LnR5cGUKKyAgICB9IDogbnVsbDsKK30KKworZnVuY3Rpb24gdXBkYXRlT3V0cHV0VGV4dChkZXNj
cmlwdGlvbiwgZXZlbnQpIHsKKyAgICBjb25zdCBkYXRhSW5mbyA9IHt9OworICAgIGZvciAoY29u
c3QgdHlwZSBvZiBldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKQorICAgICAgICBkYXRhSW5mb1t0
eXBlXSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSh0eXBlKTsKKyAgICBjb25zdCBpdGVt
c0luZm8gPSBbXTsKKyAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXZlbnQuY2xpcGJvYXJkRGF0YS5p
dGVtcykgeworICAgICAgICBpdGVtc0luZm8ucHVzaCh7CisgICAgICAgICAgICB0eXBlOiBpdGVt
LnR5cGUsCisgICAgICAgICAgICBraW5kOiBpdGVtLmtpbmQsCisgICAgICAgICAgICBmaWxlOiBy
ZXByZXNlbnRhdGlvbkZvckZpbGUoaXRlbS5nZXRBc0ZpbGUoKSkKKyAgICAgICAgfSk7CisgICAg
fQorICAgIHdyaXRlKGBcbiR7ZGVzY3JpcHRpb259XG4ke0pTT04uc3RyaW5naWZ5KHsKKyAgICAg
ICAgZGF0YTogZGF0YUluZm8sCisgICAgICAgIGl0ZW1zOiBpdGVtc0luZm8sCisgICAgICAgIGZp
bGVzOiBBcnJheS5mcm9tKGV2ZW50LmNsaXBib2FyZERhdGEuZmlsZXMpLm1hcChyZXByZXNlbnRh
dGlvbkZvckZpbGUpCisgICAgfSwgbnVsbCwgIiAgICAiKX1gKTsKK30KKworZnVuY3Rpb24gcmVt
b3ZlQXQoaXRlbUxpc3QsIGluZGV4KSB7CisgICAgY29uc3QgcmVtb3ZlZEl0ZW0gPSBpdGVtTGlz
dFtpbmRleF07CisgICAgaXRlbUxpc3QucmVtb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gcmVtb3Zl
ZEl0ZW07Cit9CisKK3NvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJjb3B5IiwgZXZlbnQgPT4gewor
ICAgIGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAgICBldmVu
dC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZCgiaGVsbG8gd29ybGQiLCAidGV4dC9wbGFpbiIpOwor
ICAgIHVwZGF0ZU91dHB1dFRleHQoIjEuIEFmdGVyIGFkZGluZyBhIHN0cmluZyIsIGV2ZW50KTsK
KworICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgY29uc3QgYXJy
YXkgPSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAgYXJyYXkuZmlsbCgxNSk7CisgICAgZXZl
bnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQobmV3IEZpbGUoWyBidWZmZXIgXSwgImZvbyIsIHsg
dHlwZTogImN1c3RvbSIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjIuIEFmdGVyIGFkZGlu
ZyBhIGZpbGUgb2YgY3VzdG9tIHR5cGUiLCBldmVudCk7CisKKyAgICBldmVudC5jbGlwYm9hcmRE
YXRhLml0ZW1zLmFkZChuZXcgRmlsZShbCisgICAgICAgIG5ldyBCbG9iKFsiVGhpcyBwYXJ0IGlz
IGZyb20gYSBKYXZhU2NyaXB0IEJsb2IiXSwgeyB0eXBlIDogInRleHQvcGxhaW4iIH0pLAorICAg
ICAgICAiVGhpcyBwYXJ0IGlzIGp1c3QgZnJvbSBhIHBsYWluIHN0cmluZyIKKyAgICBdLCAiZmly
c3QudHh0IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQo
IjMuIEFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcGxhaW4gdGV4dCBmaWxlIiwgZXZlbnQpOworCisg
ICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAyKTsK
KyAgICB1cGRhdGVPdXRwdXRUZXh0KCI0LiBBZnRlciByZW1vdmluZyB0aGUgbGFzdCBmaWxlIiwg
ZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVs
bDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIGV2ZW50LmNsaXBib2FyZERh
dGEuaXRlbXMuYWRkKCI8YT5nb29kYnllIHdvcmxkPC9hPiIsICJ0ZXh0L2h0bWwiKTsKKyAgICB1
cGRhdGVPdXRwdXRUZXh0KCI1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmciLCBldmVudCk7
CisKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChuZXcgRmlsZShbICJUaGlzIGlz
IGp1c3QgYSBwbGFpbiBzdHJpbmciIF0sICJzZWNvbmQudHh0IiwgeyB0eXBlOiAidGV4dC9wbGFp
biIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBs
YWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZl
bnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiNy4gQWZ0
ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVk
SXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUo
KX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJkRGF0YS5p
dGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiOC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIEhU
TUwgc3RyaW5nIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBz
aG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92
ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMSk7CisgICAgdXBk
YXRlT3V0cHV0VGV4dCgiOS4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHNlY29uZCB0ZXh0IGZpbGUiLCBl
dmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxs
OiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1v
dmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAwKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0
KCIxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHBsYWluIHRleHQgc3RyaW5nIiwgZXZlbnQpOworICAg
IHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVk
SXRlbS5nZXRBc0ZpbGUoKX1gKTsKKyAgICB3cml0ZShgVGhlIERhdGFUcmFuc2ZlcidzIEZpbGVM
aXN0IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3Q6ICR7ZmlsZUxpc3QgPT0gZXZlbnQuY2xpcGJv
YXJkRGF0YS5maWxlc31gKTsKKworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9KTsKKwor
Z2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChzb3VyY2UsIDAsIHNvdXJjZSwgMSk7CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0cnVlKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIp
OworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FkYTY1
NDE5M2ZkZTBkYTVmZmI4YTc2NWYxYjBhODE2NTk5NjVjMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQt
ZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwNCBAQAorRHJhZyBtZSBvdXQu
CitUbyBtYW51YWxseSB0ZXN0LCBkcmFnIHRoZSBhYm92ZSB0ZXh0LiBUaGUgb3V0cHV0IGJlbG93
IGR1bXBzIERhdGFUcmFuc2ZlciBzdGF0ZSBmb2xsb3dpbmcgZWFjaCBvcGVyYXRpb24sCisKK2Rl
c2NyaWJlZCBkaXJlY3RseSBhYm92ZSB0aGUgb3V0cHV0IHRleHQgZm9yIGVhY2ggc3RlcC4gVGhl
IERhdGFUcmFuc2ZlciBzdGF0ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZQorCitvcGVy
YXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC4KKworCisxLiBBZnRlciBhZGRpbmcgYSBzdHJp
bmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvcGxhaW4iOiAiaGVsbG8gd29ybGQi
CisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbXQorfQorCisy
LiBBZnRlciBhZGRpbmcgYSBmaWxlIG9mIGN1c3RvbSB0eXBlCit7CisgICAgImRhdGEiOiB7Cisg
ICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3Ry
aW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIs
CisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmb28iLAor
ICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBlIjogImN1
c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAgImJ5dGVz
IjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAgICBdCit9
CisKKzMuIEFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcGxhaW4gdGV4dCBmaWxlCit7CisgICAgImRh
dGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtp
bmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQi
OiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJmb28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0
eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxl
IiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpcnN0
LnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNzIsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAg
ImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAg
ICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpcnN0LnR4dCIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiA3MiwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgIH0KKyAgICBdCit9CisKKzQuIEFmdGVyIHJlbW92aW5nIHRoZSBsYXN0IGZpbGUKK3sKKyAg
ICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAi
a2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJu
YW1lIjogImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAg
ICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAg
ICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAg
ICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBu
dWxsCisKKzUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmluZworeworICAgICJkYXRhIjogewor
ICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7Cisg
ICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogInN0
cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUi
LAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwK
KyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJj
dXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAg
ICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICJieXRl
cyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9CisgICAgXQor
fQorCis2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0
YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2lu
ZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6
ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUi
LAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25k
LnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAg
ImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAg
ICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAg
ICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAg
ICAgICB9CisgICAgXQorfQorCis3LiBBZnRlciByZW1vdmluZyB0aGUgY3VzdG9tIGZpbGUKK3sK
KyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6
IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAg
ICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAg
ICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyNywK
KyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQorfQorcmVtb3ZlZEl0ZW0u
Z2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKworOC4gQWZ0ZXIgcmVtb3ZpbmcgdGhl
IEhUTUwgc3RyaW5nCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAg
fSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQv
cGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxl
IjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0
L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUi
OiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAg
ICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7
CisgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6
IDI3LAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0K
K30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzkuIEFm
dGVyIHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxlCit7CisgICAgImRhdGEiOiB7CisgICAg
ICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxkIgorICAgIH0sCisgICAgIml0ZW1zIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAg
ICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfQor
ICAgIF0sCisgICAgImZpbGVzIjogW10KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3Vs
ZCBiZSBudWxsOiBudWxsCisKKzEwLiBBZnRlciByZW1vdmluZyB0aGUgcGxhaW4gdGV4dCBzdHJp
bmcKK3sKKyAgICAiZGF0YSI6IHt9LAorICAgICJpdGVtcyI6IFtdLAorICAgICJmaWxlcyI6IFtd
Cit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorVGhlIERh
dGFUcmFuc2ZlcidzIEZpbGVMaXN0IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3Q6IHRydWUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
aXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTQ0OTA4YTAwNmExNzhjM2UzOTE2NzdkMGQ3MjIyM2ZlODJiNWMyNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwKQEAgLTAsMCArMSwxMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9
ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAl
OworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJm
b250LXNpemU6IDQwcHg7IiBpZD0ic291cmNlIiBkcmFnZ2FibGU9InRydWUiPkRyYWcgbWUgb3V0
LjwvZGl2PgorICAgIDxwPlRvIG1hbnVhbGx5IHRlc3QsIGRyYWcgdGhlIGFib3ZlIHRleHQuIFRo
ZSBvdXRwdXQgYmVsb3cgZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBlYWNoIG9w
ZXJhdGlvbiw8L3A+CisgICAgPHA+ZGVzY3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQg
dGV4dCBmb3IgZWFjaCBzdGVwLiBUaGUgRGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBiZSBjb25z
aXN0ZW50IHdpdGggdGhlPC9wPgorICAgIDxwPm9wZXJhdGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBz
dGVwLjwvcD4KKyAgICA8cHJlIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlIiBpZD0i
b3V0cHV0Ij48L3ByZT4KKzwvYm9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB3cml0ZShtZXNzYWdl
KSB7CisgICAgb3V0cHV0LnRleHRDb250ZW50ICs9IGAke21lc3NhZ2V9XG5gOworfQorCitmdW5j
dGlvbiByZXByZXNlbnRhdGlvbkZvckZpbGUoZmlsZSkgeworICAgIHJldHVybiBmaWxlID8gewor
ICAgICAgICBuYW1lOiBmaWxlLm5hbWUsCisgICAgICAgIGJ5dGVzOiBmaWxlLnNpemUsCisgICAg
ICAgIHR5cGU6IGZpbGUudHlwZQorICAgIH0gOiBudWxsOworfQorCitmdW5jdGlvbiB1cGRhdGVP
dXRwdXRUZXh0KGRlc2NyaXB0aW9uLCBldmVudCkgeworICAgIGNvbnN0IGRhdGFJbmZvID0ge307
CisgICAgZm9yIChjb25zdCB0eXBlIG9mIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcykKKyAgICAg
ICAgZGF0YUluZm9bdHlwZV0gPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSh0eXBlKTsKKyAg
ICBjb25zdCBpdGVtc0luZm8gPSBbXQorICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5kYXRh
VHJhbnNmZXIuaXRlbXMpIHsKKyAgICAgICAgaXRlbXNJbmZvLnB1c2goeworICAgICAgICAgICAg
dHlwZTogaXRlbS50eXBlLAorICAgICAgICAgICAga2luZDogaXRlbS5raW5kLAorICAgICAgICAg
ICAgZmlsZTogcmVwcmVzZW50YXRpb25Gb3JGaWxlKGl0ZW0uZ2V0QXNGaWxlKCkpCisgICAgICAg
IH0pOworICAgIH0KKyAgICB3cml0ZShgXG4ke2Rlc2NyaXB0aW9ufVxuJHtKU09OLnN0cmluZ2lm
eSh7CisgICAgICAgIGRhdGE6IGRhdGFJbmZvLAorICAgICAgICBpdGVtczogaXRlbXNJbmZvLAor
ICAgICAgICBmaWxlczogQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpLm1hcChy
ZXByZXNlbnRhdGlvbkZvckZpbGUpCisgICAgfSwgbnVsbCwgIiAgICAiKX1gKTsKK30KKworZnVu
Y3Rpb24gcmVtb3ZlQXQoaXRlbUxpc3QsIGluZGV4KSB7CisgICAgY29uc3QgcmVtb3ZlZEl0ZW0g
PSBpdGVtTGlzdFtpbmRleF07CisgICAgaXRlbUxpc3QucmVtb3ZlKGluZGV4KTsKKyAgICByZXR1
cm4gcmVtb3ZlZEl0ZW07Cit9CisKK291dHB1dC5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIs
IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpOworb3V0cHV0LmFkZEV2ZW50TGlzdGVu
ZXIoImRyb3AiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTsKK3NvdXJjZS5hZGRF
dmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiB7CisgICAgY29uc3QgZmlsZUxpc3Qg
PSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1z
LmFkZCgiaGVsbG8gd29ybGQiLCAidGV4dC9wbGFpbiIpOworICAgIHVwZGF0ZU91dHB1dFRleHQo
IjEuIEFmdGVyIGFkZGluZyBhIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGNvbnN0IGJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgY29uc3QgYXJyYXkgPSBuZXcgSW50OEFycmF5KGJ1
ZmZlcik7CisgICAgYXJyYXkuZmlsbCgxNSk7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1z
LmFkZChuZXcgRmlsZShbIGJ1ZmZlciBdLCAiZm9vIiwgeyB0eXBlOiAiY3VzdG9tIiB9KSk7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiMi4gQWZ0ZXIgYWRkaW5nIGEgZmlsZSBvZiBjdXN0b20gdHlw
ZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5hZGQobmV3IEZpbGUo
WworICAgICAgICBuZXcgQmxvYihbIlRoaXMgcGFydCBpcyBmcm9tIGEgSmF2YVNjcmlwdCBCbG9i
Il0sIHsgdHlwZSA6ICJ0ZXh0L3BsYWluIiB9KSwKKyAgICAgICAgIlRoaXMgcGFydCBpcyBqdXN0
IGZyb20gYSBwbGFpbiBzdHJpbmciCisgICAgXSwgImZpcnN0LnR4dCIsIHsgdHlwZTogInRleHQv
cGxhaW4iIH0pKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIzLiBBZnRlciBhZGRpbmcgdGhlIGZp
cnN0IHBsYWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3Zl
QXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCAyKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI0
LiBBZnRlciByZW1vdmluZyB0aGUgbGFzdCBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1v
dmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0Zp
bGUoKX1gKTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoIjxhPmdvb2RieWUg
d29ybGQ8L2E+IiwgInRleHQvaHRtbCIpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjUuIEFmdGVy
IGFkZGluZyBhbiBIVE1MIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zl
ci5pdGVtcy5hZGQobmV3IEZpbGUoWyAiVGhpcyBpcyBqdXN0IGEgcGxhaW4gc3RyaW5nIiBdLCAi
c2Vjb25kLnR4dCIsIHsgdHlwZTogInRleHQvcGxhaW4iIH0pKTsKKyAgICB1cGRhdGVPdXRwdXRU
ZXh0KCI2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUiLCBldmVudCk7CisK
KyAgICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcywgMSk7
CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxl
IiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUg
bnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0g
cmVtb3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCAxKTsKKyAgICB1cGRhdGVPdXRwdXRU
ZXh0KCI4LiBBZnRlciByZW1vdmluZyB0aGUgSFRNTCBzdHJpbmciLCBldmVudCk7CisgICAgd3Jp
dGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVt
LmdldEFzRmlsZSgpfWApOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5kYXRh
VHJhbnNmZXIuaXRlbXMsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjkuIEFmdGVyIHJlbW92
aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRl
bS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1g
KTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1z
LCAwKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHBsYWlu
IHRleHQgc3RyaW5nIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUo
KSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKyAgICB3cml0
ZShgVGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3Q6
ICR7ZmlsZUxpc3QgPT0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzfWApOworCisgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKK30pOworCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmV2ZW50U2VuZGVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgMjUpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEw
MDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgNDAwKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Cit9Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDRmOWM0NGMzMzAxMTA0ZTZjYWY0MzdjMjRkZTUzZDZlNGZlMmRmZDAuLjA2MWU3NGJmZWJkM2Vm
NDk2MjhkNjk5MDYzNmU1OGZlNzNiODIyOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTEsMyArMTEs
NSBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1j
dXN0b20uaHRtbCBbIFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0
LWRhdGEtb24tcGFzdGUtcGxhaW4tdGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1yaWNoLXRleHQuaHRtbCBbIFBhc3Mg
XQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtbm9uLW5vcm1hbGl6
ZWQtdHlwZXMuaHRtbCBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
aXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbCBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLmh0bWwg
WyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBlYzQ5ZmM0OGE0ZTliMGIyYTBmNGMzY2I3MGU2ZmQxOWFlOWRlY2RkLi5kZGJiMDgx
ZGI3MzcxM2Y1NmNmMTYwOGViNGRhMDE1MGJjYTdkZTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMiw2ICsxMiw3IEBAIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcGxhaW4tdGV4dC5odG1s
IFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1k
cm9wLXJpY2gtdGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFu
c2Zlci1nZXQtZGF0YS1vbi1kcm9wLXVybC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1lbmQtY3Jhc2gtYWNjZXNzaW5nLWl0ZW0tbGlzdC5odG1sIFsgUGFzcyBdCitlZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy5o
dG1sIFsgUGFzcyBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5k
IHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322729</attachid>
            <date>2017-10-04 14:49:02 -0700</date>
            <delta_ts>2017-10-04 21:51:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177853-20171004144901.patch</filename>
            <type>text/plain</type>
            <size>52934</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlMGIxZDYzMmQ2MTE5
M2I3OGUwOTNhY2Q4YjQ1MTMwYWY5NDRhNi4uZTJmOTI2NTlkNGFjZjEwZDY2YWQwMGU3ZDA2N2Rj
ZGY1Y2RlMmYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBz
dXBwb3J0IGZvciB0aGUgdmVyc2lvbiBvZiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQgdGhhdCB0
YWtlcyBhIEZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ4MDczNDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZHMgdmVyeSBiYXNpYyBzdXBw
b3J0IGZvciBEYXRhVHJhbnNmZXJJdGVtTGlzdC5hZGQoRmlsZSkuIFNvIGZhciwgYSBGaWxlIGFk
ZGVkIGluIHRoaXMgd2F5IGNhbiBvbmx5IGJlIHJlYWQKKyAgICAgICAgYmFjayBmcm9tIHRoZSBz
YW1lIERhdGFUcmFuc2ZlciwgZHVyaW5nIGRyYWdzdGFydCBvciBjb3B5LiBUaGlzIEZpbGUgaXNu
J3Qgd3JpdHRlbiB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZAorICAgICAgICB5ZXQsIHNvIGV2
ZW4gZHJvcHBpbmcgb3IgcGFzdGluZyBpbiB0aGUgc2FtZSBwYWdlIHdpbGwgbm90IHRyYW5zZmVy
IHRoZSBGaWxlLCBidXQgdGhpcyBicmluZ3MgdXMgY2xvc2VyIHRvCisgICAgICAgIHBhcml0eSB3
aXRoIG90aGVyIGJyb3dzZXJzLiBTZWUgcGVyLW1ldGhvZCBjb21tZW50cyBmb3IgZGV0YWlscy4K
KworICAgICAgICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5Lmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlz
dC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwKKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjp1cGRhdGVGaWxlTGlzdCk6CisKKyAg
ICAgICAgUmVjb21wdXRlIHRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlzdC4gVGhpcyBiZWhhdmVz
IHRoZSBzYW1lIHdheSBhcyBkZXN0cm95aW5nIHRoZSBGaWxlTGlzdCBhbHRvZ2V0aGVyIGFuZAor
ICAgICAgICBidWlsZGluZyBpdCBmcm9tIHNjcmF0Y2gsIGJ1dCB3ZSBhdm9pZCB0aGF0IGFwcHJv
YWNoIGJlY2F1c2UgdGhlIEZpbGVMaXN0IG9iamVjdCBuZWVkcyB0byBtYWludGFpbiB0aGUgc2Ft
ZSBET00KKyAgICAgICAgd3JhcHBlciBhZnRlciBhIEZpbGUtYmFja2VkIGl0ZW0gaXMgcmVtb3Zl
ZC4KKworICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjppdGVtTGlzdERpZEFkZEZpbGUp
OgorCisgICAgICAgIEFkZCB0aGUgbmV3bHkgYXBwZW5kZWQgRGF0YVRyYW5zZmVySXRlbSdzIEZp
bGUgdG8gdGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0LgorCisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXI6OnR5cGVzIGNvbnN0KToKKworICAgICAgICBSZXR1cm4gb25seSB0aGUgIkZp
bGVzIiB0eXBlIGlmIHRoZXJlIGFyZSBmaWxlLWJhY2tlZCBpdGVtcyBpbiB0aGUgRGF0YVRyYW5z
ZmVyJ3MgaXRlbSBsaXN0LgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnVwZGF0
ZWRGaWxlc0ZvckZpbGVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6ZmlsZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVySXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbTo6ZmlsZSBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIpOgorCisgICAgICAgIFdoZW4gcmVtb3Zp
bmcgYSBGaWxlLCBvbmx5IGNsZWFyIGZyb20gdGhlIERhdGFUcmFuc2ZlcidzIHBhc3RlYm9hcmQg
aWYgdGhlIHJlbW92ZWQgaXRlbSBpcyBub3QgYSBGaWxlIChvdGhlcndpc2UsCisgICAgICAgIGNs
ZWFyaW5nIGEgRmlsZSB0aGF0IHNoYXJlcyB0aGUgc2FtZSB0eXBlIGFzIHNvbWUgb3RoZXIgaXRl
bSBpbiB0aGUgcGFzdGVib2FyZCB3aWxsIGVycm9uZW91c2x5IGNsZWFyIHRoYXQgb3RoZXIKKyAg
ICAgICAgaXRlbSBhcyB3ZWxsKS4gQWRkaXRpb25hbGx5LCBjYWxsIG91dCB0byB0aGUgRGF0YVRy
YW5zZmVyIHRvIHVwZGF0ZSB0aGUgRmlsZUxpc3QuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpo
YXNJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6
aXRlbXMgY29uc3QpOgorCisgICAgICAgIEFkZCBoZWxwZXJzIGZvciBkaXJlY3RseSBhY2Nlc3Np
bmcgYW4gaXRlbSBsaXN0J3MgaXRlbXMuIGl0ZW1zKCkgc2hvdWxkIGJlIHVzZWQgaW4gY29uanVu
Y3Rpb24gd2l0aCBoYXNJdGVtcygpLgorICAgICAgICBUaGlzIHJvdXRlIGlzIHRha2VuIHRvICgx
KSBhdm9pZCBoYXZpbmcgdG8gY29weSB0aGUgdmVjdG9yIG9mIEZpbGVzLCBhbmQgKDIpIHRvIGF2
b2lkIGdlbmVyYXRpbmcgbV9pdGVtcyBpZiBpdAorICAgICAgICBkb2Vzbid0IGFscmVhZHkgZXhp
c3QuCisKIDIwMTctMTAtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjIyNTk1KTogSW50ZXJtaXR0ZW50IGNyYXNoIHdoaWxl
IGFjY2Vzc2luZyBEYXRhVHJhbnNmZXJJdGVtTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmNwcAppbmRleCBhZGRlZjBmOTE3M2M0NTZhODFlYWU3NDkwNTEyNGYwYzJmNDkzZmUyLi5mOTgy
ZDU3ZTc3NGVmYTdmYzBmMjA2MDE1NWU1MzQ2MDY3YzRhYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgorI2luY2x1ZGUgIkRhdGFUcmFuc2Zl
ckl0ZW0uaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIgogI2luY2x1ZGUgIkRy
YWdEYXRhLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC0xNjEsNiArMTYyLDI2IEBAIHZvaWQg
RGF0YVRyYW5zZmVyOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQogICAgICAgICBtX2l0ZW1MaXN0LT5kaWRTZXRTdHJpbmdEYXRhKG5vcm1hbGl6ZWRUeXBl
KTsKIH0KIAordm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KCkKK3sKKyAgICAvLyBJ
ZiB3ZSdyZSByZW1vdmluZyBhbiBpdGVtLCB0aGVuIHRoZSBpdGVtIGxpc3QgbXVzdCBleGlzdCwg
d2hpY2ggaW1wbGllcyB0aGF0IHRoZSBmaWxlIGxpc3QgbXVzdCBoYXZlIGJlZW4gaW5pdGlhbGl6
ZWQgYWxyZWFkeS4KKyAgICBBU1NFUlQobV9maWxlTGlzdCk7CisgICAgQVNTRVJUKGNhbldyaXRl
RGF0YSgpKTsKKworICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJk
QW5kSXRlbUxpc3QoKTsKK30KKwordm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVUb0l0ZW1M
aXN0KCkKK3sKKyAgICBBU1NFUlQoY2FuV3JpdGVEYXRhKCkpOworICAgIGlmICghbV9maWxlTGlz
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgbmV3SXRlbSA9IG1faXRlbUxpc3QtPml0
ZW1zKCkubGFzdCgpOworICAgIEFTU0VSVChuZXdJdGVtLT5pc0ZpbGUoKSk7CisgICAgbV9maWxl
TGlzdC0+YXBwZW5kKCpuZXdJdGVtLT5maWxlKCkpOworfQorCiBEYXRhVHJhbnNmZXJJdGVtTGlz
dCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQpAQCAtMTgx
LDYgKzIwMiw5IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFUcmFuc2Zlcjo6dHlwZXMoKSBjb25zdAog
ICAgICAgICByZXR1cm4gdHlwZXM7CiAgICAgfQogCisgICAgaWYgKG1faXRlbUxpc3QgJiYgbV9p
dGVtTGlzdC0+aGFzSXRlbXMoKSAmJiBtX2l0ZW1MaXN0LT5pdGVtcygpLmZpbmRNYXRjaGluZyhb
XSAoY29uc3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+aXNGaWxlKCk7IH0pICE9IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm4geyAiRmlsZXMiIH07CisKICAgICBpZiAobV9wYXN0ZWJvYXJk
LT5jb250YWluc0ZpbGVzKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3Bhc3RlYm9hcmQtPnR5cGVz
U2FmZUZvckJpbmRpbmdzKCkuY29udGFpbnMoIkZpbGVzIikpOwogICAgICAgICByZXR1cm4geyAi
RmlsZXMiIH07CkBAIC0xOTEsNiArMjE1LDMxIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFUcmFuc2Zl
cjo6dHlwZXMoKSBjb25zdAogICAgIHJldHVybiB0eXBlczsKIH0KIAorVmVjdG9yPFJlZjxGaWxl
Pj4gRGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdAor
eworICAgIGJvb2wgYWRkZWRGaWxlc0Zyb21QYXN0ZWJvYXJkID0gZmFsc2U7CisgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CisgICAgaWYgKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkg
eworICAgICAgICBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyOworICAgICAgICBt
X3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKKyAgICAgICAgZmlsZXMgPSBXVEZNb3ZlKHJlYWRl
ci5maWxlcyk7CisgICAgICAgIGFkZGVkRmlsZXNGcm9tUGFzdGVib2FyZCA9ICFmaWxlcy5pc0Vt
cHR5KCk7CisgICAgfQorCisgICAgYm9vbCBpdGVtTGlzdENvbnRhaW5zSXRlbXMgPSBmYWxzZTsK
KyAgICBpZiAobV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0LT5oYXNJdGVtcygpKSB7CisgICAgICAg
IGZvciAoYXV0byYgaXRlbSA6IG1faXRlbUxpc3QtPml0ZW1zKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGZpbGUgPSBpdGVtLT5maWxlKCkpIHsKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBl
bmQoKmZpbGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGl0ZW1MaXN0Q29u
dGFpbnNJdGVtcyA9IHRydWU7CisgICAgfQorCisgICAgQVNTRVJUKCFpdGVtTGlzdENvbnRhaW5z
SXRlbXMgfHwgIWFkZGVkRmlsZXNGcm9tUGFzdGVib2FyZCk7CisgICAgcmV0dXJuIGZpbGVzOwor
fQorCiBGaWxlTGlzdCYgRGF0YVRyYW5zZmVyOjpmaWxlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFj
YW5SZWFkRGF0YSgpKSB7CkBAIC0yMDEsMTkgKzI1MCw5IEBAIEZpbGVMaXN0JiBEYXRhVHJhbnNm
ZXI6OmZpbGVzKCkgY29uc3QKICAgICAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogICAgIH0KIAot
ICAgIGlmIChmb3JEcmFnKCkgJiYgIWZvckZpbGVEcmFnKCkpIHsKLSAgICAgICAgaWYgKG1fZmls
ZUxpc3QpCi0gICAgICAgICAgICBBU1NFUlQobV9maWxlTGlzdC0+aXNFbXB0eSgpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKLSAg
ICAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwotICAgIH0KKyAgICBpZiAoIW1fZmlsZUxpc3QpCisg
ICAgICAgIG1fZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKGZpbGVzRnJvbVBhc3RlYm9hcmRB
bmRJdGVtTGlzdCgpKTsKIAotICAgIGlmICghbV9maWxlTGlzdCkgewotICAgICAgICBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyOwotICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQo
cmVhZGVyKTsKLSAgICAgICAgbV9maWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShy
ZWFkZXIuZmlsZXMpKTsKLSAgICB9CiAgICAgcmV0dXJuICptX2ZpbGVMaXN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggMDlkNGRmZjMyYjExZmI4ZmVmMmUwN2JjOGUxNWIz
YzQwNWUyZjE2Zi4uZWRhMGVkZWI3N2VlNjFmYjFmMTNjYjJiZjg5MWVmMmJhMTUwZjBkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEcmFnRGF0
YTsKIGNsYXNzIERyYWdJbWFnZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxlTGlz
dDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBQYXN0ZWJvYXJkOwogCiBjbGFzcyBEYXRhVHJhbnNmZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhVHJhbnNmZXI+IHsKQEAgLTk5LDYgKzEwMCw5IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0RyYWdJbWFnZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lk
IGRpZEFkZEZpbGVUb0l0ZW1MaXN0KCk7CisgICAgdm9pZCB1cGRhdGVGaWxlTGlzdCgpOworCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQYXN0ZSwgRHJhZ0FuZERyb3BE
YXRhLCBEcmFnQW5kRHJvcEZpbGVzLCBJbnB1dEV2ZW50IH07CiAgICAgRGF0YVRyYW5zZmVyKFN0
b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gVHlwZTo6Q29weUFu
ZFBhc3RlKTsKQEAgLTExMSw2ICsxMTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgZm9yRmlsZURy
YWcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKKyAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdDsKKwogICAgIFN0b3Jl
TW9kZSBtX3N0b3JlTW9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gbV9wYXN0
ZWJvYXJkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJhbnNmZXJJdGVtTGlzdD4gbV9pdGVt
TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDlhYzExZTdjYjMz
NWY3MzEwMDNmYTE2NWExODYyNGZlN2ZhZWUyNTYuLjk2ODU1MjkxODdlNjZkNDM5YmJmNTAyYTcw
NzZkMDZiNDg4Yzk3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaApAQCAt
NTQsNiArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB+RGF0YVRyYW5zZmVySXRlbSgpOwogCisgICAg
UmVmUHRyPEZpbGU+IGZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGU7IH0KICAgICB2b2lkIGNs
ZWFyTGlzdEFuZFB1dEludG9EaXNhYmxlZE1vZGUoKTsKIAogICAgIGJvb2wgaXNGaWxlKCkgY29u
c3QgeyByZXR1cm4gbV9maWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVySXRlbUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW1MaXN0LmNwcAppbmRleCA1OTcwNGI0YjU2MGM4ZDYzZDhkMWJlN2FmODZhNTI4MmVkMmFiMjgz
Li42OTBhMmFiMDc5NWUyOWJiYWNmYTllYjY5N2FjNDMxZTA5NjMyZWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAKQEAgLTg0LDkgKzg0LDE0IEBAIEV4
Y2VwdGlvbk9yPFJlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPj4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6
OmFkZChjb25zdCBTdHJpbmcmIGRhCiAgICAgcmV0dXJuIFJlZlB0cjxEYXRhVHJhbnNmZXJJdGVt
PiB7IG1faXRlbXMtPmxhc3QoKS5jb3B5UmVmKCkgfTsKIH0KIAotUmVmUHRyPERhdGFUcmFuc2Zl
ckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQoUmVmPEZpbGU+JiYpCitSZWZQdHI8RGF0
YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmFkZChSZWY8RmlsZT4mJiBmaWxl
KQogewotICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9kYXRhVHJhbnNmZXIuY2FuV3Jp
dGVEYXRhKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZW5zdXJlSXRlbXMoKS5h
cHBlbmQoRGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigqdGhpcyksIGZpbGUtPnR5cGUoKSwgZmlsZS5jb3B5UmVmKCkpKTsKKyAgICBtX2RhdGFU
cmFuc2Zlci5kaWRBZGRGaWxlVG9JdGVtTGlzdCgpOworICAgIHJldHVybiBSZWZQdHI8RGF0YVRy
YW5zZmVySXRlbT4geyBtX2l0ZW1zLT5sYXN0KCkucHRyKCkgfTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSh1bnNpZ25lZCBpbmRleCkKQEAgLTk4
LDEzICsxMDMsMTYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJl
bW92ZSh1bnNpZ25lZCBpbmRleCkKICAgICBpZiAoaXRlbXMuc2l6ZSgpIDw9IGluZGV4KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsgLy8gTWF0Y2hlcyBHZWNr
by4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjkyNQogCi0gICAg
Ly8gRklYTUU6IEhhbmRsZSB0aGUgcmVtb3ZhbCBvZiBmaWxlcyBvbmNlIHdlIGFkZGVkIHRoZSBz
dXBwb3J0IGZvciB3cml0aW5nIGEgRmlsZS4KLSAgICBBU1NFUlQoIWl0ZW1zW2luZGV4XS0+aXNG
aWxlKCkpOwotCisgICAgLy8gU2luY2UgZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRlbXMgYXJl
IG5vdCBhY3R1YWxseSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHlldCwgd2UgZG9uJ3QgbmVl
ZCB0byByZW1vdmUgYW55CisgICAgLy8gdGVtcG9yYXJ5IGZpbGVzLiBXaGVuIHdlIHN1cHBvcnQg
d3JpdGluZyBmaWxlLWJhY2tlZCBEYXRhVHJhbnNmZXJJdGVtcyB0byB0aGUgcGxhdGZvcm0gcGFz
dGVib2FyZCwgd2Ugd2lsbCBuZWVkCisgICAgLy8gdG8gY2xlYW4gdXAgaGVyZS4KICAgICBhdXRv
JiByZW1vdmVkSXRlbSA9IGl0ZW1zW2luZGV4XS5nZXQoKTsKLSAgICBtX2RhdGFUcmFuc2Zlci5w
YXN0ZWJvYXJkKCkuY2xlYXIocmVtb3ZlZEl0ZW0udHlwZSgpKTsKKyAgICBpZiAoIXJlbW92ZWRJ
dGVtLmlzRmlsZSgpKQorICAgICAgICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuY2xlYXIo
cmVtb3ZlZEl0ZW0udHlwZSgpKTsKICAgICByZW1vdmVkSXRlbS5jbGVhckxpc3RBbmRQdXRJbnRv
RGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMucmVtb3ZlKGluZGV4KTsKKyAgICBpZiAocmVtb3Zl
ZEl0ZW0uaXNGaWxlKCkpCisgICAgICAgIG1fZGF0YVRyYW5zZmVyLnVwZGF0ZUZpbGVMaXN0KCk7
CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTEyLDExICsxMjAsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSh1bnNpZ25lZCBpbmRleCkKIHZvaWQg
RGF0YVRyYW5zZmVySXRlbUxpc3Q6OmNsZWFyKCkKIHsKICAgICBtX2RhdGFUcmFuc2Zlci5wYXN0
ZWJvYXJkKCkuY2xlYXIoKTsKKyAgICBib29sIHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUgPSBm
YWxzZTsKICAgICBpZiAobV9pdGVtcykgewotICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiAqbV9p
dGVtcykKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogKm1faXRlbXMpIHsKKyAgICAgICAgICAg
IHJlbW92ZWRJdGVtQ29udGFpbmluZ0ZpbGUgfD0gaXRlbS0+aXNGaWxlKCk7CiAgICAgICAgICAg
ICBpdGVtLT5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CisgICAgICAgIH0KICAg
ICAgICAgbV9pdGVtcy0+Y2xlYXIoKTsKICAgICB9CisKKyAgICBpZiAocmVtb3ZlZEl0ZW1Db250
YWluaW5nRmlsZSkKKyAgICAgICAgbV9kYXRhVHJhbnNmZXIudXBkYXRlRmlsZUxpc3QoKTsKIH0K
IAogVmVjdG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4mIERhdGFUcmFuc2Zlckl0ZW1MaXN0Ojpl
bnN1cmVJdGVtcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlz
dC5oCmluZGV4IGZjZTY5NDc0MWMyZDY0NTFkNjhmMTVkOTMyOWQ1OGY1YjA3YTg5ZjAuLjEzMTIw
ZTU0YWQzNjgwYWU2Njk4M2NmZmUyY2NhMmQ0NGJiNjdiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCkBAIC02NSw2ICs2NSwxMiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZENsZWFyU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIHZvaWQg
ZGlkU2V0U3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIGJvb2wgaGFzSXRlbXMo
KSBjb25zdCB7IHJldHVybiBtX2l0ZW1zLmhhc192YWx1ZSgpOyB9CisgICAgY29uc3QgVmVjdG9y
PFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4mIGl0ZW1zKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2l0ZW1zKTsKKyAgICAgICAgcmV0dXJuICptX2l0ZW1zOworICAgIH0KIAogcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBhOWY2YmUwYTNiOWU2MDVkOTE4YzkyZGQyMTFkYzdkOTkzODEyMzQzLi4wOTY3
NWU2OWFlZGJlMDYxYzI4YTQ5OGIzNjk5NTViNTNlNTNlNjQ2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTctMTAtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIHRoZSB2ZXJzaW9uIG9mIERhdGFUcmFuc2Zl
ckl0ZW1MaXN0LmFkZCB0aGF0IHRha2VzIGEgRmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NDgwNzM0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAg
QWRkIHRlc3RzIHRvIHZlcmlmeSB0aGF0IEZpbGVzIGNhbiBiZSBhZGRlZCB0byBhbmQgcmVtb3Zl
ZCBmcm9tIHRoZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCwgYW5kIGFsc28gcmVhZCBiYWNrIHZpYQor
ICAgICAgICBib3RoIHRoZSBpdGVtIGxpc3QgYW5kIHRoZSBEYXRhVHJhbnNmZXIncyBGaWxlTGlz
dCB3aGVuIGNvcHlpbmcgYW5kIGRyYWdnaW5nLiBBZGRpdGlvbmFsbHksIGFkZHMgYSB0ZXN0IHRo
YXQgYWRkcworICAgICAgICBhbmQgcmVtb3ZlcyB0aGUgc2FtZSBGaWxlIHRvIHRoZSBEYXRhVHJh
bnNmZXJJdGVtTGlzdCBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0
LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRp
cGxlLXRpbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
LXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW9uLWNvcHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxp
c3QtYWRkLWZpbGUtb24tZHJhZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mt
c2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjI1OTUpOiBJbnRlcm1p
dHRlbnQgY3Jhc2ggd2hpbGUgYWNjZXNzaW5nIERhdGFUcmFuc2Zlckl0ZW1MaXN0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBmNmRmZjQzMTY4M2NhMGU4MmUwYjgyYmY2NzlkYzhhN2E2NzZiMWU4Li45
ZDg5ZDczOThlMTA2NjMxMGIwOTFhNGE0NGJkNTA3ZTNlYTQ1MTY2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTcxLDYgKzcxLDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0
LWRhdGEtb24tZHJvcC1wbGFpbi10ZXh0Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcmljaC10ZXh0Lmh0bWwgWyBTa2lwIF0K
IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtdXJsLmh0
bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWVuZC1jcmFzaC1hY2Nlc3Npbmct
aXRlbS1saXN0Lmh0bWwgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5IGlPUyBz
dXBwb3J0cyBRdWlja0xvb2sKIHF1aWNrbG9vayBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxl
LW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwMTYwNjk4NDM0YmU2ODk2OTQ3NzFkMjQ0ZDRiMjgxYmFh
NjdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MDEgQEAKK0NvcHkgdGhpcyB0ZXh0IQorVG8gbWFudWFsbHkgdGVzdCwg
Y29weSB0aGUgYWJvdmUgdGV4dC4gVGhlIG91dHB1dCBiZWxvdyBkdW1wcyBEYXRhVHJhbnNmZXIg
c3RhdGUgZm9sbG93aW5nIGVhY2ggb3BlcmF0aW9uLAorCitkZXNjcmliZWQgZGlyZWN0bHkgYWJv
dmUgdGhlIG91dHB1dCB0ZXh0IGZvciBlYWNoIHN0ZXAuIFRoZSBEYXRhVHJhbnNmZXIgc3RhdGUg
c2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUKKworb3BlcmF0aW9uIHBlcmZvcm1lZCBhdCBl
YWNoIHN0ZXAuCisKKworMS4gQWZ0ZXIgYWRkaW5nIGFsbCBpdGVtcworeworICAgICJkYXRhIjog
eworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7
CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
ZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2lu
ZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAgICAgICAg
ImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAg
ICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAg
ICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiZmlsZS50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAg
ICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CisKKzIuIEFmdGVyIHJl
bW92aW5nIGF0IGluZGV4IDQKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIK
KyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJm
aWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAg
ICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgor
ICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAg
ImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAg
ICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBl
IjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3VyaS1saXN0IiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAg
ICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAg
ICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAg
ICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0
L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAg
ICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAgICAg
ICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAg
ICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAg
ICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDog
bnVsbAorCiszLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAxCit7CisgICAgImRhdGEiOiB7Cisg
ICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmls
ZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxl
LnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJz
dHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAiZmlsZS50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBd
LAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50
eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0
L3BsYWluIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxl
LnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRl
eHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBz
aG91bGQgYmUgbnVsbDogbnVsbAorCis0LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAzCit7Cisg
ICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAg
ICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvdXJpLWxpc3QiLAorICAg
ICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAg
ICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAg
InR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdl
dEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisKKzUuIEFmdGVyIGNsZWFyaW5nIGl0ZW1z
Cit7CisgICAgImRhdGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQor
fQorCis2LiBBZnRlciBhZGRpbmcgdHdvIGZpbGVzIGFuZCBzb21lIHN0cmluZyBkYXRhIGFnYWlu
Cit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRl
bXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAg
ICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjAs
CisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAg
ICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAor
ICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjog
MjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAg
ICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQorICAgIF0KK30KKworNy4gQWZ0
ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMgoreworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMi
OiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlw
ZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAg
ICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZmlsZS50eHQiLAorICAgICAg
ICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxh
aW4iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0
eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAg
ICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0
eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAg
ICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAg
ICAgICAgICAgICAgImJ5dGVzIjogMjAsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9w
bGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmaWxlLnR4dCIsCisgICAgICAgICAgICAi
Ynl0ZXMiOiAyMCwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAgICAgICAg
ICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAg
fQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxs
CisKKzguIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAg
ICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJmaWxlIiwK
KyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0
IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmls
ZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwKKyAgICAg
ICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAg
ICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxs
OiBudWxsCisKKzkuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDEKK3sKKyAgICAiZGF0YSI6IHsK
KyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJm
aWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZp
bGUudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyMCwKKyAgICAgICAgICAgICAgICAi
dHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAg
ICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpbGUudHh0IiwK
KyAgICAgICAgICAgICJieXRlcyI6IDIwLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFp
biIKKyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBi
ZSBudWxsOiBudWxsCisKKzEwLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAwCit7CisgICAgImRh
dGEiOiB7fSwKKyAgICAiaXRlbXMiOiBbXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVtb3ZlZEl0
ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxl
LW11bHRpcGxlLXRpbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMmUxMWY1NzgwZmJjODA1NDRlMDYwMGRkMjliNzVkMzNkZjZiYzY0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRl
bS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLmh0bWwKQEAgLTAsMCArMSwxMzYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lk
dGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAx
MDAlOworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IHN0eWxl
PSJmb250LXNpemU6IDQwcHg7IiBpZD0ic291cmNlIj5Db3B5IHRoaXMgdGV4dCE8L2Rpdj4KKyAg
ICA8cD5UbyBtYW51YWxseSB0ZXN0LCBjb3B5IHRoZSBhYm92ZSB0ZXh0LiBUaGUgb3V0cHV0IGJl
bG93IGR1bXBzIERhdGFUcmFuc2ZlciBzdGF0ZSBmb2xsb3dpbmcgZWFjaCBvcGVyYXRpb24sPC9w
PgorICAgIDxwPmRlc2NyaWJlZCBkaXJlY3RseSBhYm92ZSB0aGUgb3V0cHV0IHRleHQgZm9yIGVh
Y2ggc3RlcC4gVGhlIERhdGFUcmFuc2ZlciBzdGF0ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRo
IHRoZTwvcD4KKyAgICA8cD5vcGVyYXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC48L3A+Cisg
ICAgPHByZSBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSIgaWQ9Im91dHB1dCI+PC9w
cmU+Cis8L2JvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gd3JpdGUobWVzc2FnZSkgeworICAgIG91
dHB1dC50ZXh0Q29udGVudCArPSBgJHttZXNzYWdlfVxuYDsKK30KKworZnVuY3Rpb24gcmVwcmVz
ZW50YXRpb25Gb3JGaWxlKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZSA/IHsKKyAgICAgICAgbmFt
ZTogZmlsZS5uYW1lLAorICAgICAgICBieXRlczogZmlsZS5zaXplLAorICAgICAgICB0eXBlOiBm
aWxlLnR5cGUKKyAgICB9IDogbnVsbDsKK30KKworZnVuY3Rpb24gcmVtb3ZlQXQoaXRlbUxpc3Qs
IGluZGV4KSB7CisgICAgY29uc3QgcmVtb3ZlZEl0ZW0gPSBpdGVtTGlzdFtpbmRleF07CisgICAg
aXRlbUxpc3QucmVtb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gcmVtb3ZlZEl0ZW07Cit9CisKK2Z1
bmN0aW9uIHVwZGF0ZU91dHB1dFRleHQoZGVzY3JpcHRpb24sIGV2ZW50LCBpdGVtTGlzdCwgZmls
ZUxpc3QpIHsKKyAgICBjb25zdCBkYXRhSW5mbyA9IHt9OworICAgIGZvciAoY29uc3QgdHlwZSBv
ZiBldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKQorICAgICAgICBkYXRhSW5mb1t0eXBlXSA9IGV2
ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSh0eXBlKTsKKyAgICBjb25zdCBpdGVtc0luZm8gPSBb
XQorICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtTGlzdCkgeworICAgICAgICBpdGVtc0luZm8u
cHVzaCh7CisgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsCisgICAgICAgICAgICBraW5kOiBp
dGVtLmtpbmQsCisgICAgICAgICAgICBmaWxlOiByZXByZXNlbnRhdGlvbkZvckZpbGUoaXRlbS5n
ZXRBc0ZpbGUoKSkKKyAgICAgICAgfSk7CisgICAgfQorICAgIHdyaXRlKGBcbiR7ZGVzY3JpcHRp
b259XG4ke0pTT04uc3RyaW5naWZ5KHsKKyAgICAgICAgZGF0YTogZGF0YUluZm8sCisgICAgICAg
IGl0ZW1zOiBpdGVtc0luZm8sCisgICAgICAgIGZpbGVzOiBBcnJheS5mcm9tKGZpbGVMaXN0KS5t
YXAocmVwcmVzZW50YXRpb25Gb3JGaWxlKQorICAgIH0sIG51bGwsICIgICAgIil9YCk7Cit9CisK
K3NvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJjb3B5IiwgZXZlbnQgPT4geworICAgIGNvbnN0IGZp
bGUgPSBuZXcgRmlsZShbICJUaGlzIGlzIGEgdGV4dCBmaWxlLiIgXSwgImZpbGUudHh0IiwgeyB0
eXBlOiAidGV4dC9wbGFpbiIgfSk7CisKKyAgICBsZXQgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9h
cmREYXRhLml0ZW1zOworICAgIGxldCBmaWxlTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuZmls
ZXM7CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoZmlsZSk7CisgICAgZXZlbnQu
Y2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQoZmlsZSk7CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5p
dGVtcy5hZGQoInBsYWluIHRleHQgc3RyaW5nIiwgInRleHQvcGxhaW4iKTsKKyAgICBldmVudC5j
bGlwYm9hcmREYXRhLml0ZW1zLmFkZCgiaHR0cHM6Ly93ZWJraXQub3JnIiwgInRleHQvdXJpLWxp
c3QiKTsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICBldmVu
dC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIx
LiBBZnRlciBhZGRpbmcgYWxsIGl0ZW1zIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisK
KyAgICBpdGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3Qg
PSBldmVudC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIGxldCByZW1vdmVkSXRlbSA9IHJlbW92
ZUF0KGl0ZW1MaXN0LCA0KTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIyLiBBZnRlciByZW1vdmlu
ZyBhdCBpbmRleCA0IiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisgICAgd3JpdGUoYHJl
bW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFz
RmlsZSgpfWApOworCisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zOwor
ICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAgICByZW1vdmVkSXRl
bSA9IHJlbW92ZUF0KGl0ZW1MaXN0LCAxKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIzLiBBZnRl
ciByZW1vdmluZyBhdCBpbmRleCAxIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisgICAg
d3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpfWApOworCisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRh
Lml0ZW1zOworICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAgICBy
ZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGl0ZW1MaXN0LCAzKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0
KCI0LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAzIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlz
dCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAk
e3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgaXRlbUxpc3QgPSBldmVudC5jbGlw
Ym9hcmREYXRhLml0ZW1zOworICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxl
czsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmNsZWFyKCk7CisgICAgdXBkYXRlT3V0
cHV0VGV4dCgiNS4gQWZ0ZXIgY2xlYXJpbmcgaXRlbXMiLCBldmVudCwgaXRlbUxpc3QsIGZpbGVM
aXN0KTsKKworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKGZpbGUpOworICAgIGV2
ZW50LmNsaXBib2FyZERhdGEuaXRlbXMuYWRkKCI8c3Ryb25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0
cm9uZz4iLCAidGV4dC9odG1sIik7CisgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQo
InNvbWUgcGxhaW4gdGV4dCIsICJ0ZXh0L3BsYWluIik7CisgICAgaXRlbUxpc3QgPSBldmVudC5j
bGlwYm9hcmREYXRhLml0ZW1zOworICAgIGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5m
aWxlczsKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChmaWxlKTsKKyAgICB1cGRh
dGVPdXRwdXRUZXh0KCI2LiBBZnRlciBhZGRpbmcgdHdvIGZpbGVzIGFuZCBzb21lIHN0cmluZyBk
YXRhIGFnYWluIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisKKyAgICBpdGVtTGlzdCA9
IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3QgPSBldmVudC5jbGlwYm9h
cmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoaXRlbUxpc3QsIDIpOwor
ICAgIHVwZGF0ZU91dHB1dFRleHQoIjcuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIiLCBldmVu
dCwgaXRlbUxpc3QsIGZpbGVMaXN0KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxl
KCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7CisKKyAgICBp
dGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxpc3QgPSBldmVu
dC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoaXRlbUxp
c3QsIDIpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjguIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4
IDIiLCBldmVudCwgaXRlbUxpc3QsIGZpbGVMaXN0KTsKKyAgICB3cml0ZShgcmVtb3ZlZEl0ZW0u
Z2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCl9YCk7
CisKKyAgICBpdGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7CisgICAgZmlsZUxp
c3QgPSBldmVudC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVtID0gcmVtb3Zl
QXQoaXRlbUxpc3QsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjkuIEFmdGVyIHJlbW92aW5n
IGF0IGluZGV4IDEiLCBldmVudCwgaXRlbUxpc3QsIGZpbGVMaXN0KTsKKyAgICB3cml0ZShgcmVt
b3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6ICR7cmVtb3ZlZEl0ZW0uZ2V0QXNG
aWxlKCl9YCk7CisKKyAgICBpdGVtTGlzdCA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7Cisg
ICAgZmlsZUxpc3QgPSBldmVudC5jbGlwYm9hcmREYXRhLmZpbGVzOworICAgIHJlbW92ZWRJdGVt
ID0gcmVtb3ZlQXQoaXRlbUxpc3QsIDApOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjEwLiBBZnRl
ciByZW1vdmluZyBhdCBpbmRleCAwIiwgZXZlbnQsIGl0ZW1MaXN0LCBmaWxlTGlzdCk7CisgICAg
d3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpfWApOworCisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30pOwor
CitnZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHNvdXJjZSwgMCwgc291cmNlLCAxKTsK
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5
Iik7Cit9Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmRm
NjdjYWVkMWIxMTc4YzQyZjhjNWQwMGI1OTU0NzcxZTZjZTliCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzA0IEBACitDb3B5IHRoaXMg
dGV4dCEKK1RvIG1hbnVhbGx5IHRlc3QsIGNvcHkgdGhlIGFib3ZlIHRleHQuIFRoZSBvdXRwdXQg
YmVsb3cgZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBlYWNoIG9wZXJhdGlvbiwK
KworZGVzY3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQgdGV4dCBmb3IgZWFjaCBzdGVw
LiBUaGUgRGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlCisK
K29wZXJhdGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLgorCisKKzEuIEFmdGVyIGFkZGluZyBh
IHN0cmluZworeworICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9wbGFpbiI6ICJoZWxsbyB3
b3JsZCIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5
cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAg
ICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFtdCit9
CisKKzIuIEFmdGVyIGFkZGluZyBhIGZpbGUgb2YgY3VzdG9tIHR5cGUKK3sKKyAgICAiZGF0YSI6
IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAg
eworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6
ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAia2luZCI6ICJm
aWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjogImZv
byIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAgICAgInR5cGUi
OiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMi
OiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAi
Ynl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgfQorICAg
IF0KK30KKworMy4gQWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdCBwbGFpbiB0ZXh0IGZpbGUKK3sKKyAg
ICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAi
a2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJu
YW1lIjogImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
Zmlyc3QudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA3MiwKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwK
KyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisg
ICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZmlyc3QudHh0IiwKKyAg
ICAgICAgICAgICJieXRlcyI6IDcyLAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIK
KyAgICAgICAgfQorICAgIF0KK30KKworNC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGxhc3QgZmlsZQor
eworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1z
IjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAg
ICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAg
ICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAg
ICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBd
LAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwK
KyAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgor
ICAgICAgICB9CisgICAgXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51
bGw6IG51bGwKKworNS4gQWZ0ZXIgYWRkaW5nIGFuIEhUTUwgc3RyaW5nCit7CisgICAgImRhdGEi
OiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAi
ZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJm
b28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBl
IjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAgICAgICAgICAgICJraW5kIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVz
IjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAg
ImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAg
ICBdCit9CisKKzYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQoreworICAg
ICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAg
ICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJr
aW5kIjogImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJz
dHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAi
ZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJz
ZWNvbmQudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwK
KyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIsCisg
ICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisg
ICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
CisgICAgICAgIH0KKyAgICBdCit9CisKKzcuIEFmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmls
ZQoreworICAgICJkYXRhIjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0
ZW1zIjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAg
ICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9odG1sIiwKKyAg
ICAgICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAg
ICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgICAgICJieXRlcyI6
IDI3LAorICAgICAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxlcyI6IFsKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iCisgICAgICAgIH0KKyAgICBdCit9CityZW1vdmVk
SXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAorCis4LiBBZnRlciByZW1vdmlu
ZyB0aGUgSFRNTCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIK
KyAgICB9LAorICAgICJpdGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAi
dGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAg
ImZpbGUiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAi
ZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAg
ICAgICAgICAiYnl0ZXMiOiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWlu
IgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgImJ5
dGVzIjogMjcsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9Cisg
ICAgXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKwor
OS4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHNlY29uZCB0ZXh0IGZpbGUKK3sKKyAgICAiZGF0YSI6IHsK
KyAgICAgICAgInRleHQvcGxhaW4iOiAiaGVsbG8gd29ybGQiCisgICAgfSwKKyAgICAiaXRlbXMi
OiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAg
ICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAg
ICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbXQorfQorcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkg
c2hvdWxkIGJlIG51bGw6IG51bGwKKworMTAuIEFmdGVyIHJlbW92aW5nIHRoZSBwbGFpbiB0ZXh0
IHN0cmluZworeworICAgICJkYXRhIjoge30sCisgICAgIml0ZW1zIjogW10sCisgICAgImZpbGVz
IjogW10KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCitU
aGUgRGF0YVRyYW5zZmVyJ3MgRmlsZUxpc3Qgc2hvdWxkIGJlIHRoZSBzYW1lIG9iamVjdDogdHJ1
ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFu
c2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NDdhZjg2YzAzODI3MGQzZjg4N2QxOWYwYzNhMjVjMDdlNzZjOTdkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbApAQCAtMCwwICsxLDExMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3
aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6
IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXYgc3R5
bGU9ImZvbnQtc2l6ZTogNDBweDsiIGlkPSJzb3VyY2UiPkNvcHkgdGhpcyB0ZXh0ITwvZGl2Pgor
ICAgIDxwPlRvIG1hbnVhbGx5IHRlc3QsIGNvcHkgdGhlIGFib3ZlIHRleHQuIFRoZSBvdXRwdXQg
YmVsb3cgZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBlYWNoIG9wZXJhdGlvbiw8
L3A+CisgICAgPHA+ZGVzY3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBvdXRwdXQgdGV4dCBmb3Ig
ZWFjaCBzdGVwLiBUaGUgRGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdp
dGggdGhlPC9wPgorICAgIDxwPm9wZXJhdGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLjwvcD4K
KyAgICA8cHJlIHN0eWxlPSJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyIgaWQ9Im91dHB1dCI+
PC9wcmU+Cis8L2JvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gd3JpdGUobWVzc2FnZSkgeworICAg
IG91dHB1dC50ZXh0Q29udGVudCArPSBgJHttZXNzYWdlfVxuYDsKK30KKworZnVuY3Rpb24gcmVw
cmVzZW50YXRpb25Gb3JGaWxlKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZSA/IHsKKyAgICAgICAg
bmFtZTogZmlsZS5uYW1lLAorICAgICAgICBieXRlczogZmlsZS5zaXplLAorICAgICAgICB0eXBl
OiBmaWxlLnR5cGUKKyAgICB9IDogbnVsbDsKK30KKworZnVuY3Rpb24gdXBkYXRlT3V0cHV0VGV4
dChkZXNjcmlwdGlvbiwgZXZlbnQpIHsKKyAgICBjb25zdCBkYXRhSW5mbyA9IHt9OworICAgIGZv
ciAoY29uc3QgdHlwZSBvZiBldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKQorICAgICAgICBkYXRh
SW5mb1t0eXBlXSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSh0eXBlKTsKKyAgICBjb25z
dCBpdGVtc0luZm8gPSBbXTsKKyAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXZlbnQuY2xpcGJvYXJk
RGF0YS5pdGVtcykgeworICAgICAgICBpdGVtc0luZm8ucHVzaCh7CisgICAgICAgICAgICB0eXBl
OiBpdGVtLnR5cGUsCisgICAgICAgICAgICBraW5kOiBpdGVtLmtpbmQsCisgICAgICAgICAgICBm
aWxlOiByZXByZXNlbnRhdGlvbkZvckZpbGUoaXRlbS5nZXRBc0ZpbGUoKSkKKyAgICAgICAgfSk7
CisgICAgfQorICAgIHdyaXRlKGBcbiR7ZGVzY3JpcHRpb259XG4ke0pTT04uc3RyaW5naWZ5KHsK
KyAgICAgICAgZGF0YTogZGF0YUluZm8sCisgICAgICAgIGl0ZW1zOiBpdGVtc0luZm8sCisgICAg
ICAgIGZpbGVzOiBBcnJheS5mcm9tKGV2ZW50LmNsaXBib2FyZERhdGEuZmlsZXMpLm1hcChyZXBy
ZXNlbnRhdGlvbkZvckZpbGUpCisgICAgfSwgbnVsbCwgIiAgICAiKX1gKTsKK30KKworZnVuY3Rp
b24gcmVtb3ZlQXQoaXRlbUxpc3QsIGluZGV4KSB7CisgICAgY29uc3QgcmVtb3ZlZEl0ZW0gPSBp
dGVtTGlzdFtpbmRleF07CisgICAgaXRlbUxpc3QucmVtb3ZlKGluZGV4KTsKKyAgICByZXR1cm4g
cmVtb3ZlZEl0ZW07Cit9CisKK3NvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJjb3B5IiwgZXZlbnQg
PT4geworICAgIGNvbnN0IGZpbGVMaXN0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlczsKKyAg
ICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZCgiaGVsbG8gd29ybGQiLCAidGV4dC9wbGFp
biIpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjEuIEFmdGVyIGFkZGluZyBhIHN0cmluZyIsIGV2
ZW50KTsKKworICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgY29u
c3QgYXJyYXkgPSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAgYXJyYXkuZmlsbCgxNSk7Cisg
ICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcy5hZGQobmV3IEZpbGUoWyBidWZmZXIgXSwgImZv
byIsIHsgdHlwZTogImN1c3RvbSIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjIuIEFmdGVy
IGFkZGluZyBhIGZpbGUgb2YgY3VzdG9tIHR5cGUiLCBldmVudCk7CisKKyAgICBldmVudC5jbGlw
Ym9hcmREYXRhLml0ZW1zLmFkZChuZXcgRmlsZShbCisgICAgICAgIG5ldyBCbG9iKFsiVGhpcyBw
YXJ0IGlzIGZyb20gYSBKYXZhU2NyaXB0IEJsb2IiXSwgeyB0eXBlIDogInRleHQvcGxhaW4iIH0p
LAorICAgICAgICAiVGhpcyBwYXJ0IGlzIGp1c3QgZnJvbSBhIHBsYWluIHN0cmluZyIKKyAgICBd
LCAiZmlyc3QudHh0IiwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1
dFRleHQoIjMuIEFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcGxhaW4gdGV4dCBmaWxlIiwgZXZlbnQp
OworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1z
LCAyKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCI0LiBBZnRlciByZW1vdmluZyB0aGUgbGFzdCBm
aWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQg
YmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIGV2ZW50LmNsaXBi
b2FyZERhdGEuaXRlbXMuYWRkKCI8YT5nb29kYnllIHdvcmxkPC9hPiIsICJ0ZXh0L2h0bWwiKTsK
KyAgICB1cGRhdGVPdXRwdXRUZXh0KCI1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmciLCBl
dmVudCk7CisKKyAgICBldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLmFkZChuZXcgRmlsZShbICJU
aGlzIGlzIGp1c3QgYSBwbGFpbiBzdHJpbmciIF0sICJzZWNvbmQudHh0IiwgeyB0eXBlOiAidGV4
dC9wbGFpbiIgfSkpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjYuIEFmdGVyIGFkZGluZyBhbm90
aGVyIHBsYWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3Zl
QXQoZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgi
Ny4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGBy
ZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJk
RGF0YS5pdGVtcywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiOC4gQWZ0ZXIgcmVtb3Zpbmcg
dGhlIEhUTUwgc3RyaW5nIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0Zp
bGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAg
IHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcywgMSk7Cisg
ICAgdXBkYXRlT3V0cHV0VGV4dCgiOS4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHNlY29uZCB0ZXh0IGZp
bGUiLCBldmVudCk7CisgICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBi
ZSBudWxsOiAke3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgcmVtb3ZlZEl0ZW0g
PSByZW1vdmVBdChldmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLCAwKTsKKyAgICB1cGRhdGVPdXRw
dXRUZXh0KCIxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIHBsYWluIHRleHQgc3RyaW5nIiwgZXZlbnQp
OworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHty
ZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKyAgICB3cml0ZShgVGhlIERhdGFUcmFuc2Zlcidz
IEZpbGVMaXN0IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3Q6ICR7ZmlsZUxpc3QgPT0gZXZlbnQu
Y2xpcGJvYXJkRGF0YS5maWxlc31gKTsKKworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9
KTsKKworZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChzb3VyY2UsIDAsIHNvdXJjZSwg
MSk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0cnVlKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgi
Q29weSIpOworfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJh
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFu
c2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2FkYTY1NDE5M2ZkZTBkYTVmZmI4YTc2NWYxYjBhODE2NTk5NjVjMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlz
dC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwNCBAQAorRHJhZyBt
ZSBvdXQuCitUbyBtYW51YWxseSB0ZXN0LCBkcmFnIHRoZSBhYm92ZSB0ZXh0LiBUaGUgb3V0cHV0
IGJlbG93IGR1bXBzIERhdGFUcmFuc2ZlciBzdGF0ZSBmb2xsb3dpbmcgZWFjaCBvcGVyYXRpb24s
CisKK2Rlc2NyaWJlZCBkaXJlY3RseSBhYm92ZSB0aGUgb3V0cHV0IHRleHQgZm9yIGVhY2ggc3Rl
cC4gVGhlIERhdGFUcmFuc2ZlciBzdGF0ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZQor
CitvcGVyYXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC4KKworCisxLiBBZnRlciBhZGRpbmcg
YSBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvcGxhaW4iOiAiaGVsbG8g
d29ybGQiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0
eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbXQor
fQorCisyLiBBZnRlciBhZGRpbmcgYSBmaWxlIG9mIGN1c3RvbSB0eXBlCit7CisgICAgImRhdGEi
OiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAgImtpbmQiOiAi
ZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJm
b28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAgICAgICJ0eXBl
IjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVz
IjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAorICAgICAgICAgICAg
ImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisgICAgICAgIH0KKyAg
ICBdCit9CisKKzMuIEFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcGxhaW4gdGV4dCBmaWxlCit7Cisg
ICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIiCisgICAgfSwKKyAgICAiaXRlbXMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAorICAgICAgICAg
ICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iLAorICAgICAgICAgICAg
ImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAgICAgICAgICAgICAi
bmFtZSI6ICJmb28iLAorICAgICAgICAgICAgICAgICJieXRlcyI6IDY0LAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogImN1c3RvbSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICAia2luZCI6
ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImZpcnN0LnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNzIsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0s
CisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAor
ICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZpcnN0LnR4dCIsCisg
ICAgICAgICAgICAiYnl0ZXMiOiA3MiwKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4i
CisgICAgICAgIH0KKyAgICBdCit9CisKKzQuIEFmdGVyIHJlbW92aW5nIHRoZSBsYXN0IGZpbGUK
K3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVt
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAg
ICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAg
ICAgICAia2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAg
ICAgICJuYW1lIjogImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
XSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImZvbyIs
CisgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIK
KyAgICAgICAgfQorICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBu
dWxsOiBudWxsCisKKzUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmluZworeworICAgICJkYXRh
IjogeworICAgICAgICAiRmlsZXMiOiAiIgorICAgIH0sCisgICAgIml0ZW1zIjogWworICAgICAg
ICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5k
IjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
Zm9vIiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMiOiA2NCwKKyAgICAgICAgICAgICAgICAidHlw
ZSI6ICJjdXN0b20iCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisgICAgICAgICAgICAia2luZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJmaWxl
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9vIiwKKyAgICAgICAgICAg
ICJieXRlcyI6IDY0LAorICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICB9Cisg
ICAgXQorfQorCis2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUKK3sKKyAg
ICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJpdGVtcyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIsCisgICAgICAgICAgICAi
a2luZCI6ICJmaWxlIiwKKyAgICAgICAgICAgICJmaWxlIjogeworICAgICAgICAgICAgICAgICJu
YW1lIjogImZvbyIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAiY3VzdG9tIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgImtpbmQiOiAi
c3RyaW5nIiwKKyAgICAgICAgICAgICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjog
ImZpbGUiLAorICAgICAgICAgICAgImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
c2Vjb25kLnR4dCIsCisgICAgICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0s
CisgICAgImZpbGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb28iLAor
ICAgICAgICAgICAgImJ5dGVzIjogNjQsCisgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNlY29uZC50eHQiLAor
ICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWlu
IgorICAgICAgICB9CisgICAgXQorfQorCis3LiBBZnRlciByZW1vdmluZyB0aGUgY3VzdG9tIGZp
bGUKK3sKKyAgICAiZGF0YSI6IHsKKyAgICAgICAgIkZpbGVzIjogIiIKKyAgICB9LAorICAgICJp
dGVtcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvaHRtbCIsCisg
ICAgICAgICAgICAia2luZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImZpbGUiOiBudWxsCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjogInRleHQvcGxhaW4iLAor
ICAgICAgICAgICAgImtpbmQiOiAiZmlsZSIsCisgICAgICAgICAgICAiZmlsZSI6IHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICAgICAiYnl0ZXMi
OiAyNywKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgXSwKKyAgICAiZmlsZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogInNlY29uZC50eHQiLAorICAgICAgICAgICAgImJ5dGVzIjogMjcsCisgICAg
ICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIgorICAgICAgICB9CisgICAgXQorfQorcmVtb3Zl
ZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKKworOC4gQWZ0ZXIgcmVtb3Zp
bmcgdGhlIEhUTUwgc3RyaW5nCit7CisgICAgImRhdGEiOiB7CisgICAgICAgICJGaWxlcyI6ICIi
CisgICAgfSwKKyAgICAiaXRlbXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJ0eXBlIjog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgImtpbmQiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICJmaWxlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICJraW5kIjogImZpbGUiLAorICAgICAgICAgICAg
ImZpbGUiOiB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2Vjb25kLnR4dCIsCisgICAgICAg
ICAgICAgICAgImJ5dGVzIjogMjcsCisgICAgICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFp
biIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0sCisgICAgImZpbGVzIjogWworICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZWNvbmQudHh0IiwKKyAgICAgICAgICAgICJi
eXRlcyI6IDI3LAorICAgICAgICAgICAgInR5cGUiOiAidGV4dC9wbGFpbiIKKyAgICAgICAgfQor
ICAgIF0KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCisK
KzkuIEFmdGVyIHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxlCit7CisgICAgImRhdGEiOiB7
CisgICAgICAgICJ0ZXh0L3BsYWluIjogImhlbGxvIHdvcmxkIgorICAgIH0sCisgICAgIml0ZW1z
IjogWworICAgICAgICB7CisgICAgICAgICAgICAidHlwZSI6ICJ0ZXh0L3BsYWluIiwKKyAgICAg
ICAgICAgICJraW5kIjogInN0cmluZyIsCisgICAgICAgICAgICAiZmlsZSI6IG51bGwKKyAgICAg
ICAgfQorICAgIF0sCisgICAgImZpbGVzIjogW10KK30KK3JlbW92ZWRJdGVtLmdldEFzRmlsZSgp
IHNob3VsZCBiZSBudWxsOiBudWxsCisKKzEwLiBBZnRlciByZW1vdmluZyB0aGUgcGxhaW4gdGV4
dCBzdHJpbmcKK3sKKyAgICAiZGF0YSI6IHt9LAorICAgICJpdGVtcyI6IFtdLAorICAgICJmaWxl
cyI6IFtdCit9CityZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAor
VGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3Q6IHRy
dWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWcuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTQ0OTA4YTAwNmExNzhjM2UzOTE2NzdkMGQ3MjIyM2ZlODJiNWMyNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLmh0bWwKQEAgLTAsMCArMSwxMTYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0i
d2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0
OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IHN0
eWxlPSJmb250LXNpemU6IDQwcHg7IiBpZD0ic291cmNlIiBkcmFnZ2FibGU9InRydWUiPkRyYWcg
bWUgb3V0LjwvZGl2PgorICAgIDxwPlRvIG1hbnVhbGx5IHRlc3QsIGRyYWcgdGhlIGFib3ZlIHRl
eHQuIFRoZSBvdXRwdXQgYmVsb3cgZHVtcHMgRGF0YVRyYW5zZmVyIHN0YXRlIGZvbGxvd2luZyBl
YWNoIG9wZXJhdGlvbiw8L3A+CisgICAgPHA+ZGVzY3JpYmVkIGRpcmVjdGx5IGFib3ZlIHRoZSBv
dXRwdXQgdGV4dCBmb3IgZWFjaCBzdGVwLiBUaGUgRGF0YVRyYW5zZmVyIHN0YXRlIHNob3VsZCBi
ZSBjb25zaXN0ZW50IHdpdGggdGhlPC9wPgorICAgIDxwPm9wZXJhdGlvbiBwZXJmb3JtZWQgYXQg
ZWFjaCBzdGVwLjwvcD4KKyAgICA8cHJlIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAl
IiBpZD0ib3V0cHV0Ij48L3ByZT4KKzwvYm9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB3cml0ZSht
ZXNzYWdlKSB7CisgICAgb3V0cHV0LnRleHRDb250ZW50ICs9IGAke21lc3NhZ2V9XG5gOworfQor
CitmdW5jdGlvbiByZXByZXNlbnRhdGlvbkZvckZpbGUoZmlsZSkgeworICAgIHJldHVybiBmaWxl
ID8geworICAgICAgICBuYW1lOiBmaWxlLm5hbWUsCisgICAgICAgIGJ5dGVzOiBmaWxlLnNpemUs
CisgICAgICAgIHR5cGU6IGZpbGUudHlwZQorICAgIH0gOiBudWxsOworfQorCitmdW5jdGlvbiB1
cGRhdGVPdXRwdXRUZXh0KGRlc2NyaXB0aW9uLCBldmVudCkgeworICAgIGNvbnN0IGRhdGFJbmZv
ID0ge307CisgICAgZm9yIChjb25zdCB0eXBlIG9mIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcykK
KyAgICAgICAgZGF0YUluZm9bdHlwZV0gPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSh0eXBl
KTsKKyAgICBjb25zdCBpdGVtc0luZm8gPSBbXQorICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVu
dC5kYXRhVHJhbnNmZXIuaXRlbXMpIHsKKyAgICAgICAgaXRlbXNJbmZvLnB1c2goeworICAgICAg
ICAgICAgdHlwZTogaXRlbS50eXBlLAorICAgICAgICAgICAga2luZDogaXRlbS5raW5kLAorICAg
ICAgICAgICAgZmlsZTogcmVwcmVzZW50YXRpb25Gb3JGaWxlKGl0ZW0uZ2V0QXNGaWxlKCkpCisg
ICAgICAgIH0pOworICAgIH0KKyAgICB3cml0ZShgXG4ke2Rlc2NyaXB0aW9ufVxuJHtKU09OLnN0
cmluZ2lmeSh7CisgICAgICAgIGRhdGE6IGRhdGFJbmZvLAorICAgICAgICBpdGVtczogaXRlbXNJ
bmZvLAorICAgICAgICBmaWxlczogQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMp
Lm1hcChyZXByZXNlbnRhdGlvbkZvckZpbGUpCisgICAgfSwgbnVsbCwgIiAgICAiKX1gKTsKK30K
KworZnVuY3Rpb24gcmVtb3ZlQXQoaXRlbUxpc3QsIGluZGV4KSB7CisgICAgY29uc3QgcmVtb3Zl
ZEl0ZW0gPSBpdGVtTGlzdFtpbmRleF07CisgICAgaXRlbUxpc3QucmVtb3ZlKGluZGV4KTsKKyAg
ICByZXR1cm4gcmVtb3ZlZEl0ZW07Cit9CisKK291dHB1dC5hZGRFdmVudExpc3RlbmVyKCJkcmFn
b3ZlciIsIGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpOworb3V0cHV0LmFkZEV2ZW50
TGlzdGVuZXIoImRyb3AiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTsKK3NvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiB7CisgICAgY29uc3QgZmls
ZUxpc3QgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVy
Lml0ZW1zLmFkZCgiaGVsbG8gd29ybGQiLCAidGV4dC9wbGFpbiIpOworICAgIHVwZGF0ZU91dHB1
dFRleHQoIjEuIEFmdGVyIGFkZGluZyBhIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGNvbnN0IGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7CisgICAgY29uc3QgYXJyYXkgPSBuZXcgSW50OEFy
cmF5KGJ1ZmZlcik7CisgICAgYXJyYXkuZmlsbCgxNSk7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVy
Lml0ZW1zLmFkZChuZXcgRmlsZShbIGJ1ZmZlciBdLCAiZm9vIiwgeyB0eXBlOiAiY3VzdG9tIiB9
KSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiMi4gQWZ0ZXIgYWRkaW5nIGEgZmlsZSBvZiBjdXN0
b20gdHlwZSIsIGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5hZGQobmV3
IEZpbGUoWworICAgICAgICBuZXcgQmxvYihbIlRoaXMgcGFydCBpcyBmcm9tIGEgSmF2YVNjcmlw
dCBCbG9iIl0sIHsgdHlwZSA6ICJ0ZXh0L3BsYWluIiB9KSwKKyAgICAgICAgIlRoaXMgcGFydCBp
cyBqdXN0IGZyb20gYSBwbGFpbiBzdHJpbmciCisgICAgXSwgImZpcnN0LnR4dCIsIHsgdHlwZTog
InRleHQvcGxhaW4iIH0pKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIzLiBBZnRlciBhZGRpbmcg
dGhlIGZpcnN0IHBsYWluIHRleHQgZmlsZSIsIGV2ZW50KTsKKworICAgIHJlbW92ZWRJdGVtID0g
cmVtb3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCAyKTsKKyAgICB1cGRhdGVPdXRwdXRU
ZXh0KCI0LiBBZnRlciByZW1vdmluZyB0aGUgbGFzdCBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRl
KGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5n
ZXRBc0ZpbGUoKX1gKTsKKworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoIjxhPmdv
b2RieWUgd29ybGQ8L2E+IiwgInRleHQvaHRtbCIpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjUu
IEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmluZyIsIGV2ZW50KTsKKworICAgIGV2ZW50LmRhdGFU
cmFuc2Zlci5pdGVtcy5hZGQobmV3IEZpbGUoWyAiVGhpcyBpcyBqdXN0IGEgcGxhaW4gc3RyaW5n
IiBdLCAic2Vjb25kLnR4dCIsIHsgdHlwZTogInRleHQvcGxhaW4iIH0pKTsKKyAgICB1cGRhdGVP
dXRwdXRUZXh0KCI2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUiLCBldmVu
dCk7CisKKyAgICByZW1vdmVkSXRlbSA9IHJlbW92ZUF0KGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVt
cywgMSk7CisgICAgdXBkYXRlT3V0cHV0VGV4dCgiNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3Rv
bSBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91
bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKworICAgIHJlbW92ZWRJ
dGVtID0gcmVtb3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLCAxKTsKKyAgICB1cGRhdGVP
dXRwdXRUZXh0KCI4LiBBZnRlciByZW1vdmluZyB0aGUgSFRNTCBzdHJpbmciLCBldmVudCk7Cisg
ICAgd3JpdGUoYHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiAke3JlbW92
ZWRJdGVtLmdldEFzRmlsZSgpfWApOworCisgICAgcmVtb3ZlZEl0ZW0gPSByZW1vdmVBdChldmVu
dC5kYXRhVHJhbnNmZXIuaXRlbXMsIDEpOworICAgIHVwZGF0ZU91dHB1dFRleHQoIjkuIEFmdGVy
IHJlbW92aW5nIHRoZSBzZWNvbmQgdGV4dCBmaWxlIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1v
dmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0Zp
bGUoKX1gKTsKKworICAgIHJlbW92ZWRJdGVtID0gcmVtb3ZlQXQoZXZlbnQuZGF0YVRyYW5zZmVy
Lml0ZW1zLCAwKTsKKyAgICB1cGRhdGVPdXRwdXRUZXh0KCIxMC4gQWZ0ZXIgcmVtb3ZpbmcgdGhl
IHBsYWluIHRleHQgc3RyaW5nIiwgZXZlbnQpOworICAgIHdyaXRlKGByZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogJHtyZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKX1gKTsKKyAg
ICB3cml0ZShgVGhlIERhdGFUcmFuc2ZlcidzIEZpbGVMaXN0IHNob3VsZCBiZSB0aGUgc2FtZSBv
YmplY3Q6ICR7ZmlsZUxpc3QgPT0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzfWApOworCisgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30pOworCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYg
d2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgMjUp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKDEwMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgNDAwKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDRmOWM0NGMzMzAxMTA0ZTZjYWY0MzdjMjRkZTUzZDZlNGZlMmRmZDAuLjA2MWU3NGJm
ZWJkM2VmNDk2MjhkNjk5MDYzNmU1OGZlNzNiODIyOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTEs
MyArMTEsNSBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1w
YXN0ZS1jdXN0b20uaHRtbCBbIFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNm
ZXItZ2V0LWRhdGEtb24tcGFzdGUtcGxhaW4tdGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1yaWNoLXRleHQuaHRtbCBb
IFBhc3MgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtbm9uLW5v
cm1hbGl6ZWQtdHlwZXMuaHRtbCBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHkuaHRtbCBbIFBhc3MgXQorZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVz
Lmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBlYzQ5ZmM0OGE0ZTliMGIyYTBmNGMzY2I3MGU2ZmQxOWFlOWRlY2RkLi5k
ZGJiMDgxZGI3MzcxM2Y1NmNmMTYwOGViNGRhMDE1MGJjYTdkZTM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMiw2ICsxMiw3IEBAIGVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLWRyb3AtcGxhaW4tdGV4
dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0
YS1vbi1kcm9wLXJpY2gtdGV4dC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1kcm9wLXVybC5odG1sIFsgUGFzcyBdCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZHJhZy1lbmQtY3Jhc2gtYWNjZXNzaW5nLWl0ZW0tbGlzdC5odG1sIFsgUGFzcyBd
CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24t
ZHJhZy5odG1sIFsgUGFzcyBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
ICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322778</attachid>
            <date>2017-10-04 21:51:15 -0700</date>
            <delta_ts>2017-10-04 22:45:45 -0700</delta_ts>
            <desc>Post-review feedback</desc>
            <filename>bug-177853-20171004215115.patch</filename>
            <type>text/plain</type>
            <size>5593</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmViZGM3OTY5ZjJmZTFl
OTc0NmVjMzU5NTFiNTE2OWQ2YzAxMWJjYy4uZjE3OWRmNmZkMzkyYzU1N2YwYWMyZWI2NGFkOWJm
NjgwZmFmN2U2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIEFkZHJlc3MgcG9z
dC1yZXZpZXcgZmVlZGJhY2sgZm9sbG93aW5nIHIyMjI4ODUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzQ4MDczNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlcjo6dXBkYXRlRmlsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjp0
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBh
c3RlYm9hcmRBbmRJdGVtTGlzdCBjb25zdCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbTo6ZmlsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbUxpc3Q6OnJlbW92ZSk6CisKKyAgICAgICAgV2hlbiByZW1vdmluZyBhIGRhdGEgdHJhbnNm
ZXIgaXRlbSwgY2FwdHVyZSBpdCBpbiBhIFJlZiBmb3IgdGhlIHNjb3BlIG9mIHJlbW92ZSgpLCBz
byB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAorICAgICAgICBpbW1lZGlhdGVseSBhZnRlciBy
ZW1vdmluZyBmcm9tIHRoZSBpdGVtIGxpc3QuCisKKzIwMTctMTAtMDQgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9y
IHRoZSB2ZXJzaW9uIG9mIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmFkZCB0aGF0IHRha2VzIGEgRmls
ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODUz
CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDgwNzM0Nj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKaW5kZXggZjk4MmQ1N2U3NzRlZmE3ZmMwZjIwNjAxNTVlNTM0NjA2N2M0YWI5Zi4u
Nzc5MGMzYzU4YWFmMmU5Y2FiNjhkNDE4Zjc4ZmQyYzIxMWFkZDljZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAKQEAgLTE2NCw4ICsxNjQsNiBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIAogdm9pZCBE
YXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KCkKIHsKLSAgICAvLyBJZiB3ZSdyZSByZW1vdmlu
ZyBhbiBpdGVtLCB0aGVuIHRoZSBpdGVtIGxpc3QgbXVzdCBleGlzdCwgd2hpY2ggaW1wbGllcyB0
aGF0IHRoZSBmaWxlIGxpc3QgbXVzdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYWxyZWFkeS4KLSAg
ICBBU1NFUlQobV9maWxlTGlzdCk7CiAgICAgQVNTRVJUKGNhbldyaXRlRGF0YSgpKTsKIAogICAg
IG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKTsK
QEAgLTIwMywxMSArMjAxLDExIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFUcmFuc2Zlcjo6dHlwZXMo
KSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX2l0ZW1MaXN0ICYmIG1faXRlbUxpc3QtPmhhc0l0
ZW1zKCkgJiYgbV9pdGVtTGlzdC0+aXRlbXMoKS5maW5kTWF0Y2hpbmcoW10gKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPmlzRmlsZSgpOyB9KSAhPSBub3RGb3VuZCkKLSAgICAgICAg
cmV0dXJuIHsgIkZpbGVzIiB9OworICAgICAgICByZXR1cm4geyBBU0NJSUxpdGVyYWwoIkZpbGVz
IikgfTsKIAogICAgIGlmIChtX3Bhc3RlYm9hcmQtPmNvbnRhaW5zRmlsZXMoKSkgewogICAgICAg
ICBBU1NFUlQoIW1fcGFzdGVib2FyZC0+dHlwZXNTYWZlRm9yQmluZGluZ3MoKS5jb250YWlucygi
RmlsZXMiKSk7Ci0gICAgICAgIHJldHVybiB7ICJGaWxlcyIgfTsKKyAgICAgICAgcmV0dXJuIHsg
QVNDSUlMaXRlcmFsKCJGaWxlcyIpIH07CiAgICAgfQogCiAgICAgYXV0byB0eXBlcyA9IG1fcGFz
dGVib2FyZC0+dHlwZXNTYWZlRm9yQmluZGluZ3MoKTsKQEAgLTIyOSw5ICsyMjcsOCBAQCBWZWN0
b3I8UmVmPEZpbGU+PiBEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlz
dCgpIGNvbnN0CiAgICAgYm9vbCBpdGVtTGlzdENvbnRhaW5zSXRlbXMgPSBmYWxzZTsKICAgICBp
ZiAobV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0LT5oYXNJdGVtcygpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgaXRlbSA6IG1faXRlbUxpc3QtPml0ZW1zKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IGZpbGUgPSBpdGVtLT5maWxlKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGZpbGUgPSBpdGVt
LT5maWxlKCkpCiAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKCpmaWxlKTsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBpdGVtTGlzdENvbnRhaW5zSXRlbXMgPSB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDk2ODU1MjkxODdl
NjZkNDM5YmJmNTAyYTcwNzZkMDZiNDg4Yzk3NDYuLjFmMjgwOWZmNmIxZWI5YTJkYWUyZjRjZmRk
YjYyZmM0ZThmM2I5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB+RGF0YVRyYW5zZmVySXRlbSgpOwogCi0gICAg
UmVmUHRyPEZpbGU+IGZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGU7IH0KKyAgICBSZWZQdHI8
RmlsZT4gZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsgfQogICAgIHZvaWQgY2xlYXJMaXN0QW5kUHV0
SW50b0Rpc2FibGVkTW9kZSgpOwogCiAgICAgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwCmlu
ZGV4IDY5MGEyYWIwNzk1ZTI5YmJhY2ZhOWViNjk3YWM0MzFlMDk2MzJlYWEuLjlmMjlhNjhiMTQ1
ZDI3MmNiNjI2OTVkMTdiNjVhNmRkN2Y0YTNmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1MaXN0LmNwcApAQCAtOTEsNyArOTEsNyBAQCBSZWZQdHI8RGF0YVRyYW5z
ZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmFkZChSZWY8RmlsZT4mJiBmaWxlKQogCiAg
ICAgZW5zdXJlSXRlbXMoKS5hcHBlbmQoRGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1fd2Vha1B0
ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIGZpbGUtPnR5cGUoKSwgZmlsZS5jb3B5UmVm
KCkpKTsKICAgICBtX2RhdGFUcmFuc2Zlci5kaWRBZGRGaWxlVG9JdGVtTGlzdCgpOwotICAgIHJl
dHVybiBSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4geyBtX2l0ZW1zLT5sYXN0KCkucHRyKCkgfTsK
KyAgICByZXR1cm4gbV9pdGVtcy0+bGFzdCgpLnB0cigpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQpAQCAtMTAzLDE1
ICsxMDMsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92
ZSh1bnNpZ25lZCBpbmRleCkKICAgICBpZiAoaXRlbXMuc2l6ZSgpIDw9IGluZGV4KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsgLy8gTWF0Y2hlcyBHZWNrby4g
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjkyNQogCi0gICAgLy8g
U2luY2UgZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRlbXMgYXJlIG5vdCBhY3R1YWxseSB3cml0
dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHlldCwgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgYW55Ci0g
ICAgLy8gdGVtcG9yYXJ5IGZpbGVzLiBXaGVuIHdlIHN1cHBvcnQgd3JpdGluZyBmaWxlLWJhY2tl
ZCBEYXRhVHJhbnNmZXJJdGVtcyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCwgd2Ugd2lsbCBu
ZWVkCi0gICAgLy8gdG8gY2xlYW4gdXAgaGVyZS4KLSAgICBhdXRvJiByZW1vdmVkSXRlbSA9IGl0
ZW1zW2luZGV4XS5nZXQoKTsKLSAgICBpZiAoIXJlbW92ZWRJdGVtLmlzRmlsZSgpKQotICAgICAg
ICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuY2xlYXIocmVtb3ZlZEl0ZW0udHlwZSgpKTsK
LSAgICByZW1vdmVkSXRlbS5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CisgICAg
Ly8gRklYTUU6IFNpbmNlIGZpbGUtYmFja2VkIERhdGFUcmFuc2Zlckl0ZW1zIGFyZSBub3QgYWN0
dWFsbHkgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB5ZXQsIHdlIGRvbid0IG5lZWQgdG8KKyAg
ICAvLyByZW1vdmUgYW55IHRlbXBvcmFyeSBmaWxlcy4gV2hlbiB3ZSBzdXBwb3J0IHdyaXRpbmcg
ZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRlbXMgdG8gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQs
CisgICAgLy8gd2Ugd2lsbCBuZWVkIHRvIGNsZWFuIHVwIGhlcmUuCisgICAgUmVmPERhdGFUcmFu
c2Zlckl0ZW0+IHJlbW92ZWRJdGVtID0gaXRlbXNbaW5kZXhdLmNvcHlSZWYoKTsKKyAgICBpZiAo
IXJlbW92ZWRJdGVtLT5pc0ZpbGUoKSkKKyAgICAgICAgbV9kYXRhVHJhbnNmZXIucGFzdGVib2Fy
ZCgpLmNsZWFyKHJlbW92ZWRJdGVtLT50eXBlKCkpOworICAgIHJlbW92ZWRJdGVtLT5jbGVhckxp
c3RBbmRQdXRJbnRvRGlzYWJsZWRNb2RlKCk7CiAgICAgaXRlbXMucmVtb3ZlKGluZGV4KTsKLSAg
ICBpZiAocmVtb3ZlZEl0ZW0uaXNGaWxlKCkpCisgICAgaWYgKHJlbW92ZWRJdGVtLT5pc0ZpbGUo
KSkKICAgICAgICAgbV9kYXRhVHJhbnNmZXIudXBkYXRlRmlsZUxpc3QoKTsKIAogICAgIHJldHVy
biB7IH07Cg==
</data>
<flag name="review"
          id="342614"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322797</attachid>
            <date>2017-10-05 00:11:53 -0700</date>
            <delta_ts>2017-10-05 01:06:19 -0700</delta_ts>
            <desc>Hold for EWS.</desc>
            <filename>bug-177853-20171005001152.patch</filename>
            <type>text/plain</type>
            <size>5472</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmViZGM3OTY5ZjJmZTFl
OTc0NmVjMzU5NTFiNTE2OWQ2YzAxMWJjYy4uMDk5MWY0YzA5ZDk0MGZjOWU1MjA2MDJjYjFlOTJl
NDRlNmVmMDVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIEFkZHJlc3MgcG9z
dC1yZXZpZXcgZmVlZGJhY2sgZm9sbG93aW5nIHIyMjI4ODUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg1MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzQ4MDczNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhIGFuZCBEYW4g
QmF0ZXMuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6dXBkYXRlRmlsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVRyYW5zZmVyOjp0eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCBjb25zdCk6CisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmZp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbTo6ZmlsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVySXRlbUxpc3Q6OnJlbW92ZSk6CisKKyAgICAgICAgV2hlbiByZW1vdmluZyBh
IGRhdGEgdHJhbnNmZXIgaXRlbSwgY2FwdHVyZSBpdCBpbiBhIFJlZiBmb3IgdGhlIHNjb3BlIG9m
IHJlbW92ZSgpLCBzbyB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAorICAgICAgICBpbW1lZGlh
dGVseSBhZnRlciByZW1vdmluZyBmcm9tIHRoZSBpdGVtIGxpc3QuCisKKzIwMTctMTAtMDQgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIGJhc2lj
IHN1cHBvcnQgZm9yIHRoZSB2ZXJzaW9uIG9mIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmFkZCB0aGF0
IHRha2VzIGEgRmlsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3ODUzCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDgwNzM0Nj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggZjk4MmQ1N2U3NzRlZmE3ZmMwZjIwNjAxNTVlNTM0
NjA2N2M0YWI5Zi4uZDk2MDhhOWU1OTY3MzNkMDg2M2FiOTAxZGU0YmRiMmQ5MzY4NmUxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTE2NCw4ICsxNjQsNiBAQCB2b2lkIERh
dGFUcmFuc2Zlcjo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSkKIAogdm9pZCBEYXRhVHJhbnNmZXI6OnVwZGF0ZUZpbGVMaXN0KCkKIHsKLSAgICAvLyBJZiB3
ZSdyZSByZW1vdmluZyBhbiBpdGVtLCB0aGVuIHRoZSBpdGVtIGxpc3QgbXVzdCBleGlzdCwgd2hp
Y2ggaW1wbGllcyB0aGF0IHRoZSBmaWxlIGxpc3QgbXVzdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQg
YWxyZWFkeS4KLSAgICBBU1NFUlQobV9maWxlTGlzdCk7CiAgICAgQVNTRVJUKGNhbldyaXRlRGF0
YSgpKTsKIAogICAgIG1fZmlsZUxpc3QtPm1fZmlsZXMgPSBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5k
SXRlbUxpc3QoKTsKQEAgLTIwMywxMSArMjAxLDExIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFUcmFu
c2Zlcjo6dHlwZXMoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX2l0ZW1MaXN0ICYmIG1faXRl
bUxpc3QtPmhhc0l0ZW1zKCkgJiYgbV9pdGVtTGlzdC0+aXRlbXMoKS5maW5kTWF0Y2hpbmcoW10g
KGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPmlzRmlsZSgpOyB9KSAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuIHsgIkZpbGVzIiB9OworICAgICAgICByZXR1cm4geyBBU0NJSUxp
dGVyYWwoIkZpbGVzIikgfTsKIAogICAgIGlmIChtX3Bhc3RlYm9hcmQtPmNvbnRhaW5zRmlsZXMo
KSkgewogICAgICAgICBBU1NFUlQoIW1fcGFzdGVib2FyZC0+dHlwZXNTYWZlRm9yQmluZGluZ3Mo
KS5jb250YWlucygiRmlsZXMiKSk7Ci0gICAgICAgIHJldHVybiB7ICJGaWxlcyIgfTsKKyAgICAg
ICAgcmV0dXJuIHsgQVNDSUlMaXRlcmFsKCJGaWxlcyIpIH07CiAgICAgfQogCiAgICAgYXV0byB0
eXBlcyA9IG1fcGFzdGVib2FyZC0+dHlwZXNTYWZlRm9yQmluZGluZ3MoKTsKQEAgLTIyOSw5ICsy
MjcsOCBAQCBWZWN0b3I8UmVmPEZpbGU+PiBEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9h
cmRBbmRJdGVtTGlzdCgpIGNvbnN0CiAgICAgYm9vbCBpdGVtTGlzdENvbnRhaW5zSXRlbXMgPSBm
YWxzZTsKICAgICBpZiAobV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0LT5oYXNJdGVtcygpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbUxpc3QtPml0ZW1zKCkpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGZpbGUgPSBpdGVtLT5maWxlKCkpIHsKLSAgICAgICAgICAgICAgICBmaWxl
cy5hcHBlbmQoKmZpbGUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8gZmls
ZSA9IGl0ZW0tPmZpbGUoKSkKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoZmlsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQogICAgICAgICBpdGVtTGlzdENvbnRhaW5zSXRlbXMg
PSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDk2
ODU1MjkxODdlNjZkNDM5YmJmNTAyYTcwNzZkMDZiNDg4Yzk3NDYuLjFmMjgwOWZmNmIxZWI5YTJk
YWUyZjRjZmRkYjYyZmM0ZThmM2I5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB+RGF0YVRyYW5zZmVySXRlbSgp
OwogCi0gICAgUmVmUHRyPEZpbGU+IGZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGU7IH0KKyAg
ICBSZWZQdHI8RmlsZT4gZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsgfQogICAgIHZvaWQgY2xlYXJM
aXN0QW5kUHV0SW50b0Rpc2FibGVkTW9kZSgpOwogCiAgICAgYm9vbCBpc0ZpbGUoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxp
c3QuY3BwCmluZGV4IDY5MGEyYWIwNzk1ZTI5YmJhY2ZhOWViNjk3YWM0MzFlMDk2MzJlYWEuLjhi
MjczODc0YTg5NDQ0YTY1MDI3YTNkMTg3NjJmNTVmZjYwYzliMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcApAQCAtOTEsNyArOTEsNyBAQCBSZWZQdHI8
RGF0YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmFkZChSZWY8RmlsZT4mJiBm
aWxlKQogCiAgICAgZW5zdXJlSXRlbXMoKS5hcHBlbmQoRGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRl
KG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIGZpbGUtPnR5cGUoKSwgZmls
ZS5jb3B5UmVmKCkpKTsKICAgICBtX2RhdGFUcmFuc2Zlci5kaWRBZGRGaWxlVG9JdGVtTGlzdCgp
OwotICAgIHJldHVybiBSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4geyBtX2l0ZW1zLT5sYXN0KCku
cHRyKCkgfTsKKyAgICByZXR1cm4gbV9pdGVtcy0+bGFzdCgpLnB0cigpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIGluZGV4KQpA
QCAtMTAzLDE1ICsxMDMsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRyYW5zZmVySXRlbUxp
c3Q6OnJlbW92ZSh1bnNpZ25lZCBpbmRleCkKICAgICBpZiAoaXRlbXMuc2l6ZSgpIDw9IGluZGV4
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsgLy8gTWF0Y2hl
cyBHZWNrby4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjkyNQog
Ci0gICAgLy8gU2luY2UgZmlsZS1iYWNrZWQgRGF0YVRyYW5zZmVySXRlbXMgYXJlIG5vdCBhY3R1
YWxseSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkIHlldCwgd2UgZG9uJ3QgbmVlZCB0byByZW1v
dmUgYW55Ci0gICAgLy8gdGVtcG9yYXJ5IGZpbGVzLiBXaGVuIHdlIHN1cHBvcnQgd3JpdGluZyBm
aWxlLWJhY2tlZCBEYXRhVHJhbnNmZXJJdGVtcyB0byB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCwg
d2Ugd2lsbCBuZWVkCi0gICAgLy8gdG8gY2xlYW4gdXAgaGVyZS4KLSAgICBhdXRvJiByZW1vdmVk
SXRlbSA9IGl0ZW1zW2luZGV4XS5nZXQoKTsKLSAgICBpZiAoIXJlbW92ZWRJdGVtLmlzRmlsZSgp
KQotICAgICAgICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuY2xlYXIocmVtb3ZlZEl0ZW0u
dHlwZSgpKTsKLSAgICByZW1vdmVkSXRlbS5jbGVhckxpc3RBbmRQdXRJbnRvRGlzYWJsZWRNb2Rl
KCk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZmlsZSBmcm9tIHRoZSBwYXN0ZWJvYXJkIG9i
amVjdCBvbmNlIHdlIGFkZCBzdXBwb3J0IGZvciBpdC4KKyAgICBSZWY8RGF0YVRyYW5zZmVySXRl
bT4gcmVtb3ZlZEl0ZW0gPSBpdGVtc1tpbmRleF0uY29weVJlZigpOworICAgIGlmICghcmVtb3Zl
ZEl0ZW0tPmlzRmlsZSgpKQorICAgICAgICBtX2RhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuY2xl
YXIocmVtb3ZlZEl0ZW0tPnR5cGUoKSk7CisgICAgcmVtb3ZlZEl0ZW0tPmNsZWFyTGlzdEFuZFB1
dEludG9EaXNhYmxlZE1vZGUoKTsKICAgICBpdGVtcy5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChy
ZW1vdmVkSXRlbS5pc0ZpbGUoKSkKKyAgICBpZiAocmVtb3ZlZEl0ZW0tPmlzRmlsZSgpKQogICAg
ICAgICBtX2RhdGFUcmFuc2Zlci51cGRhdGVGaWxlTGlzdCgpOwogCiAgICAgcmV0dXJuIHsgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>