<?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>90592</bug_id>
          
          <creation_ts>2012-07-05 01:44:03 -0700</creation_ts>
          <short_desc>Web Inspector: Clean up FileSystem related code</short_desc>
          <delta_ts>2012-07-11 02:05:00 -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>Web Inspector (Deprecated)</component>
          <version>312.x</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90439</dependson>
    
    <dependson>90518</dependson>
    
    <dependson>90529</dependson>
          <blocked>68203</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>kinuko</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663393</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-05 01:44:03 -0700</bug_when>
    <thetext>FileSystem related code in Inspector needs some clean up as follows
- Clean up layout tests and add test case for error case,
- Fix error handling on request,
- s/GetFileSystemRootTask/FileSystemRootRequest/g
- s/ReadDirectoryTask/DirectoryContentRequest/g
- s/ReadFileTask/FileContentRequest/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663396</commentid>
    <comment_count>1</comment_count>
      <attachid>150892</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-05 01:50:51 -0700</bug_when>
    <thetext>Created attachment 150892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664361</commentid>
    <comment_count>2</comment_count>
      <attachid>150892</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-07 01:07:58 -0700</bug_when>
    <thetext>Comment on attachment 150892
Patch

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

Please rebase and fix style nits before landing.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:195
&gt; +    RefPtr&lt;TypeBuilder::FileSystem::Entry&gt; result =

RefPtr&lt;TypeBuilder::FileSystem::Entry&gt; result = TypeBuilder::FileSystem::Entry::create()
    .setUrl(entry-&gt;toURL())
    .setName(&quot;/&quot;)
    .setIsDirectory(true);

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:303
&gt; +        RefPtr&lt;TypeBuilder::FileSystem::Entry&gt; entryForFrontend =

Ditto.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:407
&gt; +    RefPtr&lt;Metadata&gt; result =

Ditto.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:594
&gt; +        *error = &quot;No frame is available for the request&quot;;

You can avoid copy-pasting this string several times by extracting assertScriptExecutionContextForOrigin method (like assertDocumentLoader in InspectorPageAgent).

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:664
&gt; +    long long startLL = start ? *start : 0;

startPosition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666359</commentid>
    <comment_count>3</comment_count>
      <attachid>151600</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-10 22:36:22 -0700</bug_when>
    <thetext>Created attachment 151600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666367</commentid>
    <comment_count>4</comment_count>
      <attachid>151602</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-10 22:45:28 -0700</bug_when>
    <thetext>Created attachment 151602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666389</commentid>
    <comment_count>5</comment_count>
      <attachid>151608</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-10 23:18:33 -0700</bug_when>
    <thetext>Created attachment 151608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666390</commentid>
    <comment_count>6</comment_count>
      <attachid>150892</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-10 23:19:00 -0700</bug_when>
    <thetext>Comment on attachment 150892
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:195
&gt;&gt; +    RefPtr&lt;TypeBuilder::FileSystem::Entry&gt; result =
&gt; 
&gt; RefPtr&lt;TypeBuilder::FileSystem::Entry&gt; result = TypeBuilder::FileSystem::Entry::create()
&gt;     .setUrl(entry-&gt;toURL())
&gt;     .setName(&quot;/&quot;)
&gt;     .setIsDirectory(true);

Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:303
&gt;&gt; +        RefPtr&lt;TypeBuilder::FileSystem::Entry&gt; entryForFrontend =
&gt; 
&gt; Ditto.

Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:407
&gt;&gt; +    RefPtr&lt;Metadata&gt; result =
&gt; 
&gt; Ditto.

Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:594
&gt;&gt; +        *error = &quot;No frame is available for the request&quot;;
&gt; 
&gt; You can avoid copy-pasting this string several times by extracting assertScriptExecutionContextForOrigin method (like assertDocumentLoader in InspectorPageAgent).

Sounds nice. Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:664
&gt;&gt; +    long long startLL = start ? *start : 0;
&gt; 
&gt; startPosition

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666432</commentid>
    <comment_count>7</comment_count>
      <attachid>151608</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-11 00:22:26 -0700</bug_when>
    <thetext>Comment on attachment 151608
Patch

Rejecting attachment 151608 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 11988 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
47&gt;At revision 11988.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13200229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666533</commentid>
    <comment_count>8</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-07-11 02:05:00 -0700</bug_when>
    <thetext>Committed r122313: &lt;http://trac.webkit.org/changeset/122313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150892</attachid>
            <date>2012-07-05 01:50:51 -0700</date>
            <delta_ts>2012-07-10 23:19:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90592-20120705175049.patch</filename>
            <type>text/plain</type>
            <size>54319</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI0Zjk1M2IzZDI5OGRk
OTg5M2MxMzUxN2FjNjY0ZDIyMzM5NzVhMy4uZWU2MTc2OTFhMWFjNzk1ZmRhNjk3ODdhNTU4NTBk
N2E0MTVkMTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA3LTA1ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
bGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTIKKworICAgICAgICBGaWxlU3lzdGVtIHJlbGF0
ZWQgY29kZSBpbiBJbnNwZWN0b3IgbmVlZHMgc29tZSBjbGVhbiB1cCBhcyBmb2xsb3dzCisgICAg
ICAgIC0gQ2xlYW4gdXAgbGF5b3V0IHRlc3RzIGFuZCBhZGQgdGVzdCBjYXNlIGZvciBlcnJvciBj
YXNlLAorICAgICAgICAtIEZpeCBlcnJvciBoYW5kbGluZyBvbiByZXF1ZXN0LAorICAgICAgICAt
IHMvR2V0RmlsZVN5c3RlbVJvb3RUYXNrL0ZpbGVTeXN0ZW1Sb290UmVxdWVzdC9nCisgICAgICAg
IC0gcy9SZWFkRGlyZWN0b3J5VGFzay9EaXJlY3RvcnlDb250ZW50UmVxdWVzdC9nCisgICAgICAg
IC0gcy9SZWFkRmlsZVRhc2svRmlsZUNvbnRlbnRSZXF1ZXN0L2cKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1
ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0
ZW1Sb290KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
UmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RGaWxlU3lzdGVtUm9vdC5yZXF1ZXN0QWNj
ZXB0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5w
cm90b3R5cGUucmVxdWVzdEZpbGVTeXN0ZW1Sb290KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3REaXJlY3RvcnlDb250ZW50
LnJlcXVlc3RBY2NlcHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVl
c3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0TWV0
YWRhdGEucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
UmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNv
bnRlbnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
UmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6CisKIDIwMTItMDct
MDQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBp
bmxpbmUga2V5d29yZHMgZnJvbSBmdW5jdGlvbnMgd2hpY2ggY2FuIG5vdCBiZSBpbmxpbmVkIGlu
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCBkMjJiYjc4ZTIyZTcyYTc3
YzViOWU3OGFkYmRlOTI2NTZkMWU2MTg5Li44ZmY3MDMwYWFkZTcyM2I2M2M1NzY5MWQyM2UxY2Ni
Mzg4ZjhhMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMzUsMTIgKzM1LDEwIEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAKICNpbmNsdWRlICJCYXNlNjQuaCIKLSNpbmNsdWRl
ICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRl
ICJEaXJlY3RvcnlSZWFkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVu
dHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5LmgiCiAjaW5jbHVkZSAiRW50cnlBcnJh
eS5oIgogI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNr
LmgiCkBAIC0xNDUsMTIgKzE0MywxMiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotY2xhc3MgR2V0
RmlsZVN5c3RlbVJvb3RUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8R2V0RmlsZVN5c3RlbVJvb3RU
YXNrPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0RmlsZVN5c3RlbVJvb3RUYXNrKTsK
K2NsYXNzIEZpbGVTeXN0ZW1Sb290UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0
ZW1Sb290UmVxdWVzdD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbGVTeXN0ZW1Sb290
UmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0RmlsZVN5c3RlbVJv
b3RUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3Zp
ZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZVN5c3RlbVJvb3RSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFBy
b3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBGaWxlU3lzdGVtVHlwZSB0
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRGaWxlU3lzdGVtUm9v
dFRhc2soZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB0eXBlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJl
cXVlc3RJZCwgdHlwZSkpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwpAQCAtMTY3LDU3ICsxNjUsNTEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9u
dGVuZFByb3ZpZGVyID0gMDsKICAgICB9CiAKLSAgICBHZXRGaWxlU3lzdGVtUm9vdFRhc2soUGFz
c1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0KFBhc3NSZWZQ
dHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgRmls
ZVN5c3RlbVR5cGUgdHlwZSkKICAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQ
cm92aWRlcikKICAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCiAgICAgICAgICwgbV90
eXBlKHR5cGUpIHsgfQogCiAgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQ
cm92aWRlcjsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0gICAgU3RyaW5nIG1fdHlwZTsKKyAgICBG
aWxlU3lzdGVtVHlwZSBtX3R5cGU7CiB9OwogCi1ib29sIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6
ZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKK2Jvb2wgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0
OjpkaWRIaXRFcnJvcihGaWxlRXJyb3IqIGVycm9yKQogewogICAgIHJlcG9ydFJlc3VsdChlcnJv
ci0+Y29kZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHZXRGaWxlU3lzdGVtUm9v
dFRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCit2b2lkIEZpbGVTeXN0ZW1Sb290UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKLSAgICBGaWxlU3lzdGVtVHlwZSB0eXBl
OwotICAgIGlmIChtX3R5cGUgPT0gRE9NRmlsZVN5c3RlbUJhc2U6OnBlcnNpc3RlbnRQYXRoUHJl
Zml4KQotICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OwotICAgIGVsc2Ug
aWYgKG1fdHlwZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeCkKLSAg
ICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5OwotICAgIGVsc2UgewotICAgICAg
ICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxs
YmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkdldEZp
bGVTeXN0ZW1Sb290VGFzazo6ZGlkR2V0RW50cnkpOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmRpZEhpdEVycm9yKTsKLSAg
ICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29s
dmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsICIvIik7CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxs
YmFjaz46OmNyZWF0ZSh0aGlzLCAmRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpkaWRHZXRFbnRyeSk7
CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3Bh
dGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkZpbGVTeXN0ZW1Sb290
UmVxdWVzdDo6ZGlkSGl0RXJyb3IpOworICAgIE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBm
aWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV90eXBlLCAi
LyIpOwogCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5
c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJl
bGVhc2UoKSk7CisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmls
ZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX3R5cGUsIGZpbGVTeXN0ZW1DYWxsYmFj
a3MucmVsZWFzZSgpKTsKIH0KIAotYm9vbCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmRpZEdldEVu
dHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpkaWRHZXRFbnRy
eShFbnRyeSogZW50cnkpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpF
bnRyeT4gcmVzdWx0KFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3JlYXRlKCkuc2V0
VXJsKGVudHJ5LT50b1VSTCgpKS5zZXROYW1lKCIvIikuc2V0SXNEaXJlY3RvcnkodHJ1ZSkpOwor
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+IHJlc3VsdCA9CisgICAg
ICAgIFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAg
IC5zZXRVcmwoZW50cnktPnRvVVJMKCkpCisgICAgICAgICAgICAuc2V0TmFtZSgiLyIpCisgICAg
ICAgICAgICAuc2V0SXNEaXJlY3RvcnkodHJ1ZSk7CiAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19j
YXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotY2xhc3MgUmVhZERpcmVjdG9yeVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkRGly
ZWN0b3J5VGFzaz4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlYWREaXJlY3RvcnlUYXNr
KTsKK2NsYXNzIERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RGly
ZWN0b3J5Q29udGVudFJlcXVlc3Q+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXJlY3Rv
cnlDb250ZW50UmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZERp
cmVjdG9yeVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5k
UHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhZERpcmVjdG9y
eVRhc2soZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB1cmwpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlDb250ZW50UmVxdWVzdChmcm9udGVuZFByb3ZpZGVyLCBy
ZXF1ZXN0SWQsIHVybCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflJlYWREaXJlY3RvcnlUYXNr
KCkKKyAgICB2aXJ0dWFsIH5EaXJlY3RvcnlDb250ZW50UmVxdWVzdCgpCiAgICAgewogICAgICAg
ICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIpOwogICAgIH0KQEAgLTI0Miw3ICsy
MzQsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSAwOwogICAgIH0K
IAotICAgIFJlYWREaXJlY3RvcnlUYXNrKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgRGly
ZWN0b3J5Q29udGVudFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVu
ZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBt
X2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKICAgICAgICAgLCBtX3JlcXVlc3RJ
ZChyZXF1ZXN0SWQpCiAgICAgICAgICwgbV91cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpIHsgfQpA
QCAtMjU2LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4g
bV9kaXJlY3RvcnlSZWFkZXI7CiB9OwogCi12b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQordm9pZCBEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAKQEAgLTI2NywxNCArMjU5LDE0IEBAIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
ID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMs
ICZSZWFkRGlyZWN0b3J5VGFzazo6ZGlkR2V0RW50cnkpOwotICAgIFJlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxi
YWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRGlyZWN0b3J5VGFzazo6ZGlkSGl0RXJyb3IpOworICAg
IFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNo
ZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkRpcmVjdG9yeUNvbnRlbnRS
ZXF1ZXN0OjpkaWRHZXRFbnRyeSk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUo
dGhpcywgJkRpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAgT3duUHRy
PFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZlVVJJQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCB0eXBlLCBwYXRoKTsKIAogICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwg
ZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29sIFJlYWREaXJlY3RvcnlU
YXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCitib29sIERpcmVjdG9yeUNvbnRlbnRSZXF1
ZXN0OjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiB7CiAgICAgaWYgKCFlbnRyeS0+aXNEaXJl
Y3RvcnkoKSkgewogICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpUWVBFX01JU01BVENI
X0VSUik7CkBAIC0yODcsMTkgKzI3OSwxOSBAQCBib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRH
ZXRFbnRyeShFbnRyeSogZW50cnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVhZERp
cmVjdG9yeVRhc2s6OnJlYWREaXJlY3RvcnlFbnRyaWVzKCkKK3ZvaWQgRGlyZWN0b3J5Q29udGVu
dFJlcXVlc3Q6OnJlYWREaXJlY3RvcnlFbnRyaWVzKCkKIHsKICAgICBpZiAoIW1fZGlyZWN0b3J5
UmVhZGVyLT5maWxlc3lzdGVtKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAg
ICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2Fs
bGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyaWVzQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJl
YWREaXJlY3RvcnlUYXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyk7Ci0gICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVy
cm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRIaXRFcnJv
cik7CisgICAgUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyaWVzQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkRpcmVj
dG9yeUNvbnRlbnRSZXF1ZXN0OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyk7CisgICAgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5
PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkRpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0Ojpk
aWRIaXRFcnJvcik7CiAgICAgbV9kaXJlY3RvcnlSZWFkZXItPnJlYWRFbnRyaWVzKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLWJvb2wgUmVhZERpcmVjdG9yeVRhc2s6OmRp
ZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJpZXMpCitib29sIERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRy
aWVzKQogewogICAgIGlmICghZW50cmllcy0+bGVuZ3RoKCkpIHsKICAgICAgICAgcmVwb3J0UmVz
dWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgbV9lbnRyaWVzKTsKQEAg
LTMwOCw3ICszMDAsMTEgQEAgYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBlbnRyaWVzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIEVudHJ5KiBlbnRyeSA9IGVu
dHJpZXMtPml0ZW0oaSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6
RW50cnk+IGVudHJ5Rm9yRnJvbnRlbmQgPSBUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk6
OmNyZWF0ZSgpLnNldFVybChlbnRyeS0+dG9VUkwoKSkuc2V0TmFtZShlbnRyeS0+bmFtZSgpKS5z
ZXRJc0RpcmVjdG9yeShlbnRyeS0+aXNEaXJlY3RvcnkoKSk7CisgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+IGVudHJ5Rm9yRnJvbnRlbmQgPQorICAgICAgICAg
ICAgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAg
ICAgIC5zZXRVcmwoZW50cnktPnRvVVJMKCkpCisgICAgICAgICAgICAgICAgLnNldE5hbWUoZW50
cnktPm5hbWUoKSkKKyAgICAgICAgICAgICAgICAuc2V0SXNEaXJlY3RvcnkoZW50cnktPmlzRGly
ZWN0b3J5KCkpOwogCiAgICAgICAgIHVzaW5nIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5
cGU7CiAgICAgICAgIGlmICghZW50cnktPmlzRGlyZWN0b3J5KCkpIHsKQEAgLTMzNSwxNSArMzMx
LDE1IEBAIGJvb2wgUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVu
dHJ5QXJyYXkqIGVudHJpZXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNsYXNzIEdldE1ldGFk
YXRhVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPEdldE1ldGFkYXRhVGFzaz4gewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdldE1ldGFkYXRhVGFzayk7CitjbGFzcyBNZXRhZGF0YVJlcXVlc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZXRhZGF0YVJlcXVlc3Q+IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNZXRhZGF0YVJlcXVlc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEdldE1ldGFkYXRhVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWV0YWRhdGFSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVu
ZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0TWV0YWRhdGFUYXNr
KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWV0YWRhdGFSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJs
KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+R2V0TWV0YWRhdGFUYXNrKCkKKyAgICB2aXJ0dWFs
IH5NZXRhZGF0YVJlcXVlc3QoKQogICAgIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJv
cjo6QUJPUlRfRVJSKTsKICAgICB9CkBAIC0zNjcsNyArMzYzLDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBHZXRNZXRhZGF0YVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3Zp
ZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkK
KyAgICBNZXRhZGF0YVJlcXVlc3QoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVu
ZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBt
X2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKICAgICAgICAgLCBtX3JlcXVlc3RJ
ZChyZXF1ZXN0SWQpCiAgICAgICAgICwgbV91cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpIHsgfQpA
QCAtMzc5LDQ5ICszNzUsNTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEaXJlY3Rvcnk7CiB9
OwogCi12b2lkIEdldE1ldGFkYXRhVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3ZvaWQgTWV0YWRhdGFSZXF1ZXN0OjpzdGFydChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIEZpbGVT
eXN0ZW1UeXBlIHR5cGU7CiAgICAgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVS
TChtX3VybCwgdHlwZSwgbV9wYXRoKTsKIAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+Ojpj
cmVhdGUodGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkR2V0RW50cnkpOwotICAgIFJlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxF
cnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRNZXRhZGF0YVRhc2s6OmRpZEhpdEVycm9y
KTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tE
aXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0YVJl
cXVlc3Q6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0
aGlzLCAmTWV0YWRhdGFSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAKICAgICBPd25QdHI8UmVzb2x2
ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6
OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHR5cGUsIG1fcGF0aCk7CiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0
ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lz
dGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgR2V0TWV0YWRhdGFUYXNrOjpkaWRH
ZXRFbnRyeShFbnRyeSogZW50cnkpCitib29sIE1ldGFkYXRhUmVxdWVzdDo6ZGlkR2V0RW50cnko
RW50cnkqIGVudHJ5KQogewogICAgIGlmICghZW50cnktPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JU
X0VSUik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJlZlB0cjxNZXRhZGF0
YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PE1l
dGFkYXRhQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkR2V0TWV0
YWRhdGEpOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRNZXRh
ZGF0YVRhc2s6OmRpZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxNZXRhZGF0YUNhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0YVJlcXVlc3Q6OmRpZEdldE1ldGFkYXRhKTsKKyAgICBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZh
Y3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmTWV0YWRhdGFSZXF1ZXN0OjpkaWRI
aXRFcnJvcik7CiAgICAgZW50cnktPmdldE1ldGFkYXRhKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjayk7CiAgICAgbV9pc0RpcmVjdG9yeSA9IGVudHJ5LT5pc0RpcmVjdG9yeSgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIEdldE1ldGFkYXRhVGFzazo6ZGlkR2V0TWV0YWRhdGEo
TWV0YWRhdGEqIG1ldGFkYXRhKQorYm9vbCBNZXRhZGF0YVJlcXVlc3Q6OmRpZEdldE1ldGFkYXRh
KE1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAgICB1c2luZyBUeXBlQnVpbGRlcjo6RmlsZVN5c3Rl
bTo6TWV0YWRhdGE7Ci0gICAgUmVmUHRyPE1ldGFkYXRhPiByZXN1bHQgPSBNZXRhZGF0YTo6Y3Jl
YXRlKCkuc2V0TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSgpKS5z
ZXRTaXplKG1ldGFkYXRhLT5zaXplKCkpOworICAgIFJlZlB0cjxNZXRhZGF0YT4gcmVzdWx0ID0K
KyAgICAgICAgTWV0YWRhdGE6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0TW9kaWZpY2F0aW9u
VGltZShtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSgpKQorICAgICAgICAgICAgLnNldFNpemUo
bWV0YWRhdGEtPnNpemUoKSk7CiAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJv
cjo6RXJyb3JDb2RlPigwKSwgcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3Mg
UmVhZEZpbGVUYXNrIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlYWRGaWxlVGFzayk7CitjbGFzcyBGaWxlQ29udGVudFJlcXVlc3QgOiBwdWJsaWMg
RXZlbnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlsZUNvbnRlbnRSZXF1
ZXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRmlsZVRhc2s+IGNyZWF0
ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlQ29udGVu
dFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJv
dmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVhZEZpbGVUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJ
ZCwgdXJsLCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRmlsZUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsLCBz
dGFydCwgZW5kLCBjaGFyc2V0KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmVhZEZpbGVUYXNr
KCkKKyAgICB2aXJ0dWFsIH5GaWxlQ29udGVudFJlcXVlc3QoKQogICAgIHsKICAgICAgICAgcmVw
b3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKICAgICB9CkBAIC00NjEsNyArNDYwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyID0gMDsKICAgICB9CiAKLSAg
ICBSZWFkRmlsZVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3Zp
ZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisgICAgRmlsZUNvbnRlbnRSZXF1
ZXN0KFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogICAgICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRM
aXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCiAgICAgICAgICwgbV9mcm9udGVuZFByb3Zp
ZGVyKGZyb250ZW5kUHJvdmlkZXIpCiAgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQpA
QCAtNDgzLDcgKzQ4Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZpbGVSZWFkZXI+IG1fcmVh
ZGVyOwogfTsKIAotdm9pZCBSZWFkRmlsZVRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit2b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6c3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKQEAgLTQ5NCwxNCArNDkzLDE0IEBA
IHZvaWQgUmVhZEZpbGVUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8
RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeSk7
Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3Bh
dGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6
ZGlkSGl0RXJyb3IpOworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywg
JkZpbGVDb250ZW50UmVxdWVzdDo6ZGlkR2V0RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxi
YWNrPjo6Y3JlYXRlKHRoaXMsICZGaWxlQ29udGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAg
ICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29s
dmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgUmVhZEZp
bGVUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCitib29sIEZpbGVDb250ZW50UmVxdWVz
dDo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQogewogICAgIGlmIChlbnRyeS0+aXNEaXJlY3Rv
cnkoKSkgewogICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpUWVBFX01JU01BVENIX0VS
UiwgMCk7CkBAIC01MTMsOCArNTEyLDggQEAgYm9vbCBSZWFkRmlsZVRhc2s6OmRpZEdldEVudHJ5
KEVudHJ5KiBlbnRyeSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUmVmUHRy
PEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9y
eTxGaWxlQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0RmlsZSk7
Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3Bh
dGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6
ZGlkSGl0RXJyb3IpOworICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9
IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RmlsZUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZG
aWxlQ29udGVudFJlcXVlc3Q6OmRpZEdldEZpbGUpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZGaWxlQ29udGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBz
dGF0aWNfY2FzdDxGaWxlRW50cnkqPihlbnRyeSktPmZpbGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKIAogICAgIG1fcmVhZGVyID0gRmlsZVJlYWRlcjo6Y3JlYXRlKGVudHJ5LT5m
aWxlc3lzdGVtKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC01MjMsNyArNTIyLDcg
QEAgYm9vbCBSZWFkRmlsZVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUoRmlsZSogZmlsZSkK
K2Jvb2wgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRHZXRGaWxlKEZpbGUqIGZpbGUpCiB7CiAgICAg
UmVmUHRyPEJsb2I+IGJsb2IgPSBmaWxlLT5zbGljZShtX3N0YXJ0LCBtX2VuZCk7CiAgICAgbV9y
ZWFkZXItPnNldE9ubG9hZCh0aGlzKTsKQEAgLTUzNCw3ICs1MzMsNyBAQCBib29sIFJlYWRGaWxl
VGFzazo6ZGlkR2V0RmlsZShGaWxlKiBmaWxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFJlYWRGaWxlVGFzazo6ZGlkUmVhZCgpCit2b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkUmVh
ZCgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBtX3JlYWRlci0+YXJyYXlC
dWZmZXJSZXN1bHQoKTsKIApAQCAtNTgyLDcgKzU4MSw3IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRlLT5zZXRCb29sZWFu
KEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQp
OwogfQogCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1S
b290KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgaW50KiByZXF1ZXN0SWQpCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgaW50KiByZXF1ZXN0SWQpCiB7CiAgICAg
aWYgKCFtX2VuYWJsZWQgfHwgIW1fZnJvbnRlbmRQcm92aWRlcikgewogICAgICAgICAqZXJyb3Ig
PSAiRmlsZVN5c3RlbSBhZ2VudCBpcyBub3QgZW5hYmxlZCI7CkBAIC01OTAsMTEgKzU4OSwyNCBA
QCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVy
cm9yU3RyaW5nKiBlcnJvciwgY29uc3QgUwogICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCkpOworICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICAqZXJyb3IgPSAiTm8gZnJhbWUgaXMgYXZh
aWxhYmxlIGZvciB0aGUgcmVxdWVzdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBG
aWxlU3lzdGVtVHlwZSB0eXBlOworICAgIGlmICh0eXBlU3RyaW5nID09IERPTUZpbGVTeXN0ZW1C
YXNlOjpwZXJzaXN0ZW50UGF0aFByZWZpeCkKKyAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBl
UGVyc2lzdGVudDsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09IERPTUZpbGVTeXN0ZW1CYXNl
Ojp0ZW1wb3JhcnlQYXRoUHJlZml4KQorICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1w
b3Jhcnk7CisgICAgZWxzZSB7CisgICAgICAgICplcnJvciA9ICJJbnZhbGlkIEZpbGVTeXN0ZW0g
dHlwZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAqcmVxdWVzdElkID0gbV9uZXh0
UmVxdWVzdElkKys7Ci0gICAgaWYgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCkpKQotICAgICAgICBHZXRGaWxlU3lz
dGVtUm9vdFRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHR5cGUp
LT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIG1fZnJv
bnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCgqcmVxdWVz
dElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7CisgICAgRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0OjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElk
LCB0eXBlKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyog
ZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKQEAgLTYwNSwxMiArNjE3
LDE0IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0CiAgICAgfQogICAgIEFTU0VSVChtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOwogCi0gICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVl
c3RJZCsrOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHVybCkuZ2V0KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgeworICAgICAgICAqZXJyb3IgPSAiTm8gZnJhbWUgaXMgYXZhaWxhYmxlIGZvciB0aGUgcmVx
dWVzdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCi0g
ICAgICAgIFJlYWREaXJlY3RvcnlUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVx
dWVzdElkLCB1cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGlyZWN0b3J5Q29udGVudFJl
Y2VpdmVkKCpyZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIp
LCAwKTsKKyAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElkKys7CisgICAgRGlyZWN0b3J5
Q29udGVudFJlcXVlc3Q6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVy
bCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6cmVxdWVzdE1ldGFkYXRhKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3Qg
U3RyaW5nJiB1cmwsIGludCogcmVxdWVzdElkKQpAQCAtNjIxLDEyICs2MzUsMTQgQEAgdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYKICAgICB9CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlci0+
ZnJvbnRlbmQoKSk7CiAKLSAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElkKys7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
dXJsKS5nZXQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CisgICAgICAg
ICplcnJvciA9ICJObyBmcmFtZSBpcyBhdmFpbGFibGUgZm9yIHRoZSByZXF1ZXN0IjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKSkKLSAgICAgICAgR2V0TWV0
YWRhdGFUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB1cmwpLT5z
dGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRl
bmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+bWV0YWRhdGFSZWNlaXZlZCgqcmVxdWVzdElkLCBzdGF0
aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7CisgICAgKnJlcXVlc3RJZCA9
IG1fbmV4dFJlcXVlc3RJZCsrOworICAgIE1ldGFkYXRhUmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRl
bmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZUNvbnRl
bnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgaW50KiBzdGFy
dCwgY29uc3QgaW50KiBlbmQsIGNvbnN0IFN0cmluZyogY2hhcnNldCwgaW50KiByZXF1ZXN0SWQp
CkBAIC02MzcsMTIgKzY1MywxNyBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVx
dWVzdEZpbGVDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaQogICAgIH0KICAg
ICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKIAorICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVybCkuZ2V0
KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICAqZXJyb3Ig
PSAiTm8gZnJhbWUgaXMgYXZhaWxhYmxlIGZvciB0aGUgcmVxdWVzdCI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElkKys7CiAKLSAgICBp
ZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcodXJsKS5nZXQoKSkpCi0gICAgICAgIFJlYWRGaWxlVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQ
cm92aWRlciwgKnJlcXVlc3RJZCwgdXJsLCBzdGFydCA/ICpzdGFydCA6IDAsIGVuZCA/ICplbmQg
OiBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpLCBjaGFyc2V0ID8gKmNoYXJz
ZXQgOiAiIiktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5maWxlQ29udGVudFJlY2VpdmVkKCpy
ZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwLCAwLCAw
KTsKKyAgICBsb25nIGxvbmcgc3RhcnRMTCA9IHN0YXJ0ID8gKnN0YXJ0IDogMDsKKyAgICBsb25n
IGxvbmcgZW5kTEwgPSBlbmQgPyAqZW5kIDogc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+
OjptYXgoKTsKKyAgICBGaWxlQ29udGVudFJlcXVlc3Q6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlk
ZXIsICpyZXF1ZXN0SWQsIHVybCwgc3RhcnRMTCwgZW5kTEwsIGNoYXJzZXQgPyAqY2hhcnNldCA6
ICIiKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmgKaW5kZXggMmVkY2I5ZGUwYjk2MThmMGEzODYzOGRiZThjOGFkNmRmNmVhMWIxZi4uOGM2
MTUwMDg5ZmU2NDliNjNhNDIzNTg4NjEyNmEyZTAxOTE1MjY4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAtMzQsMTgg
KzM0LDE0IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01GaWxlU3lzdGVt
OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JTdGF0ZTsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKQEAgLTU5LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCogcmVxdWVzdElk
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywg
aW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGlyZWN0
b3J5Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJ
ZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQqIGVuZCwgY29uc3QgU3RyaW5nKiBjaGFy
c2V0LCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDNlNmZiYmEzMWZm
MzllOTBjN2Y4YzhhZTAyOTk5MzQ1OTQ4NGYxMWUuLjIxZjBkYWQ0YzQzMzhiNWFlOGVkZTMxNWYy
ODdjNmJlNjUyMTk5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC00NTcsNyArNDU3LDcgQEAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCi0g
ICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5FbnRyeSl9IGNh
bGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5F
bnRyeT0pfSBjYWxsYmFjawogICAgICAqLwogICAgIHJlcXVlc3RGaWxlU3lzdGVtUm9vdDogZnVu
Y3Rpb24ob3JpZ2luLCB0eXBlLCBjYWxsYmFjaykKICAgICB7CkBAIC00NjYsNyArNDY2LDkgQEAg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVycm9yLCByZXF1ZXN0SWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7CisgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNrOwogICAg
ICAgICB9CiAgICAgfSwKQEAgLTQ5Niw3ICs0OTgsOSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiByZXF1ZXN0
QWNjZXB0ZWQoZXJyb3IsIHJlcXVlc3RJZCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFl
cnJvcikKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhG
aWxlRXJyb3IuU0VDVVJJVFlfRVJSKTsKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBzdG9yZVtyZXF1ZXN0SWRdID0gY2FsbGJhY2s7CiAgICAgICAgIH0KICAgICB9LApAQCAtNTI2
LDcgKzUzMCw5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90
eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVxdWVz
dElkKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5TRUNVUklUWV9FUlIp
OworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0b3JlW3JlcXVlc3RJZF0gPSBj
YWxsYmFjazsKICAgICAgICAgfQogICAgIH0sCkBAIC01NTQsNyArNTYwLDkgQEAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVu
Y3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVycm9yLCByZXF1ZXN0SWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7CisgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNrOwogICAgICAgICB9CiAg
ICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2MzA4ZjY1NzgxZGZjNjQ1ZjMwZWI1NGZkNWVlM2RlNzljNDA5ZjNhLi5h
MjJlNzk1NjljNGI2NGFlZGM1NzYzZTFkMDg0MGI4NjgyZTE2YzExIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzIgQEAKKzIwMTItMDctMDUgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENsZWFuIHVwIEZpbGVTeXN0ZW0gcmVsYXRlZCBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU5MgorCisg
ICAgICAgIEZpbGVTeXN0ZW0gcmVsYXRlZCBjb2RlIGluIEluc3BlY3RvciBuZWVkcyBzb21lIGNs
ZWFuIHVwIGFzIGZvbGxvd3MKKyAgICAgICAgLSBDbGVhbiB1cCBsYXlvdXQgdGVzdHMgYW5kIGFk
ZCB0ZXN0IGNhc2UgZm9yIGVycm9yIGNhc2UsCisgICAgICAgIC0gRml4IGVycm9yIGhhbmRsaW5n
IG9uIHJlcXVlc3QsCisgICAgICAgIC0gcy9HZXRGaWxlU3lzdGVtUm9vdFRhc2svRmlsZVN5c3Rl
bVJvb3RSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWREaXJlY3RvcnlUYXNrL0RpcmVjdG9yeUNv
bnRlbnRSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWRGaWxlVGFzay9GaWxlQ29udGVudFJlcXVl
c3QvZworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanM6CisgICAg
ICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0
ZW1Sb290UmVxdWVzdFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0
Lkluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KToKKyAgICAg
ICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFS
ZXF1ZXN0UmVzdWx0KToKKyAgICAgICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVj
dG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAgKGluaXRpYWxp
emVfRmlsZVN5c3RlbVRlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0
b3J5LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnkuaHRtbC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1j
b250ZW50LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L3JlYWQtZmlsZS5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtZmlsZXN5c3RlbS1l
eHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9y
ZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtZmlsZXN5c3RlbS1yb290Lmh0bWwuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRh
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1l
dGFkYXRhLmh0bWwuCisKIDIwMTItMDctMDQgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIGdhcmRlbmluZywgZHJvcCB0
ZXN0IGV4cGVjdGF0aW9ucyBmb3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKaW5kZXggNGVk
NmNlNThmZDcyNDUxYmI4NWNjNTM4MWIyNGY1MDBhZjQ2ZWIxZS4uM2RmZjZkZWE4NWRmNmEyNTA4
ZTg5MTQ1ZDc3ZmRjM2MwYzIzOTQxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKQEAg
LTcwLDEyICs3MCwyMyBAQCB2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9u
KCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJGaWxlU3lzdGVt
KCIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsKICAg
ICB9OwogCi0gICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVjdG9yeVJlc3VsdCA9IGZ1bmN0
aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVt
Um9vdFJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsg
ZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGJhY2tlbmRSb290RW50cnkpCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiYmFja2VuZFJvb3RFbnRyeS51cmw6ICIgKyBiYWNrZW5k
Um9vdEVudHJ5LnVybCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJiYWNrZW5kUm9vdEVudHJ5OiAobnVsbCkiKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiIpOworICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBl
cnJvckNvZGUpOwogCiAgICAgICAgIGlmICghZW50cmllcykgewogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoImVudHJpZXM6IChudWxsKSIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTg1LDYgKzk2LDcgQEAgdmFyIGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QgPSBmdW5jdGlv
bigpCiAgICAgICAgICAgZm9yICh2YXIgaiBpbiBlbnRyaWVzW2ldKQogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgaiArICI6ICIgKyBlbnRyaWVzW2ldW2pdKTsK
ICAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgfTsK
IAogICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9u
KGVycm9yQ29kZSwgbWV0YWRhdGEpCkBAIC05Nyw2ICsxMDksMjEgQEAgdmFyIGluaXRpYWxpemVf
RmlsZVN5c3RlbVRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibWV0YWRhdGE6IChudWxsKSIpOwogICAgICAgICB9
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICB9OworCisgICAgSW5z
cGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JD
b2RlLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBjaGFyc2V0KQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7CisKKyAgICAg
ICAgaWYgKGNvbnRlbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29u
dGVudDogXCIiICsgY29udGVudCArICJcIiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudDogKG51bGwpIik7CisKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImJhc2U2NEVuY29kZWQ6ICIgKyBiYXNlNjRFbmNvZGVkKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNoYXJzZXQ6ICIgKyBjaGFyc2V0KTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgIH07CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZp
bGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzNmZmY1ZjA3Y2NiMjFhOTEwYTllYmViMGJhNWE4ODNi
YjQyNjYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0t
cm9vdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3RzIGdl
dEZpbGVTeXN0ZW1Sb290LgotCi1QQVNTOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvIGlzIGZvdW5kLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9v
dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDJiY2Q2MGE2MjVhMTdlN2Rl
NTkwNzNkMzhlNDQxN2FhZWEyMmQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
Z2V0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+PG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciByZXF1
ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5j
dGlvbiBzdGVwMSgpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogQWRkIEFQSSB0byBkZWxldGUg
YSBGaWxlU3lzdGVtIGNvbXBsZXRlbHkgYW5kIHRlc3QgZ2V0RmlsZVN5c3RlbVJvb3QgZm9yCi0g
ICAgICAgIC8vIHVuaW5pdGlhbGl6ZWQgRmlsZVN5c3RlbS4KLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVGaWxlKCIvaG9nZSIsIHN0ZXAyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVw
MigpCi0gICAgewotICAgICAgICByZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qo
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJ0ZW1wb3JhcnkiLCBzdGVwMyk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gc3RlcDMoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgIHsKLSAg
ICAgICAgaWYgKGVycm9yQ29kZSA9PT0gMCAmJiBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlBBU1M6ICIgKyBiYWNrZW5kUm9vdEVudHJ5LnVy
bCArICIgaXMgZm91bmQuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJGQUlMOiBlcnJvckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKLQotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gc3RlcDQoZXJyb3JDb2RlLCBmaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgotPHA+VGVzdHMg
Z2V0RmlsZVN5c3RlbVJvb3QuPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzc3ZmJmYzE2MjdmZTNmOTY4
OTAyNTJiZmM5NmQ5YWQ2ZTk2NjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
Z2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LVRlc3RzIGdldE1ldGFkYXRhLgotCi1lcnJvckNvZGU6IDAKLW1ldGFkYXRhOgotICBtb2RpZmlj
YXRpb25UaW1lOiAoZXhpc3RzKQotICBzaXplOiA0Ci1lcnJvckNvZGU6IDAKLW1ldGFkYXRhOgot
ICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQotICBzaXplOiAwCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRh
ZGF0YS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmE2NmU5YzIwODMyYTdj
MzU0OTcxNTFkMTQwZTk0YzY0YTc3MjkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZ2V0LW1ldGFkYXRhLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD48bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsIHJ1blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGZpbGVTeXN0
ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyKCk7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAg
ICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmls
ZSgiL2hvZ2UiLCAiZnVnYSIsIHN0ZXAyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigp
Ci0gICAgewotICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRh
KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHN0ZXAz
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMyhlcnJvckNvZGUsIG1ldGFkYXRhKQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9y
Q29kZSwgbWV0YWRhdGEpOwotICAgICAgICBzdGVwNCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIv
cGl5byIsIHN0ZXA1KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNSgpCi0gICAgewotICAg
ICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvcGl5byIsIHN0ZXA2KTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBzdGVwNihlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRh
dGEpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNyk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gc3RlcDcoZXJyb3JDb2RlLCBmaWxlU3lzdGVtKQotICAgIHsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0
PgotPHA+VGVzdHMgZ2V0TWV0YWRhdGEuPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0
b3J5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEwYzczNTky
ODQ1Mjk4ZWI5Njg5ZTNkNGY1ZTFjYjE2ZjNhOWFjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDE3ICswLDAgQEAKLVRlc3RzIHJlYWREaXJlY3RvcnkuCi0KLWVycm9yQ29kZTogMAotZW50cmll
czoKLSAgMDoKLSAgICB1cmw6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeS9ob2dlL3BpeW8uaHRtbAotICAgIG5hbWU6IHBpeW8uaHRtbAotICAgIGlzRGlyZWN0b3J5
OiBmYWxzZQotICAgIG1pbWVUeXBlOiB0ZXh0L2h0bWwKLSAgICByZXNvdXJjZVR5cGU6IERvY3Vt
ZW50Ci0gIDE6Ci0gICAgdXJsOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvaG9nZS9mdWdhCi0gICAgbmFtZTogZnVnYQotICAgIGlzRGlyZWN0b3J5OiB0cnVlCi1l
cnJvckNvZGU6IDEKLWVudHJpZXM6IChudWxsKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YWJmZmU4YWNiNDkyNmNhYjViZmQ0
NGUyOGRiYjNjYmZhNDIzOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFk
LWRpcmVjdG9yeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+PG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2Fk
ZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciByZXF1ZXN0TWFuYWdl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVw
MSgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2Ui
LCBzdGVwMik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlL2Z1Z2EiLCBzdGVwMyk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gc3RlcDMoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5j
cmVhdGVGaWxlKCIvaG9nZS9waXlvLmh0bWwiLCBzdGVwNCk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gc3RlcDQoKQotICAgIHsKLSAgICAgICAgcmVxdWVzdE1hbmFnZXIucmVxdWVzdERpcmVjdG9y
eUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dl
Iiwgc3RlcDUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA1KGVycm9yQ29kZSwgZW50cmll
cykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJlYWREaXJlY3RvcnlSZXN1bHQo
ZXJyb3JDb2RlLCBlbnRyaWVzKTsKLSAgICAgICAgcmVxdWVzdE1hbmFnZXIucmVxdWVzdERpcmVj
dG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9m
b28iLCBzdGVwNik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDYoZXJyb3JDb2RlLCBlbnRy
aWVzKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJlYWREaXJlY3RvcnlSZXN1bHQoZXJy
b3JDb2RlLCBlbnRyaWVzKTsKLQotICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3Rl
bShzdGVwNyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDcoKQotICAgIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgotPHA+
VGVzdHMgcmVhZERpcmVjdG9yeS48L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYjBiMmFlOWViY2UxNjViOGU0Njc0
MDdjNTY5NjA4NzYyZmQ3MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFk
LWZpbGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1UZXN0cyBy
ZXF1ZXN0RmlsZUNvbnRlbnQuCi0KLWVycm9yQ29kZSA9IDAKLWNvbnRlbnQgPSAiUEFTUyIKLWJh
c2U2NEVuY29kZWQgPSBmYWxzZQotY2hhcnNldCA9IFVURi04Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGRmOGI2MTY1MTc4MjZlODc5N2M0YmEz
ZDYxMGRiOTJlMGJlNmQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1m
aWxlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4v
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVz
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsIHJ1blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIHJl
cXVlc3RNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIo
KTsKLSAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5j
dGlvbiBzdGVwMSgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9y
eSgiL2hvZ2UiLCBzdGVwMik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUoIi9ob2dlL2Z1Z2EudHh0IiwgInBpUEFT
U3lvIiwgc3RlcDMpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICB7Ci0gICAg
ICAgIHJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYS50eHQiLCAyLCA2LCAiVVRGLTgiLCBz
dGVwNCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDQoZXJyb3JDb2RlLCBjb250ZW50LCBi
YXNlNjRFbmNvZGVkLCBjaGFyc2V0KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImVycm9yQ29kZSA9ICIgKyBlcnJvckNvZGUpOwotICAgICAgICBpZiAoY29udGVudCkK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb250ZW50ID0gXCIiICsgY29u
dGVudCArICJcIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiY29udGVudCA9IChudWxsKSIpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJiYXNlNjRFbmNvZGVkID0gIiArIGJhc2U2NEVuY29kZWQpOwotCi0gICAgICAgIGlm
IChjaGFyc2V0KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNoYXJzZXQg
PSAiICsgY2hhcnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJjaGFyc2V0ID0gKG51bGwpIik7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5j
bGVhckZpbGVTeXN0ZW0oc3RlcDUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA1KCkKLSAg
ICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQotfQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3RzIHJlcXVlc3RGaWxlQ29udGVudC48L3A+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRp
cmVjdG9yeS1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTkzNjViMjNhMTY2Yjcw
OTY4YzZhZWVmYTljYzU2OWZmYWIyOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitUZXN0cyByZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudCBjb21tYW5kLgorCitlcnJvckNvZGU6IDAKK2VudHJpZXM6CisgIDA6CisgICAgdXJsOiBm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9waXlvLmh0bWwK
KyAgICBuYW1lOiBwaXlvLmh0bWwKKyAgICBpc0RpcmVjdG9yeTogZmFsc2UKKyAgICBtaW1lVHlw
ZTogdGV4dC9odG1sCisgICAgcmVzb3VyY2VUeXBlOiBEb2N1bWVudAorICAxOgorICAgIHVybDog
ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYQorICAg
IG5hbWU6IGZ1Z2EKKyAgICBpc0RpcmVjdG9yeTogdHJ1ZQorCitlcnJvckNvZGU6IDEKK2VudHJp
ZXM6IChudWxsKQorCitlcnJvckNvZGU6IDIKK2VudHJpZXM6IChudWxsKQorCitBbGwgdGVzdHMg
aGF2ZSBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0OGUyZWM0YTMxMzVlN2I5ODhiNTMxZDU3NDU1NDNmOGVmMjA1
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDY1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2YXIgdGVzdFN0ZXAgPSBbCisg
ICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
cmVhdGVEaXJlY3RvcnkoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisK
KyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UvZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZS9waXlvLmh0bWwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0ZXN0U3RlcC5zaGlm
dCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRl
bnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7CisgICAgICAgICAgICBmaWxlU3lz
dGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0
cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0
UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1w
bGUuY29tL3RlbXBvcmFyeS8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmll
cyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5z
aGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQor
ICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlm
dCgpKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RGly
ZWN0b3J5Q29udGVudCBjb21tYW5kLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxl
LWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2E5OGQ5ZmIyOGRiMDM1ZDgzYzJkODQxZWUzYzNkMzcwOTliMjQ4MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1m
aWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3RzIHJlcXVlc3RG
aWxlQ29udGVudCBjb21tYW5kLgorCitlcnJvckNvZGU6IDAKK2NvbnRlbnQ6ICJQQVNTIgorYmFz
ZTY0RW5jb2RlZDogZmFsc2UKK2NoYXJzZXQ6IFVURi04CisKK2Vycm9yQ29kZTogMTEKK2NvbnRl
bnQ6IChudWxsKQorYmFzZTY0RW5jb2RlZDogdHJ1ZQorY2hhcnNldDogdW5kZWZpbmVkCisKK2Vy
cm9yQ29kZTogMQorY29udGVudDogKG51bGwpCitiYXNlNjRFbmNvZGVkOiB0cnVlCitjaGFyc2V0
OiB1bmRlZmluZWQKKworZXJyb3JDb2RlOiAyCitjb250ZW50OiAobnVsbCkKK2Jhc2U2NEVuY29k
ZWQ6IHVuZGVmaW5lZAorY2hhcnNldDogdW5kZWZpbmVkCisKK0FsbCB0ZXN0cyBoYXZlIGRvbmUu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NzQxMjEyNDk5ZWNlOGVhNGI5ZGRhN2E3NjZhYjI3NTg5ZDU0OTYzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZp
bGUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50
TG9hZGVkIiwgcnVuVGVzdCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgZmlsZVN5c3Rl
bVJlcXVlc3RNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIoKTsKKworICAgIHZhciB0ZXN0U3RlcCA9IFsKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZS9mdWdhLnR4
dCIsICJwaVBBU1N5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyLnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UvZnVnYS50eHQiLCAyLCA2LCAiVVRGLTgiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGJh
c2U2NEVuY29kZWQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGJhc2U2
NEVuY29kZWQsIGNoYXJzZXQpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2Vy
LnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5L2hvZ2UiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkp
OworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgYmFz
ZTY0RW5jb2RlZCwgY2hhcnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgYmFzZTY0
RW5jb2RlZCwgY2hhcnNldCk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIu
cmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvZm9vIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGJhc2U2
NEVuY29kZWQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGJhc2U2NEVu
Y29kZWQsIGNoYXJzZXQpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJl
cXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5
L2Zvby50eHQiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgYmFzZTY0
RW5jb2RlZCwgY2hhcnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgYmFzZTY0RW5j
b2RlZCwgY2hhcnNldCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3Rl
bSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMg
aGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
KyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0
ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0
cyByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVl
c3QtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk0NTAzNDg3MTY5ZTU4NTFjZTk1N2RkMTg4MWViODRhNmI1NDVmZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CitUZXN0cyByZXF1ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFuZC4KKworZXJyb3JDb2RlOiAwCiti
YWNrZW5kUm9vdEVudHJ5LnVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5LworCitlcnJvckNvZGU6IDIKK2JhY2tlbmRSb290RW50cnk6IChudWxsKQorCitlcnJv
ckNvZGU6IDIKK2JhY2tlbmRSb290RW50cnk6IChudWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25l
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjMyYTdjODgxYzdlMDY2NmQ0MjA4YzM2MGI1MTY2ODY0YTJlMjJkNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVx
dWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0t
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
RE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFy
IGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9u
KCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBBUEkgdG8gZGVsZXRlIGEg
RmlsZVN5c3RlbSBjb21wbGV0ZWx5IGFuZCB0ZXN0IGdldEZpbGVTeXN0ZW1Sb290IGZvcgorICAg
ICAgICAgICAgLy8gdW5pbml0aWFsaXplZCBGaWxlU3lzdGVtLgorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9
LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZVN5c3Rl
bVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAgICAgICAgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVy
cm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAi
Zml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUs
IGJhY2tlbmRSb290RW50cnkpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2Vy
LnJlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovL2V4YW1wbGUuY29tIiwgInRlbXBvcmFyeSIs
IHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9y
Q29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0
U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBk
b25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAg
ICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3Rl
cC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1
ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFuZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3Qt
bWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDg2
YjI1NDk3MTJjYzMwMmIzYmQ0NzRhN2U1ZTlmODk3ZjdjZmIwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFk
YXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0cyByZXF1ZXN0TWV0YWRhdGEg
Y29tbWFuZC4KKworZXJyb3JDb2RlOiAwCittZXRhZGF0YToKKyAgbW9kaWZpY2F0aW9uVGltZTog
KGV4aXN0cykKKyAgc2l6ZTogNAorCitlcnJvckNvZGU6IDAKK21ldGFkYXRhOgorICBtb2RpZmlj
YXRpb25UaW1lOiAoZXhpc3RzKQorICBzaXplOiAwCisKK2Vycm9yQ29kZTogMQorbWV0YWRhdGE6
IChudWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRh
ZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNzQwNzgxYjYyNWEyYWRlNThhNzI3ZTg4NjE0MmY4MDMw
Nzk4ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2Ny
aXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZp
bGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAg
IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZp
bGUoIi9ob2dlIiwgImZ1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlci5yZXF1ZXN0TWV0YWRhdGEoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAw
L3RlbXBvcmFyeS9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAg
ICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRh
dGEpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9waXlvIiwg
dGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFk
YXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvcGl5byIsIHRl
c3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29k
ZSwgbWV0YWRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1l
dGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICAgICAgICAgIGZp
bGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRhdGEoImZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgICAgICB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJy
b3JDb2RlLCBtZXRhZGF0YSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIu
cmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3Jhcnkv
YmFyIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24o
ZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmls
ZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwg
dGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5
c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151600</attachid>
            <date>2012-07-10 22:36:22 -0700</date>
            <delta_ts>2012-07-10 22:45:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90592-20120711143621.patch</filename>
            <type>text/plain</type>
            <size>54686</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE0MmVhNjk4MWRmODg0
M2RiODkwMDMwOTYzYTFkY2FiZmVhMThlNy4uMzBlYWZkMjA3ZDIzODcwM2YyOTMyMmM3YWFjYWUw
YjI5OTQyZjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA3LTEwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
bGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZSBp
biBJbnNwZWN0b3IgYXMgZm9sbG93czoKKyAgICAgICAgLSBDbGVhbiB1cCBsYXlvdXQgdGVzdHMg
YW5kIGFkZCB0ZXN0IGNhc2UgZm9yIGVycm9yIGNhc2UsCisgICAgICAgIC0gRml4IGVycm9yIGhh
bmRsaW5nIG9uIHJlcXVlc3QsCisgICAgICAgIC0gcy9HZXRGaWxlU3lzdGVtUm9vdFRhc2svRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWREaXJlY3RvcnlUYXNrL0RpcmVj
dG9yeUNvbnRlbnRSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWRGaWxlVGFzay9GaWxlQ29udGVu
dFJlcXVlc3QvZworCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QpOiBB
ZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KTogQWRkIGVhcmx5IGVycm9yIGhh
bmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1
ZXN0TWV0YWRhdGEpOiBBZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudCk6IEFkZCBlYXJs
eSBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50Lmg6IFJlbW92ZSB1bnVzZWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBhbmQgdW51c2VkIGhl
YWRlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
LnJlcXVlc3RGaWxlU3lzdGVtUm9vdC5yZXF1ZXN0QWNjZXB0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEZpbGVTeXN0
ZW1Sb290KTogQWRkIGVhcmx5IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdERpcmVjdG9yeUNvbnRl
bnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3REaXJlY3RvcnlDb250ZW50KTogQWRkIGVhcmx5
IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdE1ldGFkYXRhLnJlcXVlc3RBY2NlcHRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0TWV0YWRhdGEpOiBBZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRl
bnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6IEFkZCBlYXJseSBlcnJv
ciBoYW5kbGluZy4KKwogMjAxMi0wNy0xMCAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIElucHV0IGVsZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2
ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA4ODE0MTg0NjZmNTFjMWZk
NTM1ODU2MDNiM2VkNGU3NWQ0NzkwOWFmLi45MjhmMmZlYmRjZDU0MzFlMTAxZDlkNGZlN2U4ZjU2
Mjk1N2E3ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkRpcmVj
dG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRW50cmllc0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnkuaCIKICNpbmNsdWRlICJFbnRyeUFycmF5LmgiCiAj
aW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKQEAg
LTE0MSwxMiArMTQwLDEyIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1jbGFzcyBHZXRGaWxlU3lz
dGVtUm9vdFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRGaWxlU3lzdGVtUm9vdFRhc2spOworY2xhc3Mg
RmlsZVN5c3RlbVJvb3RSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbVJvb3RS
ZXF1ZXN0PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlsZVN5c3RlbVJvb3RSZXF1ZXN0
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlU3lzdGVtUm9vdFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+
IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldEZpbGVTeXN0ZW1Sb290VGFzayhm
cm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElk
LCB0eXBlKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CkBAIC0xNjMsNTcgKzE2Miw1MSBAQCBwcml2YXRlOgogICAgICAgICBtX2Zyb250ZW5kUHJv
dmlkZXIgPSAwOwogICAgIH0KIAotICAgIEdldEZpbGVTeXN0ZW1Sb290VGFzayhQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQogICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVy
KQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3R5cGUodHlw
ZSkgeyB9CiAKICAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVy
OwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV90eXBlOworICAgIEZpbGVTeXN0
ZW1UeXBlIG1fdHlwZTsKIH07CiAKLWJvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRIaXRF
cnJvcihGaWxlRXJyb3IqIGVycm9yKQorYm9vbCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEhp
dEVycm9yKEZpbGVFcnJvciogZXJyb3IpCiB7CiAgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2Rl
KCksIDApOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdldEZpbGVTeXN0ZW1Sb290VGFz
azo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
K3ZvaWQgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0g
ICAgaWYgKG1fdHlwZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgp
Ci0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAgZWxzZSBpZiAo
bV90eXBlID09IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4KQotICAgICAg
ICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OlNZTlRBWF9FUlIsIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxi
YWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0Rmls
ZVN5c3RlbVJvb3RUYXNrOjpkaWRHZXRFbnRyeSk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+
OjpjcmVhdGUodGhpcywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkSGl0RXJyb3IpOwotICAg
IE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2
ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgIi8iKTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxi
YWNrPjo6Y3JlYXRlKHRoaXMsICZGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsK
KyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRmlsZVN5c3RlbVJvb3RS
ZXF1ZXN0OjpkaWRIaXRFcnJvcik7CisgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZp
bGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX3R5cGUsICIv
Iik7CiAKLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lz
dGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVs
ZWFzZSgpKTsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxl
U3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNr
cy5yZWxlYXNlKCkpOwogfQogCi1ib29sIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkR2V0RW50
cnkoRW50cnkqIGVudHJ5KQorYm9vbCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEdldEVudHJ5
KEVudHJ5KiBlbnRyeSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVu
dHJ5PiByZXN1bHQoVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKS5zZXRV
cmwoZW50cnktPnRvVVJMKCkpLnNldE5hbWUoIi8iKS5zZXRJc0RpcmVjdG9yeSh0cnVlKSk7Cisg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gcmVzdWx0ID0KKyAgICAg
ICAgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAg
LnNldFVybChlbnRyeS0+dG9VUkwoKSkKKyAgICAgICAgICAgIC5zZXROYW1lKCIvIikKKyAgICAg
ICAgICAgIC5zZXRJc0RpcmVjdG9yeSh0cnVlKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nh
c3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1jbGFzcyBSZWFkRGlyZWN0b3J5VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWREaXJl
Y3RvcnlUYXNrPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZERpcmVjdG9yeVRhc2sp
OworY2xhc3MgRGlyZWN0b3J5Q29udGVudFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGly
ZWN0b3J5VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQ
cm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGlyZWN0b3J5Q29udGVudFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250
ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5
VGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJl
cXVlc3RJZCwgdXJsKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmVhZERpcmVjdG9yeVRhc2so
KQorICAgIHZpcnR1YWwgfkRpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0KCkKICAgICB7CiAgICAgICAg
IHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgfQpAQCAtMjM4LDcg
KzIzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CiAgICAg
fQogCi0gICAgUmVhZERpcmVjdG9yeVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBm
cm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICBE
aXJlY3RvcnlDb250ZW50UmVxdWVzdChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6
IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQogICAgICAgICAsIG1fcmVxdWVz
dElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9
CkBAIC0yNTIsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RGlyZWN0b3J5UmVhZGVy
PiBtX2RpcmVjdG9yeVJlYWRlcjsKIH07CiAKLXZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit2b2lkIERp
cmVjdG9yeUNvbnRlbnRSZXF1ZXN0OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIApAQCAtMjYzLDE0ICsyNTYsMTQgQEAgdm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhp
cywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRHZXRFbnRyeSk7Ci0gICAgUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRIaXRFcnJvcik7Cisg
ICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVu
dFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0
ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBPd25Q
dHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklD
YWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2Nh
bEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBl
LCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgUmVhZERpcmVjdG9y
eVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgRGlyZWN0b3J5Q29udGVudFJl
cXVlc3Q6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0Rp
cmVjdG9yeSgpKSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFU
Q0hfRVJSLCAwKTsKQEAgLTI4MywxOSArMjc2LDE5IEBAIGJvb2wgUmVhZERpcmVjdG9yeVRhc2s6
OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBS
ZWFkRGlyZWN0b3J5VGFzazo6cmVhZERpcmVjdG9yeUVudHJpZXMoKQordm9pZCBEaXJlY3RvcnlD
b250ZW50UmVxdWVzdDo6cmVhZERpcmVjdG9yeUVudHJpZXMoKQogewogICAgIGlmICghbV9kaXJl
Y3RvcnlSZWFkZXItPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAg
ICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNyZWF0ZSh0
aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsKLSAgICBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZh
Y3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRp
ZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNyZWF0ZSh0aGlz
LCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsKKyAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hl
ckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJl
cXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBtX2RpcmVjdG9yeVJlYWRlci0+cmVhZEVudHJpZXMo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotYm9vbCBSZWFkRGlyZWN0b3J5
VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKK2Jvb2wg
RGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJy
YXkqIGVudHJpZXMpCiB7CiAgICAgaWYgKCFlbnRyaWVzLT5sZW5ndGgoKSkgewogICAgICAgICBy
ZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCBtX2VudHJp
ZXMpOwpAQCAtMzA0LDcgKzI5NywxMSBAQCBib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFk
RGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVzKQogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgRW50cnkqIGVu
dHJ5ID0gZW50cmllcy0+aXRlbShpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxl
U3lzdGVtOjpFbnRyeT4gZW50cnlGb3JGcm9udGVuZCA9IFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVt
OjpFbnRyeTo6Y3JlYXRlKCkuc2V0VXJsKGVudHJ5LT50b1VSTCgpKS5zZXROYW1lKGVudHJ5LT5u
YW1lKCkpLnNldElzRGlyZWN0b3J5KGVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKKyAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnlGb3JGcm9udGVuZCA9Cisg
ICAgICAgICAgICBUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk6OmNyZWF0ZSgpCisgICAg
ICAgICAgICAgICAgLnNldFVybChlbnRyeS0+dG9VUkwoKSkKKyAgICAgICAgICAgICAgICAuc2V0
TmFtZShlbnRyeS0+bmFtZSgpKQorICAgICAgICAgICAgICAgIC5zZXRJc0RpcmVjdG9yeShlbnRy
eS0+aXNEaXJlY3RvcnkoKSk7CiAKICAgICAgICAgdXNpbmcgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJl
c291cmNlVHlwZTsKICAgICAgICAgaWYgKCFlbnRyeS0+aXNEaXJlY3RvcnkoKSkgewpAQCAtMzM0
LDE1ICszMzEsMTUgQEAgYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVu
dHJpZXMoRW50cnlBcnJheSogZW50cmllcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3Mg
R2V0TWV0YWRhdGFUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8R2V0TWV0YWRhdGFUYXNrPiB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0TWV0YWRhdGFUYXNrKTsKK2NsYXNzIE1ldGFkYXRh
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFkYXRhUmVxdWVzdD4geworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhUmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3Zp
ZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRh
ZGF0YVRhc2soZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB1cmwpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZXRhZGF0YVJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVz
dElkLCB1cmwpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5HZXRNZXRhZGF0YVRhc2soKQorICAg
IHZpcnR1YWwgfk1ldGFkYXRhUmVxdWVzdCgpCiAgICAgewogICAgICAgICByZXBvcnRSZXN1bHQo
RmlsZUVycm9yOjpBQk9SVF9FUlIsIDApOwogICAgIH0KQEAgLTM2Niw3ICszNjMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldE1ldGFkYXRhVGFzayhQYXNzUmVmUHRyPEZy
b250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgdXJsKQorICAgIE1ldGFkYXRhUmVxdWVzdChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlk
ZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQogICAgICAgICAs
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCkgeyB9CkBAIC0zNzgsNDkgKzM3NSw1MiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Rp
cmVjdG9yeTsKIH07CiAKLXZvaWQgR2V0TWV0YWRhdGFUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQordm9pZCBNZXRhZGF0YVJlcXVlc3Q6
OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7
CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKICAgICBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tG
aWxlU3lzdGVtVVJMKG1fdXJsLCB0eXBlLCBtX3BhdGgpOwogCi0gICAgUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlD
YWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRHZXRFbnRyeSk7Ci0g
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNo
ZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkdldE1ldGFkYXRhVGFzazo6
ZGlkSGl0RXJyb3IpOworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywg
Jk1ldGFkYXRhUmVxdWVzdDo6ZGlkR2V0RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0YVJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKIAogICAgIE93
blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVS
SUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgbV9wYXRoKTsKICAgICBMb2NhbEZpbGVTeXN0ZW06Omxv
Y2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5
cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotYm9vbCBHZXRNZXRhZGF0
YVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgTWV0YWRhdGFSZXF1ZXN0Ojpk
aWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiB7CiAgICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVF
cnJvcjo6QUJPUlRfRVJSLCAwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
UmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8TWV0YWRhdGFDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0YWRhdGFU
YXNrOjpkaWRHZXRNZXRhZGF0YSk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUo
dGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkSGl0RXJyb3IpOworICAgIFJlZlB0cjxNZXRhZGF0
YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PE1l
dGFkYXRhQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFkYXRhUmVxdWVzdDo6ZGlkR2V0TWV0
YWRhdGEpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0
YVJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBlbnRyeS0+Z2V0TWV0YWRhdGEoc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKICAgICBtX2lzRGlyZWN0b3J5ID0gZW50cnktPmlzRGly
ZWN0b3J5KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR2V0TWV0YWRhdGFUYXNrOjpk
aWRHZXRNZXRhZGF0YShNZXRhZGF0YSogbWV0YWRhdGEpCitib29sIE1ldGFkYXRhUmVxdWVzdDo6
ZGlkR2V0TWV0YWRhdGEoTWV0YWRhdGEqIG1ldGFkYXRhKQogewogICAgIHVzaW5nIFR5cGVCdWls
ZGVyOjpGaWxlU3lzdGVtOjpNZXRhZGF0YTsKLSAgICBSZWZQdHI8TWV0YWRhdGE+IHJlc3VsdCA9
IE1ldGFkYXRhOjpjcmVhdGUoKS5zZXRNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLT5tb2RpZmlj
YXRpb25UaW1lKCkpLnNldFNpemUobWV0YWRhdGEtPnNpemUoKSk7CisgICAgUmVmUHRyPE1ldGFk
YXRhPiByZXN1bHQgPQorICAgICAgICBNZXRhZGF0YTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5z
ZXRNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lKCkpCisgICAgICAg
ICAgICAuc2V0U2l6ZShtZXRhZGF0YS0+c2l6ZSgpKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGlj
X2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1jbGFzcyBSZWFkRmlsZVRhc2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZEZpbGVUYXNrKTsKK2NsYXNzIEZpbGVDb250ZW50UmVx
dWVzdCA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShG
aWxlQ29udGVudFJlcXVlc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRG
aWxlVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92
aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4dCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0
cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBlbmQsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVhZEZpbGVUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsLCBy
ZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRmlsZUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJs
LCByZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+UmVhZEZpbGVUYXNrKCkKKyAgICB2aXJ0dWFsIH5GaWxlQ29udGVudFJlcXVlc3QoKQogICAg
IHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwLCAwKTsKICAg
ICB9CkBAIC00NjAsNyArNDYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9udGVuZFByb3Zp
ZGVyID0gMDsKICAgICB9CiAKLSAgICBSZWFkRmlsZVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFBy
b3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVy
bCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCkKKyAgICBGaWxlQ29udGVudFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlz
dGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQogICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRl
cihmcm9udGVuZFByb3ZpZGVyKQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKQEAg
LTQ4Miw3ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWxlUmVhZGVyPiBtX3JlYWRl
cjsKIH07CiAKLXZvaWQgUmVhZEZpbGVUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQordm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC00OTMsMTQgKzQ5MywxNCBAQCB2
b2lkIFJlYWRGaWxlVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVu
dHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0RW50cnkpOwot
ICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRj
aGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRp
ZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0g
Q2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZG
aWxlQ29udGVudFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAg
T3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZl
VVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBwYXRoKTsKIAogICAgIExvY2FsRmlsZVN5c3RlbTo6
bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
dHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29sIFJlYWRGaWxl
VGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBGaWxlQ29udGVudFJlcXVlc3Q6
OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoZW50cnktPmlzRGlyZWN0b3J5
KCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIs
IDAsIDApOwpAQCAtNTEyLDggKzUxMiw4IEBAIGJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRy
eShFbnRyeSogZW50cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJlZlB0
cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rv
cnk8RmlsZUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUp
OwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNw
YXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6
OmRpZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEZpbGVDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAm
RmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRHZXRGaWxlKTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAg
c3RhdGljX2Nhc3Q8RmlsZUVudHJ5Kj4oZW50cnkpLT5maWxlKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7CiAKICAgICBtX3JlYWRlciA9IEZpbGVSZWFkZXI6OmNyZWF0ZShlbnRyeS0+
ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtNTIyLDcgKzUyMiw3
IEBAIGJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRGaWxlKEZpbGUqIGZpbGUp
Citib29sIEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkR2V0RmlsZShGaWxlKiBmaWxlKQogewogICAg
IFJlZlB0cjxCbG9iPiBibG9iID0gZmlsZS0+c2xpY2UobV9zdGFydCwgbV9lbmQpOwogICAgIG1f
cmVhZGVyLT5zZXRPbmxvYWQodGhpcyk7CkBAIC01MzMsNyArNTMzLDcgQEAgYm9vbCBSZWFkRmls
ZVRhc2s6OmRpZEdldEZpbGUoRmlsZSogZmlsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBSZWFkRmlsZVRhc2s6OmRpZFJlYWQoKQordm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZFJl
YWQoKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gbV9yZWFkZXItPmFycmF5
QnVmZmVyUmVzdWx0KCk7CiAKQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVk
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVt
Um9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGludCogcmVxdWVzdElkKQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGludCogcmVxdWVzdElkKQogewogICAg
IGlmICghbV9lbmFibGVkIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpIHsKICAgICAgICAgKmVycm9y
ID0gIkZpbGVTeXN0ZW0gYWdlbnQgaXMgbm90IGVuYWJsZWQiOwpAQCAtNTg5LDExICs1ODksMjQg
QEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFMKICAgICB9CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpKTsKKyAgICBpZiAoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKKyAgICAgICAgKmVycm9yID0gIk5vIGZyYW1lIGlzIGF2
YWlsYWJsZSBmb3IgdGhlIHJlcXVlc3QiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
RmlsZVN5c3RlbVR5cGUgdHlwZTsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBET01GaWxlU3lzdGVt
QmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgpCisgICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlw
ZVBlcnNpc3RlbnQ7CisgICAgZWxzZSBpZiAodHlwZVN0cmluZyA9PSBET01GaWxlU3lzdGVtQmFz
ZTo6dGVtcG9yYXJ5UGF0aFByZWZpeCkKKyAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBlVGVt
cG9yYXJ5OworICAgIGVsc2UgeworICAgICAgICAqZXJyb3IgPSAiSW52YWxpZCBGaWxlU3lzdGVt
IHR5cGUiOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgKnJlcXVlc3RJZCA9IG1fbmV4
dFJlcXVlc3RJZCsrOwotICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpKSkKLSAgICAgICAgR2V0RmlsZVN5
c3RlbVJvb3RUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB0eXBl
KS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Zy
b250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQoKnJlcXVl
c3RJZCwgc3RhdGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDApOworICAgIEZp
bGVTeXN0ZW1Sb290UmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJ
ZCwgdHlwZSktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpCkBAIC02MDQsMTIgKzYx
NywxNCBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdERpcmVjdG9yeUNv
bnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdAogICAgIH0KICAgICBBU1NFUlQobV9mcm9u
dGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKIAotICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1
ZXN0SWQrKzsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpIHsKKyAgICAgICAgKmVycm9yID0gIk5vIGZyYW1lIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHJl
cXVlc3QiOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVybCkuZ2V0KCkpKQot
ICAgICAgICBSZWFkRGlyZWN0b3J5VGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJl
cXVlc3RJZCwgdXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQot
ICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmRpcmVjdG9yeUNvbnRlbnRS
ZWNlaXZlZCgqcmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJS
KSwgMCk7CisgICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVlc3RJZCsrOworICAgIERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0OjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB1
cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0
IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKQEAgLTYyMCwxMiArNjM1LDE0IEBAIHZvaWQg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqIGVy
cm9yLCBjb25zdCBTdHJpbmcmCiAgICAgfQogICAgIEFTU0VSVChtX2Zyb250ZW5kUHJvdmlkZXIt
PmZyb250ZW5kKCkpOwogCi0gICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVlc3RJZCsrOworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHVybCkuZ2V0KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeworICAgICAg
ICAqZXJyb3IgPSAiTm8gZnJhbWUgaXMgYXZhaWxhYmxlIGZvciB0aGUgcmVxdWVzdCI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCi0gICAgICAgIEdldE1l
dGFkYXRhVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJsKS0+
c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPm1ldGFkYXRhUmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3Rh
dGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDApOworICAgICpyZXF1ZXN0SWQg
PSBtX25leHRSZXF1ZXN0SWQrKzsKKyAgICBNZXRhZGF0YVJlcXVlc3Q6OmNyZWF0ZShtX2Zyb250
ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVDb250
ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4
dCwgY29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBlbmQsIGNvbnN0IFN0cmluZyogY2hhcnNl
dCwgaW50KiByZXF1ZXN0SWQpCkBAIC02MzYsMTIgKzY1MywxNyBAQCB2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaQogICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgp
KTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKHVybCkuZ2V0KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
eworICAgICAgICAqZXJyb3IgPSAiTm8gZnJhbWUgaXMgYXZhaWxhYmxlIGZvciB0aGUgcmVxdWVz
dCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVx
dWVzdElkKys7CiAKLSAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCi0gICAgICAgIFJlYWRGaWxlVGFzazo6
Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJsLCByZWFkQXNUZXh0LCBz
dGFydCA/ICpzdGFydCA6IDAsIGVuZCA/ICplbmQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcg
bG9uZz46Om1heCgpLCBjaGFyc2V0ID8gKmNoYXJzZXQgOiAiIiktPnN0YXJ0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwotICAgIGVsc2UKLSAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9u
dGVuZCgpLT5maWxlQ29udGVudFJlY2VpdmVkKCpyZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4o
RmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwLCAwKTsKKyAgICBsb25nIGxvbmcgc3RhcnRQb3NpdGlv
biA9IHN0YXJ0ID8gKnN0YXJ0IDogMDsKKyAgICBsb25nIGxvbmcgZW5kUG9zaXRpb24gPSBlbmQg
PyAqZW5kIDogc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKTsKKyAgICBGaWxl
Q29udGVudFJlcXVlc3Q6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVy
bCwgcmVhZEFzVGV4dCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNoYXJzZXQgPyAqY2hh
cnNldCA6ICIiKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmgKaW5kZXggNTZhMjkyNjAyODEwYTY0MWMwMmNiMDJmOTUzNzNmNmMzZjFmZjFm
NS4uZWU3NDVjZWQ1MDgyMDJlNTU0MTFlN2I2ZTYxZTNmODQ3MjNjMjVkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAt
MzQsMTggKzM0LDE0IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lT
VEVNKQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01GaWxl
U3lzdGVtOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQ7Ci1jbGFzcyBJbnNwZWN0b3JTdGF0ZTsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKQEAg
LTU5LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCogcmVx
dWVzdElkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW1Sb290
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZVN0
cmluZywgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJl
cXVlc3RJZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RNZXRhZGF0YShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGNvbnN0IGludCogc3RhcnQsIGNvbnN0IGludCog
ZW5kLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1v
ZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9k
ZWwuanMKaW5kZXggZmMxNzE2NjY2NDFkOWM0MTAwYmUxYjNmZTEwODQxMTQ2OWNlNWI3YS4uOTY0
MDJiZDliOGM5ZmFlZDMzZDNjZmNkNmRmZGVmZGE1MDM0ZWYyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAgLTQ2
OCw3ICs0NjgsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IHR5cGUKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgRmls
ZVN5c3RlbUFnZW50LkVudHJ5KT19IGNhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihu
dW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5FbnRyeT0pPX0gY2FsbGJhY2sKICAgICAgKi8KICAgICBy
ZXF1ZXN0RmlsZVN5c3RlbVJvb3Q6IGZ1bmN0aW9uKG9yaWdpbiwgdHlwZSwgY2FsbGJhY2spCiAg
ICAgewpAQCAtNDc3LDcgKzQ3Nyw5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChl
cnJvciwgcmVxdWVzdElkKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWVycm9yKQorICAg
ICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5T
RUNVUklUWV9FUlIpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0b3JlW3Jl
cXVlc3RJZF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwogICAgICAgICB9CiAgICAgfSwK
QEAgLTUwNyw3ICs1MDksOSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiByZXF1ZXN0QWNjZXB0ZWQoZXJyb3Is
IHJlcXVlc3RJZCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAgICAgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhGaWxlRXJyb3IuU0VDVVJJ
VFlfRVJSKTsKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzdG9yZVtyZXF1ZXN0
SWRdID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fTsKICAgICAgICAgfQogICAgIH0sCkBAIC01
MzcsNyArNTQxLDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVycm9yLCByZXF1
ZXN0SWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBp
ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VS
Uik7CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9
IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIH0KICAgICB9LApAQCAtNTY2LDcg
KzU3Miw5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVxdWVzdElk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5TRUNVUklUWV9FUlIpOwor
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0b3JlW3JlcXVlc3RJZF0gPSBjYWxs
YmFjayB8fCBmdW5jdGlvbigpIHt9OwogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1Yjc3YWI3
ZWRhOTJiYzVkMjM5NWQ0YmMwZGI2MDc2YjQ0ZDNhNTkyLi41ZmQ0M2VhNzg2MDViN2ZlMjFkNmRl
MmIxYmUyOGRlYzcxZDgwZTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDctMTAgIFRh
aWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IENsZWFuIHVwIEZpbGVTeXN0ZW0gcmVsYXRlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDU5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIEZpbGVTeXN0ZW0gcmVsYXRlZCBjb2Rl
IGluIEluc3BlY3RvciBhcyBmb2xsb3dzOgorICAgICAgICAtIENsZWFuIHVwIGxheW91dCB0ZXN0
cyBhbmQgYWRkIHRlc3QgY2FzZSBmb3IgZXJyb3IgY2FzZSwKKyAgICAgICAgLSBGaXggZXJyb3Ig
aGFuZGxpbmcgb24gcmVxdWVzdCwKKyAgICAgICAgLSBzL0dldEZpbGVTeXN0ZW1Sb290VGFzay9G
aWxlU3lzdGVtUm9vdFJlcXVlc3QvZworICAgICAgICAtIHMvUmVhZERpcmVjdG9yeVRhc2svRGly
ZWN0b3J5Q29udGVudFJlcXVlc3QvZworICAgICAgICAtIHMvUmVhZEZpbGVUYXNrL0ZpbGVDb250
ZW50UmVxdWVzdC9nCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L2ZpbGVzeXN0ZW0tdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3Qu
SW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAg
KGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVjdG9yVGVzdC5kdW1wRGlyZWN0b3J5Q29u
dGVudFJlcXVlc3RSZXN1bHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdC5J
bnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQpOgorICAgICAgICAoaW5pdGlh
bGl6ZV9GaWxlU3lzdGVtVGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RS
ZXN1bHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCk6CisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnktZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1sLiBDaGFuZ2VkIHRlc3Qgc3RlcHMgdG8gdW5uYW1lZCBm
dW5jdGlvbiBhcnJheS4gQWRkIGZhaWxjYXNlIHRlc3QuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC1leHBlY3RlZC50eHQ6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
YWQtZmlsZS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbC4gQ2hhbmdl
ZCB0ZXN0IHN0ZXBzIHRvIHVubmFtZWQgZnVuY3Rpb24gYXJyYXkuIEFkZCBmYWlsY2FzZSB0ZXN0
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxl
c3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtZmlsZXN5c3RlbS1leHBlY3RlZC50eHQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0
ZW0tcm9vdC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9nZXQtZmlsZXN5c3RlbS1yb290Lmh0bWwuIENoYW5nZWQgdGVzdCBzdGVw
cyB0byB1bm5hbWVkIGZ1bmN0aW9uIGFycmF5LiBBZGQgZmFpbGNhc2UgdGVzdC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEtZXhwZWN0
ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEu
aHRtbC4gQ2hhbmdlZCB0ZXN0IHN0ZXBzIHRvIHVubmFtZWQgZnVuY3Rpb24gYXJyYXkuIEFkZCBm
YWlsY2FzZSB0ZXN0LgorCiAyMDEyLTA3LTEwICBLZXZpbiBFbGxpcyAgPGtldmVyc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5wdXQgZWxlbWVudHMgd2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBo
YXZlIGRlZmF1bHQgdG91Y2ggaGFuZGxlcnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCmlu
ZGV4IDRlZDZjZTU4ZmQ3MjQ1MWJiODVjYzUzODFiMjRmNTAwYWY0NmViMWUuLjRhMWE0YzA0ZjUy
N2FmMzMxMWVhOGE2ZmRiOWZiODRiZjNlNWNmNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0
LmpzCkBAIC03MCwxMiArNzAsMjMgQEAgdmFyIGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QgPSBm
dW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsZWFyRmls
ZVN5c3RlbSgiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIp
Iik7CiAgICAgfTsKIAotICAgIEluc3BlY3RvclRlc3QuZHVtcFJlYWREaXJlY3RvcnlSZXN1bHQg
PSBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9v
dEVudHJ5KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29k
ZTogIiArIGVycm9yQ29kZSk7CisgICAgICAgIGlmIChiYWNrZW5kUm9vdEVudHJ5KQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImJhY2tlbmRSb290RW50cnkudXJsOiAiICsg
YmFja2VuZFJvb3RFbnRyeS51cmwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiYmFja2VuZFJvb3RFbnRyeTogKG51bGwpIik7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICB9OworCisgICAgSW5zcGVjdG9yVGVzdC5k
dW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIGVu
dHJpZXMpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2Rl
OiAiICsgZXJyb3JDb2RlKTsKIAogICAgICAgICBpZiAoIWVudHJpZXMpIHsKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlbnRyaWVzOiAobnVsbCkiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC04NSw2ICs5Niw3IEBAIHZhciBpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0g
ZnVuY3Rpb24oKQogICAgICAgICAgIGZvciAodmFyIGogaW4gZW50cmllc1tpXSkKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIGogKyAiOiAiICsgZW50cmllc1tp
XVtqXSk7CiAgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwog
ICAgIH07CiAKICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQgPSBm
dW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQpAQCAtOTcsNiArMTA5LDIwIEBAIHZhciBpbml0
aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFkYXRhOiAobnVsbCkiKTsKICAg
ICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgfTsKKwor
ICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9u
KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOworCisgICAgICAgIGlmIChj
b250ZW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbnRlbnQ6IFwi
IiArIGNvbnRlbnQgKyAiXCIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoImNvbnRlbnQ6IChudWxsKSIpOworCisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJjaGFyc2V0OiAiICsgY2hhcnNldCk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIiKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQt
ZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzczZmZmNWYwN2NjYjIxYTkxMGE5ZWJlYjBiYTVhODgzYmI0MjY2Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0cyBnZXRGaWxlU3lzdGVtUm9vdC4KLQot
UEFTUzogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5LyBpcyBmb3Vu
ZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9nZXQtZmlsZXN5c3RlbS1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzQyYmNkNjBhNjI1YTE3ZTdkZTU5MDczZDM4ZTQ0MTdhYWVhMjJk
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3Qu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVz
dCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVxdWVzdE1hbmFnZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOwotCi0gICAgSW5zcGVjdG9yVGVz
dC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOwotCi0gICAgZnVuY3Rpb24gc3RlcDEoKQotICAgIHsK
LSAgICAgICAgLy8gRklYTUU6IEFkZCBBUEkgdG8gZGVsZXRlIGEgRmlsZVN5c3RlbSBjb21wbGV0
ZWx5IGFuZCB0ZXN0IGdldEZpbGVTeXN0ZW1Sb290IGZvcgotICAgICAgICAvLyB1bmluaXRpYWxp
emVkIEZpbGVTeXN0ZW0uCi0gICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2hvZ2Ui
LCBzdGVwMik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsKLSAgICAgICAg
cmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiLCAidGVtcG9yYXJ5Iiwgc3RlcDMpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXAzKGVy
cm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKLSAgICB7Ci0gICAgICAgIGlmIChlcnJvckNvZGUg
PT09IDAgJiYgYmFja2VuZFJvb3RFbnRyeSkKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJQQVNTOiAiICsgYmFja2VuZFJvb3RFbnRyeS51cmwgKyAiIGlzIGZvdW5kLiIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTDog
ZXJyb3JDb2RlID0gIiArIGVycm9yQ29kZSk7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVh
ckZpbGVTeXN0ZW0oc3RlcDQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA0KGVycm9yQ29k
ZSwgZmlsZVN5c3RlbSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTxwPlRlc3RzIGdldEZpbGVTeXN0ZW1Sb290Ljwv
cD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmM3N2ZiZmMxNjI3ZmUzZjk2ODkwMjUyYmZjOTZkOWFkNmU5NjYw
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1UZXN0cyBnZXRNZXRhZGF0YS4K
LQotZXJyb3JDb2RlOiAwCi1tZXRhZGF0YToKLSAgbW9kaWZpY2F0aW9uVGltZTogKGV4aXN0cykK
LSAgc2l6ZTogNAotZXJyb3JDb2RlOiAwCi1tZXRhZGF0YToKLSAgbW9kaWZpY2F0aW9uVGltZTog
KGV4aXN0cykKLSAgc2l6ZTogMAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjJhNjZlOWMyMDgzMmE3YzM1NDk3MTUxZDE0MGU5NGM2NGE3
NzI5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PG1ldGEgY2hh
cnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsK
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOwotCi0gICAgSW5zcGVj
dG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOwotCi0gICAgZnVuY3Rpb24gc3RlcDEoKQot
ICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUoIi9ob2dlIiwgImZ1Z2EiLCBz
dGVwMik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsKLSAgICAgICAgZmls
ZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCBzdGVwMyk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gc3RlcDMoZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAg
ICAgICAgc3RlcDQoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNCgpCi0gICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL3BpeW8iLCBzdGVwNSk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gc3RlcDUoKQotICAgIHsKLSAgICAgICAgZmlsZVN5c3RlbVJlcXVl
c3RNYW5hZ2VyLnJlcXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5L3BpeW8iLCBzdGVwNik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDYo
ZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1l
dGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDcpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0
ZXA3KGVycm9yQ29kZSwgZmlsZVN5c3RlbSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTxwPlRlc3RzIGdldE1ldGFk
YXRhLjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5OWFhNTYzMzM2OTJjMTQxNzhmNDg2ODEzY2U4
NTY2OWUxZjQ3MTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVj
dG9yeS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UZXN0cyBy
ZWFkRGlyZWN0b3J5LgotCi1lcnJvckNvZGU6IDAKLWVudHJpZXM6Ci0gIDA6Ci0gICAgdXJsOiBm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9waXlvLmh0bWwK
LSAgICBuYW1lOiBwaXlvLmh0bWwKLSAgICBpc0RpcmVjdG9yeTogZmFsc2UKLSAgICBpc1RleHRG
aWxlOiB0cnVlCi0gICAgbWltZVR5cGU6IHRleHQvaHRtbAotICAgIHJlc291cmNlVHlwZTogRG9j
dW1lbnQKLSAgMToKLSAgICB1cmw6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9ob2dlL2Z1Z2EKLSAgICBuYW1lOiBmdWdhCi0gICAgaXNEaXJlY3Rvcnk6IHRydWUK
LWVycm9yQ29kZTogMQotZW50cmllczogKG51bGwpCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnkuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3Rvcnku
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRhYmZmZThhY2I0OTI2Y2FiNWJm
ZDQ0ZTI4ZGJiM2NiZmE0MjM5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
YWQtZGlyZWN0b3J5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD48bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExv
YWRlZCIsIHJ1blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIHJlcXVlc3RNYW5h
Z2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIoKTsKLQotICAg
IEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHN0ZXAxKTsKLQotICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9n
ZSIsIHN0ZXAyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UvZnVnYSIsIHN0ZXAzKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMygpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUZpbGUoIi9ob2dlL3BpeW8uaHRtbCIsIHN0ZXA0KTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBzdGVwNCgpCi0gICAgewotICAgICAgICByZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RGlyZWN0
b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hv
Z2UiLCBzdGVwNSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDUoZXJyb3JDb2RlLCBlbnRy
aWVzKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVjdG9yeVJlc3Vs
dChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICByZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RGly
ZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5
L2ZvbyIsIHN0ZXA2KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNihlcnJvckNvZGUsIGVu
dHJpZXMpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVjdG9yeVJlc3VsdChl
cnJvckNvZGUsIGVudHJpZXMpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lz
dGVtKHN0ZXA3KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNygpCi0gICAgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci08
cD5UZXN0cyByZWFkRGlyZWN0b3J5LjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMzMGJiZTJlYzg3YTMxZDZhOTNm
MDQwNDFhMWEwZWU2OTU3MzE2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
YWQtZmlsZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRlc3Rz
IHJlcXVlc3RGaWxlQ29udGVudC4KLQotZXJyb3JDb2RlID0gMAotY29udGVudCA9ICJQQVNTIgot
Y2hhcnNldCA9IFVURi04Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMDYxMmY0MzdkMjJjN2QwNWJkMmZlMmIyODE1M2YzMWExZmYzYTBjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw1NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0
YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRl
c3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIHJlcXVlc3RNYW5hZ2VyID0gbmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIoKTsKLSAgICBJbnNwZWN0b3JUZXN0
LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgewot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCBzdGVwMik7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDIoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC53cml0ZUZpbGUoIi9ob2dlL2Z1Z2EudHh0IiwgInBpUEFTU3lvIiwgc3RlcDMpOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICB7Ci0gICAgICAgIHJlcXVlc3RNYW5hZ2VyLnJl
cXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5L2hvZ2UvZnVnYS50eHQiLCB0cnVlLCAyLCA2LCAiVVRGLTgiLCBzdGVwNCk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gc3RlcDQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAgIHsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZSA9ICIgKyBlcnJvckNv
ZGUpOwotICAgICAgICBpZiAoY29udGVudCkKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJjb250ZW50ID0gXCIiICsgY29udGVudCArICJcIiIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudCA9IChudWxsKSIpOwot
Ci0gICAgICAgIGlmIChjaGFyc2V0KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImNoYXJzZXQgPSAiICsgY2hhcnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjaGFyc2V0ID0gKG51bGwpIik7Ci0KLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHN0ZXA1KCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0g
ICAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3RzIHJlcXVlc3RGaWxl
Q29udGVudC48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTUy
YjMzM2FlMDAwZWQ2YzUwMWZhMjQ0MTM5ZWUxOTA0YWNlZjJmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVj
dG9yeS1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0cyByZXF1ZXN0
RGlyZWN0b3J5Q29udGVudCBjb21tYW5kLgorCitlcnJvckNvZGU6IDAKK2VudHJpZXM6CisgIDA6
CisgICAgdXJsOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9n
ZS9waXlvLmh0bWwKKyAgICBuYW1lOiBwaXlvLmh0bWwKKyAgICBpc0RpcmVjdG9yeTogZmFsc2UK
KyAgICBpc1RleHRGaWxlOiB0cnVlCisgICAgbWltZVR5cGU6IHRleHQvaHRtbAorICAgIHJlc291
cmNlVHlwZTogRG9jdW1lbnQKKyAgMToKKyAgICB1cmw6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EKKyAgICBuYW1lOiBmdWdhCisgICAgaXNEaXJl
Y3Rvcnk6IHRydWUKKworZXJyb3JDb2RlOiAxCitlbnRyaWVzOiAobnVsbCkKKworZXJyb3JDb2Rl
OiAyCitlbnRyaWVzOiAobnVsbCkKKworQWxsIHRlc3RzIGhhdmUgZG9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRp
cmVjdG9yeS1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDhl
MmVjNGEzMTM1ZTdiOTg4YjUzMWQ1NzQ1NTQzZjhlZjIwNTc2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVj
dG9yeS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRl
bnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBmaWxlU3lz
dGVtUmVxdWVzdE1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFu
YWdlcigpOworCisgICAgdmFyIHRlc3RTdGVwID0gWworICAgICAgICBmdW5jdGlvbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZSIs
IHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dl
L2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2hv
Z2UvcGl5by5odG1sIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4
MDAwL3RlbXBvcmFyeS9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQorICAgICAgICB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNv
ZGUsIGVudHJpZXMpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVl
c3REaXJlY3RvcnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvZm9vIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJp
ZXMpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3REaXJlY3Rv
cnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvIiwgdGVz
dFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBlbnRyaWVzKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250
ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJpZXMpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisK
KyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICBdOworCisgICAgSW5zcGVjdG9y
VGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGVzdHMgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQgY29tbWFuZC48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxl
LWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NzAyNmIyNDg2M2U4MGVlZmM4MTBj
ZTVlNTI0MWM2NmFiZjEzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACitUZXN0cyByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC4KKwor
ZXJyb3JDb2RlOiAwCitjb250ZW50OiAiUEFTUyIKK2NoYXJzZXQ6IFVURi04CisKK2Vycm9yQ29k
ZTogMTEKK2NvbnRlbnQ6IChudWxsKQorY2hhcnNldDogdW5kZWZpbmVkCisKK2Vycm9yQ29kZTog
MQorY29udGVudDogKG51bGwpCitjaGFyc2V0OiB1bmRlZmluZWQKKworZXJyb3JDb2RlOiAyCitj
b250ZW50OiAobnVsbCkKK2NoYXJzZXQ6IHVuZGVmaW5lZAorCitBbGwgdGVzdHMgaGF2ZSBkb25l
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTZlN2NlYTJjZGM2MDI0M2NlMDgzZWYzZmU0MjE2ZTA4YjkyY2Q3NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1m
aWxlLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0
ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyKCk7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTt9LCAxMDAwKTsKKyAgICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9o
b2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24o
KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2Uv
ZnVnYS50eHQiLCAicGlQQVNTeW8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1
ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVz
dFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBjb250ZW50LCBjaGFyc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0
KTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZUNvbnRl
bnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgdHJ1
ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJl
c3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOworICAgICAgICAgICAgZmlsZVN5c3Rl
bVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAi
IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJy
b3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBj
aGFyc2V0KTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0Rmls
ZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3RlbXBvcmFyeS9mb28udHh0
IiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVx
dWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICBdOworCisgICAgSW5zcGVj
dG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgcmVxdWVzdEZpbGVDb250ZW50IGNvbW1hbmQuPC9w
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmls
ZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDUwMzQ4NzE2OWU1ODUxY2U5
NTdkZDE4ODFlYjg0YTZiNTQ1ZmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgcmVxdWVzdEZpbGVTeXN0ZW1Sb290IGNv
bW1hbmQuCisKK2Vycm9yQ29kZTogMAorYmFja2VuZFJvb3RFbnRyeS51cmw6IGZpbGVzeXN0ZW06
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS8KKworZXJyb3JDb2RlOiAyCitiYWNrZW5k
Um9vdEVudHJ5OiAobnVsbCkKKworZXJyb3JDb2RlOiAyCitiYWNrZW5kUm9vdEVudHJ5OiAobnVs
bCkKKworQWxsIHRlc3RzIGhhdmUgZG9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZp
bGVzeXN0ZW0tcm9vdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMmE3Yzg4MWM3ZTA2NjZkNDIwOGMzNjBi
NTE2Njg2NGEyZTIyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKQEAgLTAs
MCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOworCisgICAgdmFyIHRlc3RT
dGVwID0gWworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgQVBJIHRvIGRlbGV0ZSBhIEZpbGVTeXN0ZW0gY29tcGxldGVseSBhbmQgdGVzdCBn
ZXRGaWxlU3lzdGVtUm9vdCBmb3IKKyAgICAgICAgICAgIC8vIHVuaW5pdGlhbGl6ZWQgRmlsZVN5
c3RlbS4KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgiL2hvZ2UiLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZVN5c3Rl
bVJvb3QoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlm
dCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRS
b290RW50cnkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVT
eXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOworICAg
ICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lzdGVtUm9vdCgi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZpenpidXp6IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5
KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9v
dFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKKyAgICAgICAgICAg
IGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly9l
eGFtcGxlLmNvbSIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJl
c3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICBdOworCisgICAgSW5zcGVjdG9yVGVz
dC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGVzdHMgcmVxdWVzdEZpbGVTeXN0ZW1Sb290IGNvbW1hbmQuPC9wPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ4NmIyNTQ5NzEyY2MzMDJiM2JkNDc0YTdlNWU5Zjg5N2Y3
Y2ZiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBA
QAorVGVzdHMgcmVxdWVzdE1ldGFkYXRhIGNvbW1hbmQuCisKK2Vycm9yQ29kZTogMAorbWV0YWRh
dGE6CisgIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCisgIHNpemU6IDQKKworZXJyb3JDb2Rl
OiAwCittZXRhZGF0YToKKyAgbW9kaWZpY2F0aW9uVGltZTogKGV4aXN0cykKKyAgc2l6ZTogMAor
CitlcnJvckNvZGU6IDEKK21ldGFkYXRhOiAobnVsbCkKKworQWxsIHRlc3RzIGhhdmUgZG9uZS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9yZXF1ZXN0LW1ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTc0MDc4MWI2
MjVhMmFkZTU4YTcyN2U4ODYxNDJmODAzMDc5OGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLmh0
bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5U
ZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBmaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOworCisgICAg
dmFyIHRlc3RTdGVwID0gWworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZSIsICJmdWdhIiwgdGVzdFN0ZXAuc2hp
ZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAg
ICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lz
dGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0
KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVz
dFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y3JlYXRlRGlyZWN0b3J5KCIvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyLnJlcXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L3BpeW8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBt
ZXRhZGF0YSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1l
dGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwg
dGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JD
b2RlLCBtZXRhZGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
TWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOworICAgICAgICAgICAg
ZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRw
Oi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5L2JhciIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICBdOworCisgICAg
SW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgcmVxdWVzdE1ldGFkYXRhIGNvbW1hbmQu
PC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151602</attachid>
            <date>2012-07-10 22:45:28 -0700</date>
            <delta_ts>2012-07-10 23:18:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90592-20120711144526.patch</filename>
            <type>text/plain</type>
            <size>55600</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE0MmVhNjk4MWRmODg0
M2RiODkwMDMwOTYzYTFkY2FiZmVhMThlNy4uMzBlYWZkMjA3ZDIzODcwM2YyOTMyMmM3YWFjYWUw
YjI5OTQyZjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA3LTEwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
bGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZSBp
biBJbnNwZWN0b3IgYXMgZm9sbG93czoKKyAgICAgICAgLSBDbGVhbiB1cCBsYXlvdXQgdGVzdHMg
YW5kIGFkZCB0ZXN0IGNhc2UgZm9yIGVycm9yIGNhc2UsCisgICAgICAgIC0gRml4IGVycm9yIGhh
bmRsaW5nIG9uIHJlcXVlc3QsCisgICAgICAgIC0gcy9HZXRGaWxlU3lzdGVtUm9vdFRhc2svRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWREaXJlY3RvcnlUYXNrL0RpcmVj
dG9yeUNvbnRlbnRSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWRGaWxlVGFzay9GaWxlQ29udGVu
dFJlcXVlc3QvZworCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QpOiBB
ZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KTogQWRkIGVhcmx5IGVycm9yIGhh
bmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1
ZXN0TWV0YWRhdGEpOiBBZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudCk6IEFkZCBlYXJs
eSBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50Lmg6IFJlbW92ZSB1bnVzZWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBhbmQgdW51c2VkIGhl
YWRlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
LnJlcXVlc3RGaWxlU3lzdGVtUm9vdC5yZXF1ZXN0QWNjZXB0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEZpbGVTeXN0
ZW1Sb290KTogQWRkIGVhcmx5IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdERpcmVjdG9yeUNvbnRl
bnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3REaXJlY3RvcnlDb250ZW50KTogQWRkIGVhcmx5
IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdE1ldGFkYXRhLnJlcXVlc3RBY2NlcHRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0TWV0YWRhdGEpOiBBZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRl
bnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6IEFkZCBlYXJseSBlcnJv
ciBoYW5kbGluZy4KKwogMjAxMi0wNy0xMCAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIElucHV0IGVsZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2
ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA4ODE0MTg0NjZmNTFjMWZk
NTM1ODU2MDNiM2VkNGU3NWQ0NzkwOWFmLi4wZjlmZTIyMjk3NWU1MGMzZjg3NjMwY2ZkNzAwOWVh
ZmNjNzM3YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkRpcmVj
dG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRW50cmllc0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnkuaCIKICNpbmNsdWRlICJFbnRyeUFycmF5LmgiCiAj
aW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKQEAg
LTE0MSwxMiArMTQwLDEyIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1jbGFzcyBHZXRGaWxlU3lz
dGVtUm9vdFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRGaWxlU3lzdGVtUm9vdFRhc2spOworY2xhc3Mg
RmlsZVN5c3RlbVJvb3RSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbVJvb3RS
ZXF1ZXN0PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlsZVN5c3RlbVJvb3RSZXF1ZXN0
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlU3lzdGVtUm9vdFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+
IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldEZpbGVTeXN0ZW1Sb290VGFzayhm
cm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElk
LCB0eXBlKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CkBAIC0xNjMsNTcgKzE2Miw1MSBAQCBwcml2YXRlOgogICAgICAgICBtX2Zyb250ZW5kUHJv
dmlkZXIgPSAwOwogICAgIH0KIAotICAgIEdldEZpbGVTeXN0ZW1Sb290VGFzayhQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQogICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVy
KQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3R5cGUodHlw
ZSkgeyB9CiAKICAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVy
OwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV90eXBlOworICAgIEZpbGVTeXN0
ZW1UeXBlIG1fdHlwZTsKIH07CiAKLWJvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRIaXRF
cnJvcihGaWxlRXJyb3IqIGVycm9yKQorYm9vbCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEhp
dEVycm9yKEZpbGVFcnJvciogZXJyb3IpCiB7CiAgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2Rl
KCksIDApOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdldEZpbGVTeXN0ZW1Sb290VGFz
azo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
K3ZvaWQgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0g
ICAgaWYgKG1fdHlwZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgp
Ci0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAgZWxzZSBpZiAo
bV90eXBlID09IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4KQotICAgICAg
ICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OlNZTlRBWF9FUlIsIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFj
a0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkZpbGVTeXN0
ZW1Sb290UmVxdWVzdDo6ZGlkR2V0RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6
Y3JlYXRlKHRoaXMsICZGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKKyAgICBP
d25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVV
UklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIG1fdHlwZSwgIi8iKTsKIAotICAgIFJlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkR2V0RW50cnkp
OwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNw
YXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRGaWxlU3lzdGVt
Um9vdFRhc2s6OmRpZEhpdEVycm9yKTsKLSAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4g
ZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsICIv
Iik7Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lz
dGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVs
ZWFzZSgpKTsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxl
U3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNr
cy5yZWxlYXNlKCkpOwogfQogCi1ib29sIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkR2V0RW50
cnkoRW50cnkqIGVudHJ5KQorYm9vbCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEdldEVudHJ5
KEVudHJ5KiBlbnRyeSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVu
dHJ5PiByZXN1bHQoVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKS5zZXRV
cmwoZW50cnktPnRvVVJMKCkpLnNldE5hbWUoIi8iKS5zZXRJc0RpcmVjdG9yeSh0cnVlKSk7Cisg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gcmVzdWx0ID0KKyAgICAg
ICAgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAg
LnNldFVybChlbnRyeS0+dG9VUkwoKSkKKyAgICAgICAgICAgIC5zZXROYW1lKCIvIikKKyAgICAg
ICAgICAgIC5zZXRJc0RpcmVjdG9yeSh0cnVlKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nh
c3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1jbGFzcyBSZWFkRGlyZWN0b3J5VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWREaXJl
Y3RvcnlUYXNrPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZERpcmVjdG9yeVRhc2sp
OworY2xhc3MgRGlyZWN0b3J5Q29udGVudFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGly
ZWN0b3J5VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQ
cm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGlyZWN0b3J5Q29udGVudFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250
ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5
VGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJl
cXVlc3RJZCwgdXJsKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmVhZERpcmVjdG9yeVRhc2so
KQorICAgIHZpcnR1YWwgfkRpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0KCkKICAgICB7CiAgICAgICAg
IHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgfQpAQCAtMjM4LDcg
KzIzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CiAgICAg
fQogCi0gICAgUmVhZERpcmVjdG9yeVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBm
cm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICBE
aXJlY3RvcnlDb250ZW50UmVxdWVzdChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6
IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQogICAgICAgICAsIG1fcmVxdWVz
dElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9
CkBAIC0yNTIsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RGlyZWN0b3J5UmVhZGVy
PiBtX2RpcmVjdG9yeVJlYWRlcjsKIH07CiAKLXZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit2b2lkIERp
cmVjdG9yeUNvbnRlbnRSZXF1ZXN0OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIApAQCAtMjYzLDE0ICsyNTYsMTQgQEAgdm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhp
cywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRHZXRFbnRyeSk7Ci0gICAgUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRIaXRFcnJvcik7Cisg
ICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVu
dFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0
ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBPd25Q
dHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklD
YWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2Nh
bEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBl
LCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgUmVhZERpcmVjdG9y
eVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgRGlyZWN0b3J5Q29udGVudFJl
cXVlc3Q6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0Rp
cmVjdG9yeSgpKSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFU
Q0hfRVJSLCAwKTsKQEAgLTI4MywxOSArMjc2LDE5IEBAIGJvb2wgUmVhZERpcmVjdG9yeVRhc2s6
OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBS
ZWFkRGlyZWN0b3J5VGFzazo6cmVhZERpcmVjdG9yeUVudHJpZXMoKQordm9pZCBEaXJlY3RvcnlD
b250ZW50UmVxdWVzdDo6cmVhZERpcmVjdG9yeUVudHJpZXMoKQogewogICAgIGlmICghbV9kaXJl
Y3RvcnlSZWFkZXItPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAg
ICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNyZWF0ZSh0
aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsKLSAgICBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZh
Y3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRp
ZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNyZWF0ZSh0aGlz
LCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsKKyAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hl
ckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJl
cXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBtX2RpcmVjdG9yeVJlYWRlci0+cmVhZEVudHJpZXMo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotYm9vbCBSZWFkRGlyZWN0b3J5
VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKK2Jvb2wg
RGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJy
YXkqIGVudHJpZXMpCiB7CiAgICAgaWYgKCFlbnRyaWVzLT5sZW5ndGgoKSkgewogICAgICAgICBy
ZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCBtX2VudHJp
ZXMpOwpAQCAtMzA0LDcgKzI5NywxMSBAQCBib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFk
RGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVzKQogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgRW50cnkqIGVu
dHJ5ID0gZW50cmllcy0+aXRlbShpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxl
U3lzdGVtOjpFbnRyeT4gZW50cnlGb3JGcm9udGVuZCA9IFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVt
OjpFbnRyeTo6Y3JlYXRlKCkuc2V0VXJsKGVudHJ5LT50b1VSTCgpKS5zZXROYW1lKGVudHJ5LT5u
YW1lKCkpLnNldElzRGlyZWN0b3J5KGVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKKyAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnlGb3JGcm9udGVuZCA9Cisg
ICAgICAgICAgICBUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk6OmNyZWF0ZSgpCisgICAg
ICAgICAgICAgICAgLnNldFVybChlbnRyeS0+dG9VUkwoKSkKKyAgICAgICAgICAgICAgICAuc2V0
TmFtZShlbnRyeS0+bmFtZSgpKQorICAgICAgICAgICAgICAgIC5zZXRJc0RpcmVjdG9yeShlbnRy
eS0+aXNEaXJlY3RvcnkoKSk7CiAKICAgICAgICAgdXNpbmcgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJl
c291cmNlVHlwZTsKICAgICAgICAgaWYgKCFlbnRyeS0+aXNEaXJlY3RvcnkoKSkgewpAQCAtMzM0
LDE1ICszMzEsMTUgQEAgYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVu
dHJpZXMoRW50cnlBcnJheSogZW50cmllcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3Mg
R2V0TWV0YWRhdGFUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8R2V0TWV0YWRhdGFUYXNrPiB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0TWV0YWRhdGFUYXNrKTsKK2NsYXNzIE1ldGFkYXRh
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFkYXRhUmVxdWVzdD4geworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1ldGFkYXRhUmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3Zp
ZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRh
ZGF0YVRhc2soZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB1cmwpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZXRhZGF0YVJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVz
dElkLCB1cmwpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5HZXRNZXRhZGF0YVRhc2soKQorICAg
IHZpcnR1YWwgfk1ldGFkYXRhUmVxdWVzdCgpCiAgICAgewogICAgICAgICByZXBvcnRSZXN1bHQo
RmlsZUVycm9yOjpBQk9SVF9FUlIsIDApOwogICAgIH0KQEAgLTM2Niw3ICszNjMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldE1ldGFkYXRhVGFzayhQYXNzUmVmUHRyPEZy
b250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgdXJsKQorICAgIE1ldGFkYXRhUmVxdWVzdChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlk
ZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQogICAgICAgICAs
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCkgeyB9CkBAIC0zNzgsNDkgKzM3NSw1MiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Rp
cmVjdG9yeTsKIH07CiAKLXZvaWQgR2V0TWV0YWRhdGFUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQordm9pZCBNZXRhZGF0YVJlcXVlc3Q6
OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7
CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKICAgICBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tG
aWxlU3lzdGVtVVJMKG1fdXJsLCB0eXBlLCBtX3BhdGgpOwogCi0gICAgUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlD
YWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRHZXRFbnRyeSk7Ci0g
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNo
ZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkdldE1ldGFkYXRhVGFzazo6
ZGlkSGl0RXJyb3IpOworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywg
Jk1ldGFkYXRhUmVxdWVzdDo6ZGlkR2V0RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0YVJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKIAogICAgIE93
blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVS
SUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgbV9wYXRoKTsKICAgICBMb2NhbEZpbGVTeXN0ZW06Omxv
Y2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5
cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotYm9vbCBHZXRNZXRhZGF0
YVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgTWV0YWRhdGFSZXF1ZXN0Ojpk
aWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiB7CiAgICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVF
cnJvcjo6QUJPUlRfRVJSLCAwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
UmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8TWV0YWRhdGFDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0YWRhdGFU
YXNrOjpkaWRHZXRNZXRhZGF0YSk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUo
dGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkSGl0RXJyb3IpOworICAgIFJlZlB0cjxNZXRhZGF0
YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PE1l
dGFkYXRhQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFkYXRhUmVxdWVzdDo6ZGlkR2V0TWV0
YWRhdGEpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZNZXRhZGF0
YVJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBlbnRyeS0+Z2V0TWV0YWRhdGEoc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKICAgICBtX2lzRGlyZWN0b3J5ID0gZW50cnktPmlzRGly
ZWN0b3J5KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR2V0TWV0YWRhdGFUYXNrOjpk
aWRHZXRNZXRhZGF0YShNZXRhZGF0YSogbWV0YWRhdGEpCitib29sIE1ldGFkYXRhUmVxdWVzdDo6
ZGlkR2V0TWV0YWRhdGEoTWV0YWRhdGEqIG1ldGFkYXRhKQogewogICAgIHVzaW5nIFR5cGVCdWls
ZGVyOjpGaWxlU3lzdGVtOjpNZXRhZGF0YTsKLSAgICBSZWZQdHI8TWV0YWRhdGE+IHJlc3VsdCA9
IE1ldGFkYXRhOjpjcmVhdGUoKS5zZXRNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLT5tb2RpZmlj
YXRpb25UaW1lKCkpLnNldFNpemUobWV0YWRhdGEtPnNpemUoKSk7CisgICAgUmVmUHRyPE1ldGFk
YXRhPiByZXN1bHQgPQorICAgICAgICBNZXRhZGF0YTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5z
ZXRNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lKCkpCisgICAgICAg
ICAgICAuc2V0U2l6ZShtZXRhZGF0YS0+c2l6ZSgpKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGlj
X2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1jbGFzcyBSZWFkRmlsZVRhc2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZEZpbGVUYXNrKTsKK2NsYXNzIEZpbGVDb250ZW50UmVx
dWVzdCA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShG
aWxlQ29udGVudFJlcXVlc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRG
aWxlVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92
aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4dCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0
cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBlbmQsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVhZEZpbGVUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsLCBy
ZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRmlsZUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJs
LCByZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+UmVhZEZpbGVUYXNrKCkKKyAgICB2aXJ0dWFsIH5GaWxlQ29udGVudFJlcXVlc3QoKQogICAg
IHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwLCAwKTsKICAg
ICB9CkBAIC00NjAsNyArNDYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9udGVuZFByb3Zp
ZGVyID0gMDsKICAgICB9CiAKLSAgICBSZWFkRmlsZVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFBy
b3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVy
bCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCkKKyAgICBGaWxlQ29udGVudFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlz
dGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQogICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRl
cihmcm9udGVuZFByb3ZpZGVyKQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKQEAg
LTQ4Miw3ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWxlUmVhZGVyPiBtX3JlYWRl
cjsKIH07CiAKLXZvaWQgUmVhZEZpbGVUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQordm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC00OTMsMTQgKzQ5MywxNCBAQCB2
b2lkIFJlYWRGaWxlVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVu
dHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0RW50cnkpOwot
ICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRj
aGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRp
ZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0g
Q2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZG
aWxlQ29udGVudFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAg
T3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZl
VVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBwYXRoKTsKIAogICAgIExvY2FsRmlsZVN5c3RlbTo6
bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
dHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29sIFJlYWRGaWxl
VGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBGaWxlQ29udGVudFJlcXVlc3Q6
OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoZW50cnktPmlzRGlyZWN0b3J5
KCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIs
IDAsIDApOwpAQCAtNTEyLDggKzUxMiw4IEBAIGJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRy
eShFbnRyeSogZW50cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJlZlB0
cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rv
cnk8RmlsZUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUp
OwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNw
YXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6
OmRpZEhpdEVycm9yKTsKKyAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEZpbGVDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAm
RmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRHZXRGaWxlKTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAg
c3RhdGljX2Nhc3Q8RmlsZUVudHJ5Kj4oZW50cnkpLT5maWxlKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7CiAKICAgICBtX3JlYWRlciA9IEZpbGVSZWFkZXI6OmNyZWF0ZShlbnRyeS0+
ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtNTIyLDcgKzUyMiw3
IEBAIGJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRGaWxlKEZpbGUqIGZpbGUp
Citib29sIEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkR2V0RmlsZShGaWxlKiBmaWxlKQogewogICAg
IFJlZlB0cjxCbG9iPiBibG9iID0gZmlsZS0+c2xpY2UobV9zdGFydCwgbV9lbmQpOwogICAgIG1f
cmVhZGVyLT5zZXRPbmxvYWQodGhpcyk7CkBAIC01MzMsNyArNTMzLDcgQEAgYm9vbCBSZWFkRmls
ZVRhc2s6OmRpZEdldEZpbGUoRmlsZSogZmlsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBSZWFkRmlsZVRhc2s6OmRpZFJlYWQoKQordm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZFJl
YWQoKQogewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gbV9yZWFkZXItPmFycmF5
QnVmZmVyUmVzdWx0KCk7CiAKQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVk
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVt
Um9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGludCogcmVxdWVzdElkKQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGludCogcmVxdWVzdElkKQogewogICAg
IGlmICghbV9lbmFibGVkIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpIHsKICAgICAgICAgKmVycm9y
ID0gIkZpbGVTeXN0ZW0gYWdlbnQgaXMgbm90IGVuYWJsZWQiOwpAQCAtNTg5LDExICs1ODksMjIg
QEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFMKICAgICB9CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdp
bihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5nZXQoKSk7
CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBGaWxlU3lzdGVtVHlwZSB0eXBlOworICAgIGlmICh0eXBlU3RyaW5nID09IERPTUZpbGVTeXN0
ZW1CYXNlOjpwZXJzaXN0ZW50UGF0aFByZWZpeCkKKyAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1U
eXBlUGVyc2lzdGVudDsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09IERPTUZpbGVTeXN0ZW1C
YXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4KQorICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVU
ZW1wb3Jhcnk7CisgICAgZWxzZSB7CisgICAgICAgICplcnJvciA9ICJJbnZhbGlkIEZpbGVTeXN0
ZW0gdHlwZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAqcmVxdWVzdElkID0gbV9u
ZXh0UmVxdWVzdElkKys7Ci0gICAgaWYgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCkpKQotICAgICAgICBHZXRGaWxl
U3lzdGVtUm9vdFRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHR5
cGUpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIG1f
ZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCgqcmVx
dWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7CisgICAg
RmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVz
dElkLCB0eXBlKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmlu
ZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKQEAgLTYwNCwxMiAr
NjE1LDEyIEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5
Q29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0CiAgICAgfQogICAgIEFTU0VSVChtX2Zy
b250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOwogCi0gICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJl
cXVlc3RJZCsrOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKKyAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgp
KSkKLSAgICAgICAgUmVhZERpcmVjdG9yeVRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIs
ICpyZXF1ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGVs
c2UKLSAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kaXJlY3RvcnlDb250
ZW50UmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JU
X0VSUiksIDApOworICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKKyAgICBEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJ
ZCwgdXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpCkBAIC02MjAsMTIgKzYzMSwxMiBAQCB2
b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdE1ldGFkYXRhKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJgogICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFByb3Zp
ZGVyLT5mcm9udGVuZCgpKTsKIAotICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNz
ZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCi0gICAgICAg
IEdldE1ldGFkYXRhVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwg
dXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPm1ldGFkYXRhUmVjZWl2ZWQoKnJlcXVlc3RJ
ZCwgc3RhdGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDApOworICAgICpyZXF1
ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKKyAgICBNZXRhZGF0YVJlcXVlc3Q6OmNyZWF0ZSht
X2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZp
bGVDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVh
ZEFzVGV4dCwgY29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBlbmQsIGNvbnN0IFN0cmluZyog
Y2hhcnNldCwgaW50KiByZXF1ZXN0SWQpCkBAIC02MzYsMTIgKzY0NywxNSBAQCB2b2lkIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVDb250ZW50KEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaQogICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9u
dGVuZCgpKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKKyAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsKKwogICAgICpyZXF1ZXN0SWQgPSBt
X25leHRSZXF1ZXN0SWQrKzsKIAotICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKSkKLSAgICAgICAgUmVhZEZp
bGVUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB1cmwsIHJlYWRB
c1RleHQsIHN0YXJ0ID8gKnN0YXJ0IDogMCwgZW5kID8gKmVuZCA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8bG9uZyBsb25nPjo6bWF4KCksIGNoYXJzZXQgPyAqY2hhcnNldCA6ICIiKS0+c3RhcnQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Zyb250ZW5kUHJvdmlk
ZXItPmZyb250ZW5kKCktPmZpbGVDb250ZW50UmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3RhdGljX2Nh
c3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDAsIDApOworICAgIGxvbmcgbG9uZyBzdGFy
dFBvc2l0aW9uID0gc3RhcnQgPyAqc3RhcnQgOiAwOworICAgIGxvbmcgbG9uZyBlbmRQb3NpdGlv
biA9IGVuZCA/ICplbmQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpOwor
ICAgIEZpbGVDb250ZW50UmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVl
c3RJZCwgdXJsLCByZWFkQXNUZXh0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgY2hhcnNl
dCA/ICpjaGFyc2V0IDogIiIpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCkKQEAgLTY3NywxMiArNjkxLDE0IEBAIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQodGhpcyk7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
Ojphc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKEVycm9yU3RyaW5nKiBlcnJv
ciwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1f
cGFnZUFnZW50LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4p
KQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpOwogICAgIH0KKworICAgICpl
cnJvciA9ICJObyBmcmFtZSBpcyBhdmFpbGFibGUgZm9yIHRoZSByZXF1ZXN0IjsKICAgICByZXR1
cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5oCmluZGV4IDU2YTI5MjYwMjgxMGE2NDFjMDJjYjAyZjk1MzczZjZjM2Yx
ZmYxZjUuLmY3MzUwZDQxNjM1YmJiNmY5NGZiYzJjMzI4YmFkNGI1NzMxZWI5NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgK
QEAgLTM0LDE4ICszNCwxNCBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIAogI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCiAKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9N
RmlsZVN5c3RlbTsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yU3RhdGU7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
CkBAIC01OSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcq
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQq
IHJlcXVlc3RJZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVt
Um9vdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TWV0YWRhdGEo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBp
bnQqIGVuZCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0LCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7
CkBAIC03MCw3ICs2Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIElu
c3BlY3RvclN0YXRlKik7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGFzc2VydFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oRXJyb3JTdHJp
bmcqLCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VB
Z2VudDsKICAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1N
b2RlbC5qcwppbmRleCBmYzE3MTY2NjY0MWQ5YzQxMDBiZTFiM2ZlMTA4NDExNDY5Y2U1YjdhLi45
NjQwMmJkOWI4YzlmYWVkMzNkM2NmY2Q2ZGZkZWZkYTUwMzRlZjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAt
NDY4LDcgKzQ2OCw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJv
dG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gdHlwZQotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBG
aWxlU3lzdGVtQWdlbnQuRW50cnkpPX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KG51bWJlciwgRmlsZVN5c3RlbUFnZW50LkVudHJ5PSk9fSBjYWxsYmFjawogICAgICAqLwogICAg
IHJlcXVlc3RGaWxlU3lzdGVtUm9vdDogZnVuY3Rpb24ob3JpZ2luLCB0eXBlLCBjYWxsYmFjaykK
ICAgICB7CkBAIC00NzcsNyArNDc3LDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVk
KGVycm9yLCByZXF1ZXN0SWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisg
ICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9y
LlNFQ1VSSVRZX0VSUik7CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc3RvcmVb
cmVxdWVzdElkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIH0KICAgICB9
LApAQCAtNTA3LDcgKzUwOSw5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJv
ciwgcmVxdWVzdElkKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5TRUNV
UklUWV9FUlIpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0b3JlW3JlcXVl
c3RJZF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwogICAgICAgICB9CiAgICAgfSwKQEAg
LTUzNyw3ICs1NDEsOSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiByZXF1ZXN0QWNjZXB0ZWQoZXJyb3IsIHJl
cXVlc3RJZCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAgICAgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhGaWxlRXJyb3IuU0VDVVJJVFlf
RVJSKTsKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzdG9yZVtyZXF1ZXN0SWRd
ID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fTsKICAgICAgICAgfQogICAgIH0sCkBAIC01NjYs
NyArNTcyLDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVycm9yLCByZXF1ZXN0
SWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBpZiAo
ZXJyb3IpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7
CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNh
bGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIH0KICAgICB9LApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViNzdh
YjdlZGE5MmJjNWQyMzk1ZDRiYzBkYjYwNzZiNDRkM2E1OTIuLjVmZDQzZWE3ODYwNWI3ZmUyMWQ2
ZGUyYjFiZTI4ZGVjNzFkODBlNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNy0xMCAg
VGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ2xlYW4gdXAgRmlsZVN5c3RlbSByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgRmlsZVN5c3RlbSByZWxhdGVkIGNv
ZGUgaW4gSW5zcGVjdG9yIGFzIGZvbGxvd3M6CisgICAgICAgIC0gQ2xlYW4gdXAgbGF5b3V0IHRl
c3RzIGFuZCBhZGQgdGVzdCBjYXNlIGZvciBlcnJvciBjYXNlLAorICAgICAgICAtIEZpeCBlcnJv
ciBoYW5kbGluZyBvbiByZXF1ZXN0LAorICAgICAgICAtIHMvR2V0RmlsZVN5c3RlbVJvb3RUYXNr
L0ZpbGVTeXN0ZW1Sb290UmVxdWVzdC9nCisgICAgICAgIC0gcy9SZWFkRGlyZWN0b3J5VGFzay9E
aXJlY3RvcnlDb250ZW50UmVxdWVzdC9nCisgICAgICAgIC0gcy9SZWFkRmlsZVRhc2svRmlsZUNv
bnRlbnRSZXF1ZXN0L2cKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZmlsZXN5c3RlbS10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVz
dC5JbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlD
b250ZW50UmVxdWVzdFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0
Lkluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdCk6CisgICAgICAgIChpbml0
aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVz
dFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0KToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRl
bnQtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwuIENoYW5nZWQgdGVzdCBzdGVwcyB0byB1bm5hbWVk
IGZ1bmN0aW9uIGFycmF5LiBBZGQgZmFpbGNhc2UgdGVzdC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50LWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVhZC1maWxlLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sLiBDaGFu
Z2VkIHRlc3Qgc3RlcHMgdG8gdW5uYW1lZCBmdW5jdGlvbiBhcnJheS4gQWRkIGZhaWxjYXNlIHRl
c3QuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZp
bGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLWV4cGVjdGVkLnR4dC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbC4gQ2hhbmdlZCB0ZXN0IHN0
ZXBzIHRvIHVubmFtZWQgZnVuY3Rpb24gYXJyYXkuIEFkZCBmYWlsY2FzZSB0ZXN0LgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS1leHBl
Y3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLmh0bWw6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0
YS5odG1sLiBDaGFuZ2VkIHRlc3Qgc3RlcHMgdG8gdW5uYW1lZCBmdW5jdGlvbiBhcnJheS4gQWRk
IGZhaWxjYXNlIHRlc3QuCisKIDIwMTItMDctMTAgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90
IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMK
aW5kZXggNGVkNmNlNThmZDcyNDUxYmI4NWNjNTM4MWIyNGY1MDBhZjQ2ZWIxZS4uNGExYTRjMDRm
NTI3YWYzMzExZWE4YTZmZGI5ZmI4NGJmM2U1Y2Y2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRl
c3QuanMKQEAgLTcwLDEyICs3MCwyMyBAQCB2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJG
aWxlU3lzdGVtKCIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsg
IikiKTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVjdG9yeVJlc3Vs
dCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBG
aWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRS
b290RW50cnkpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JD
b2RlOiAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGJhY2tlbmRSb290RW50cnkpCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiYmFja2VuZFJvb3RFbnRyeS51cmw6ICIg
KyBiYWNrZW5kUm9vdEVudHJ5LnVybCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJiYWNrZW5kUm9vdEVudHJ5OiAobnVsbCkiKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0
LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwg
ZW50cmllcykKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNv
ZGU6ICIgKyBlcnJvckNvZGUpOwogCiAgICAgICAgIGlmICghZW50cmllcykgewogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVudHJpZXM6IChudWxsKSIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTg1LDYgKzk2LDcgQEAgdmFyIGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3Qg
PSBmdW5jdGlvbigpCiAgICAgICAgICAgZm9yICh2YXIgaiBpbiBlbnRyaWVzW2ldKQogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgaiArICI6ICIgKyBlbnRyaWVz
W2ldW2pdKTsKICAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7
CiAgICAgfTsKIAogICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdCA9
IGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCkBAIC05Nyw2ICsxMDksMjAgQEAgdmFyIGlu
aXRpYWxpemVfRmlsZVN5c3RlbVRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibWV0YWRhdGE6IChudWxsKSIpOwog
ICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICB9Owor
CisgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rp
b24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7CisKKyAgICAgICAgaWYg
KGNvbnRlbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudDog
XCIiICsgY29udGVudCArICJcIiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudDogKG51bGwpIik7CisKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoImNoYXJzZXQ6ICIgKyBjaGFyc2V0KTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiIpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dl
dC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NzNmZmY1ZjA3Y2NiMjFhOTEwYTllYmViMGJhNWE4ODNiYjQyNjYyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3RzIGdldEZpbGVTeXN0ZW1Sb290Lgot
Ci1QQVNTOiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvIGlzIGZv
dW5kLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNDJiY2Q2MGE2MjVhMTdlN2RlNTkwNzNkMzhlNDQxN2FhZWEy
MmQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9v
dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PG1l
dGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5U
ZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciByZXF1ZXN0TWFuYWdlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAg
ewotICAgICAgICAvLyBGSVhNRTogQWRkIEFQSSB0byBkZWxldGUgYSBGaWxlU3lzdGVtIGNvbXBs
ZXRlbHkgYW5kIHRlc3QgZ2V0RmlsZVN5c3RlbVJvb3QgZm9yCi0gICAgICAgIC8vIHVuaW5pdGlh
bGl6ZWQgRmlsZVN5c3RlbS4KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9n
ZSIsIHN0ZXAyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAg
ICByZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIsICJ0ZW1wb3JhcnkiLCBzdGVwMyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDMo
ZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgIHsKLSAgICAgICAgaWYgKGVycm9yQ29k
ZSA9PT0gMCAmJiBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlBBU1M6ICIgKyBiYWNrZW5kUm9vdEVudHJ5LnVybCArICIgaXMgZm91bmQuIik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlM
OiBlcnJvckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKLQotICAgICAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbShzdGVwNCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDQoZXJyb3JD
b2RlLCBmaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgotPHA+VGVzdHMgZ2V0RmlsZVN5c3RlbVJvb3Qu
PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyYzc3ZmJmYzE2MjdmZTNmOTY4OTAyNTJiZmM5NmQ5YWQ2ZTk2
NjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVRlc3RzIGdldE1ldGFkYXRh
LgotCi1lcnJvckNvZGU6IDAKLW1ldGFkYXRhOgotICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3Rz
KQotICBzaXplOiA0Ci1lcnJvckNvZGU6IDAKLW1ldGFkYXRhOgotICBtb2RpZmljYXRpb25UaW1l
OiAoZXhpc3RzKQotICBzaXplOiAwCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmE2NmU5YzIwODMyYTdjMzU0OTcxNTFkMTQwZTk0YzY0
YTc3MjkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48bWV0YSBj
aGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3Qp
OwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9
IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVwMSgp
Ci0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2UiLCAiZnVnYSIs
IHN0ZXAyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAgICBm
aWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHN0ZXAzKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBzdGVwMyhlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwot
ICAgICAgICBzdGVwNCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA0KCkKLSAgICB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvcGl5byIsIHN0ZXA1KTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNSgpCi0gICAgewotICAgICAgICBmaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC90ZW1wb3JhcnkvcGl5byIsIHN0ZXA2KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVw
NihlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
TWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
c3RlcDcoZXJyb3JDb2RlLCBmaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgotPHA+VGVzdHMgZ2V0TWV0
YWRhdGEuPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk5YWE1NjMzMzY5MmMxNDE3OGY0ODY4MTNj
ZTg1NjY5ZTFmNDcxMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGly
ZWN0b3J5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRlc3Rz
IHJlYWREaXJlY3RvcnkuCi0KLWVycm9yQ29kZTogMAotZW50cmllczoKLSAgMDoKLSAgICB1cmw6
IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL3BpeW8uaHRt
bAotICAgIG5hbWU6IHBpeW8uaHRtbAotICAgIGlzRGlyZWN0b3J5OiBmYWxzZQotICAgIGlzVGV4
dEZpbGU6IHRydWUKLSAgICBtaW1lVHlwZTogdGV4dC9odG1sCi0gICAgcmVzb3VyY2VUeXBlOiBE
b2N1bWVudAotICAxOgotICAgIHVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UvZnVnYQotICAgIG5hbWU6IGZ1Z2EKLSAgICBpc0RpcmVjdG9yeTogdHJ1
ZQotZXJyb3JDb2RlOiAxCi1lbnRyaWVzOiAobnVsbCkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9y
eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGFiZmZlOGFjYjQ5MjZjYWI1
YmZkNDRlMjhkYmIzY2JmYTQyMzlkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVhZC1kaXJlY3RvcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50
TG9hZGVkIiwgcnVuVGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVxdWVzdE1h
bmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOwotCi0g
ICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOwotCi0gICAgZnVuY3Rpb24g
c3RlcDEoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9o
b2dlIiwgc3RlcDIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZS9mdWdhIiwgc3RlcDMpOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuY3JlYXRlRmlsZSgiL2hvZ2UvcGl5by5odG1sIiwgc3RlcDQpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIHN0ZXA0KCkKLSAgICB7Ci0gICAgICAgIHJlcXVlc3RNYW5hZ2VyLnJlcXVlc3REaXJl
Y3RvcnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
aG9nZSIsIHN0ZXA1KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNShlcnJvckNvZGUsIGVu
dHJpZXMpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZWFkRGlyZWN0b3J5UmVz
dWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAgIHJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RE
aXJlY3RvcnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkvZm9vIiwgc3RlcDYpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA2KGVycm9yQ29kZSwg
ZW50cmllcykgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZWFkRGlyZWN0b3J5UmVzdWx0
KGVycm9yQ29kZSwgZW50cmllcyk7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVT
eXN0ZW0oc3RlcDcpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA3KCkKLSAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4K
LTxwPlRlc3RzIHJlYWREaXJlY3RvcnkuPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzMwYmJlMmVjODdhMzFkNmE5
M2YwNDA0MWExYTBlZTY5NTczMTZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVhZC1maWxlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotVGVz
dHMgcmVxdWVzdEZpbGVDb250ZW50LgotCi1lcnJvckNvZGUgPSAwCi1jb250ZW50ID0gIlBBU1Mi
Ci1jaGFyc2V0ID0gVVRGLTgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIwNjEyZjQzN2QyMmM3ZDA1YmQyZmUyYjI4MTUzZjMxYTFmZjNhMGMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDU1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxt
ZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVu
VGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVxdWVzdE1hbmFnZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOwotICAgIEluc3BlY3RvclRl
c3QuY2xlYXJGaWxlU3lzdGVtKHN0ZXAxKTsKLQotICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICB7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZSIsIHN0ZXAyKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JU
ZXN0LndyaXRlRmlsZSgiL2hvZ2UvZnVnYS50eHQiLCAicGlQQVNTeW8iLCBzdGVwMyk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gc3RlcDMoKQotICAgIHsKLSAgICAgICAgcmVxdWVzdE1hbmFnZXIu
cmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvaG9nZS9mdWdhLnR4dCIsIHRydWUsIDIsIDYsICJVVEYtOCIsIHN0ZXA0KTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBzdGVwNChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAg
ewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlID0gIiArIGVycm9y
Q29kZSk7Ci0gICAgICAgIGlmIChjb250ZW50KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImNvbnRlbnQgPSBcIiIgKyBjb250ZW50ICsgIlwiIik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb250ZW50ID0gKG51bGwpIik7
Ci0KLSAgICAgICAgaWYgKGNoYXJzZXQpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiY2hhcnNldCA9ICIgKyBjaGFyc2V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNoYXJzZXQgPSAobnVsbCkiKTsKLQotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNSk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gc3RlcDUoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
LSAgICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgcmVxdWVzdEZp
bGVDb250ZW50LjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVu
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVh
NTJiMzMzYWUwMDBlZDZjNTAxZmEyNDQxMzllZTE5MDRhY2VmMmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGly
ZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3RzIHJlcXVl
c3REaXJlY3RvcnlDb250ZW50IGNvbW1hbmQuCisKK2Vycm9yQ29kZTogMAorZW50cmllczoKKyAg
MDoKKyAgICB1cmw6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9o
b2dlL3BpeW8uaHRtbAorICAgIG5hbWU6IHBpeW8uaHRtbAorICAgIGlzRGlyZWN0b3J5OiBmYWxz
ZQorICAgIGlzVGV4dEZpbGU6IHRydWUKKyAgICBtaW1lVHlwZTogdGV4dC9odG1sCisgICAgcmVz
b3VyY2VUeXBlOiBEb2N1bWVudAorICAxOgorICAgIHVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYQorICAgIG5hbWU6IGZ1Z2EKKyAgICBpc0Rp
cmVjdG9yeTogdHJ1ZQorCitlcnJvckNvZGU6IDEKK2VudHJpZXM6IChudWxsKQorCitlcnJvckNv
ZGU6IDIKK2VudHJpZXM6IChudWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3Qt
ZGlyZWN0b3J5LWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
OGUyZWM0YTMxMzVlN2I5ODhiNTMxZDU3NDU1NDNmOGVmMjA1NzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGly
ZWN0b3J5LWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29u
dGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVT
eXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RN
YW5hZ2VyKCk7CisKKyAgICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dl
IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hv
Z2UvZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0
aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIv
aG9nZS9waXlvLmh0bWwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAg
ICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFu
YWdlci5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9y
Q29kZSwgZW50cmllcyk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBm
dW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50
cmllcyk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdERpcmVj
dG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3RlbXBvcmFyeS8iLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNv
ZGUsIGVudHJpZXMpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNv
bnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RGlyZWN0b3J5Q29udGVudCBjb21tYW5k
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZp
bGUtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3MDI2YjI0ODYzZTgwZWVmYzgx
MGNlNWU1MjQxYzY2YWJmMTM3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3RzIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kLgor
CitlcnJvckNvZGU6IDAKK2NvbnRlbnQ6ICJQQVNTIgorY2hhcnNldDogVVRGLTgKKworZXJyb3JD
b2RlOiAxMQorY29udGVudDogKG51bGwpCitjaGFyc2V0OiB1bmRlZmluZWQKKworZXJyb3JDb2Rl
OiAxCitjb250ZW50OiAobnVsbCkKK2NoYXJzZXQ6IHVuZGVmaW5lZAorCitlcnJvckNvZGU6IDIK
K2NvbnRlbnQ6IChudWxsKQorY2hhcnNldDogdW5kZWZpbmVkCisKK0FsbCB0ZXN0cyBoYXZlIGRv
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NmU3Y2VhMmNkYzYwMjQzY2UwODNlZjNmZTQyMTZlMDhiOTJjZDc0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0
LWZpbGUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250
ZW50TG9hZGVkIiwgcnVuVGVzdCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgZmlsZVN5
c3RlbVJlcXVlc3RNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIoKTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHtJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpO30sIDEwMDApOworICAgIHZhciB0ZXN0U3RlcCA9IFsKKyAgICAgICAgZnVuY3Rpb24o
KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgi
L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9n
ZS9mdWdhLnR4dCIsICJwaVBBU1N5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAu
MC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYS50eHQiLCB0cnVlLCAyLCA2LCAiVVRGLTgiLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNv
ZGUsIGNvbnRlbnQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJz
ZXQpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29u
dGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0
cnVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0
UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7CisgICAgICAgICAgICBmaWxlU3lz
dGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
ICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihl
cnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQs
IGNoYXJzZXQpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RG
aWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5L2Zvby50
eHQiLCB0cnVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRS
ZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1m
aWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NTAzNDg3MTY5ZTU4NTFj
ZTk1N2RkMTg4MWViODRhNmI1NDVmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyByZXF1ZXN0RmlsZVN5c3RlbVJvb3Qg
Y29tbWFuZC4KKworZXJyb3JDb2RlOiAwCitiYWNrZW5kUm9vdEVudHJ5LnVybDogZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5LworCitlcnJvckNvZGU6IDIKK2JhY2tl
bmRSb290RW50cnk6IChudWxsKQorCitlcnJvckNvZGU6IDIKK2JhY2tlbmRSb290RW50cnk6IChu
dWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3Qt
ZmlsZXN5c3RlbS1yb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMyYTdjODgxYzdlMDY2NmQ0MjA4YzM2
MGI1MTY2ODY0YTJlMjJkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbApAQCAt
MCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2YXIgdGVz
dFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBBUEkgdG8gZGVsZXRlIGEgRmlsZVN5c3RlbSBjb21wbGV0ZWx5IGFuZCB0ZXN0
IGdldEZpbGVTeXN0ZW1Sb290IGZvcgorICAgICAgICAgICAgLy8gdW5pbml0aWFsaXplZCBGaWxl
U3lzdGVtLgorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZSIsIHRl
c3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lz
dGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNo
aWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2Vu
ZFJvb3RFbnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Cisg
ICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290
KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAiZml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50
cnkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1S
b290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOworICAgICAgICAg
ICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDov
L2V4YW1wbGUuY29tIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9
LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAgICAg
ICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0
UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFuZC48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDg2YjI1NDk3MTJjYzMwMmIzYmQ0NzRhN2U1ZTlmODk3
ZjdjZmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3
IEBACitUZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC4KKworZXJyb3JDb2RlOiAwCittZXRh
ZGF0YToKKyAgbW9kaWZpY2F0aW9uVGltZTogKGV4aXN0cykKKyAgc2l6ZTogNAorCitlcnJvckNv
ZGU6IDAKK21ldGFkYXRhOgorICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQorICBzaXplOiAw
CisKK2Vycm9yQ29kZTogMQorbWV0YWRhdGE6IChudWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25l
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNzQwNzgx
YjYyNWEyYWRlNThhNzI3ZTg4NjE0MmY4MDMwNzk4ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEu
aHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1
blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFu
YWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAg
ICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUoIi9ob2dlIiwgImZ1Z2EiLCB0ZXN0U3RlcC5z
aGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRhdGEoImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgdGVzdFN0ZXAuc2hp
ZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0
YSkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1
ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVEaXJlY3RvcnkoIi9waXlvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlU3lzdGVt
UmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC90ZW1wb3JhcnkvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUs
IG1ldGFkYXRhKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0
TWV0YWRhdGEoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28i
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJv
ckNvZGUsIG1ldGFkYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBtZXRhZGF0YSk7CisgICAgICAgICAg
ICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0
dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvYmFyIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAg
ICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFu
ZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151608</attachid>
            <date>2012-07-10 23:18:33 -0700</date>
            <delta_ts>2012-07-11 00:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90592-20120711151831.patch</filename>
            <type>text/plain</type>
            <size>55537</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE0MmVhNjk4MWRmODg0
M2RiODkwMDMwOTYzYTFkY2FiZmVhMThlNy4uMzBlYWZkMjA3ZDIzODcwM2YyOTMyMmM3YWFjYWUw
YjI5OTQyZjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA3LTEwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
bGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBGaWxlU3lzdGVtIHJlbGF0ZWQgY29kZSBp
biBJbnNwZWN0b3IgYXMgZm9sbG93czoKKyAgICAgICAgLSBDbGVhbiB1cCBsYXlvdXQgdGVzdHMg
YW5kIGFkZCB0ZXN0IGNhc2UgZm9yIGVycm9yIGNhc2UsCisgICAgICAgIC0gRml4IGVycm9yIGhh
bmRsaW5nIG9uIHJlcXVlc3QsCisgICAgICAgIC0gcy9HZXRGaWxlU3lzdGVtUm9vdFRhc2svRmls
ZVN5c3RlbVJvb3RSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWREaXJlY3RvcnlUYXNrL0RpcmVj
dG9yeUNvbnRlbnRSZXF1ZXN0L2cKKyAgICAgICAgLSBzL1JlYWRGaWxlVGFzay9GaWxlQ29udGVu
dFJlcXVlc3QvZworCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QpOiBB
ZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KTogQWRkIGVhcmx5IGVycm9yIGhh
bmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1
ZXN0TWV0YWRhdGEpOiBBZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudCk6IEFkZCBlYXJs
eSBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50Lmg6IFJlbW92ZSB1bnVzZWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBhbmQgdW51c2VkIGhl
YWRlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
LnJlcXVlc3RGaWxlU3lzdGVtUm9vdC5yZXF1ZXN0QWNjZXB0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEZpbGVTeXN0
ZW1Sb290KTogQWRkIGVhcmx5IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdERpcmVjdG9yeUNvbnRl
bnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3REaXJlY3RvcnlDb250ZW50KTogQWRkIGVhcmx5
IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdE1ldGFkYXRhLnJlcXVlc3RBY2NlcHRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0TWV0YWRhdGEpOiBBZGQgZWFybHkgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRl
bnQucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6IEFkZCBlYXJseSBlcnJv
ciBoYW5kbGluZy4KKwogMjAxMi0wNy0xMCAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIElucHV0IGVsZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2
ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA4ODE0MTg0NjZmNTFjMWZk
NTM1ODU2MDNiM2VkNGU3NWQ0NzkwOWFmLi5mOTdhYmJmOTYzNTk3NzNkYWNmN2Y5M2Q5YWY4ZTkz
OWM2ODFmYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkRpcmVj
dG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRW50cmllc0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnkuaCIKICNpbmNsdWRlICJFbnRyeUFycmF5LmgiCiAj
aW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKQEAg
LTE0MSwxMiArMTQwLDEyIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1jbGFzcyBHZXRGaWxlU3lz
dGVtUm9vdFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRGaWxlU3lzdGVtUm9vdFRhc2spOworY2xhc3Mg
RmlsZVN5c3RlbVJvb3RSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbVJvb3RS
ZXF1ZXN0PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlsZVN5c3RlbVJvb3RSZXF1ZXN0
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlU3lzdGVtUm9vdFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+
IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldEZpbGVTeXN0ZW1Sb290VGFzayhm
cm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElk
LCB0eXBlKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CkBAIC0xNjMsNTcgKzE2Miw1MCBAQCBwcml2YXRlOgogICAgICAgICBtX2Zyb250ZW5kUHJv
dmlkZXIgPSAwOwogICAgIH0KIAotICAgIEdldEZpbGVTeXN0ZW1Sb290VGFzayhQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQogICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVy
KQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAgICAgLCBtX3R5cGUodHlw
ZSkgeyB9CiAKICAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVy
OwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV90eXBlOworICAgIEZpbGVTeXN0
ZW1UeXBlIG1fdHlwZTsKIH07CiAKLWJvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRIaXRF
cnJvcihGaWxlRXJyb3IqIGVycm9yKQorYm9vbCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEhp
dEVycm9yKEZpbGVFcnJvciogZXJyb3IpCiB7CiAgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2Rl
KCksIDApOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdldEZpbGVTeXN0ZW1Sb290VGFz
azo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
K3ZvaWQgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0g
ICAgaWYgKG1fdHlwZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgp
Ci0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAgZWxzZSBpZiAo
bV90eXBlID09IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4KQotICAgICAg
ICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OlNZTlRBWF9FUlIsIDApOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFj
a0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkZpbGVTeXN0
ZW1Sb290UmVxdWVzdDo6ZGlkR2V0RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6
Y3JlYXRlKHRoaXMsICZGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKKyAgICBP
d25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVV
UklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIG1fdHlwZSwgIi8iKTsKIAotICAgIFJlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkR2V0RW50cnkp
OwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNw
YXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRGaWxlU3lzdGVt
Um9vdFRhc2s6OmRpZEhpdEVycm9yKTsKLSAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4g
ZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsICIv
Iik7Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lz
dGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVs
ZWFzZSgpKTsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxl
U3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1fdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNr
cy5yZWxlYXNlKCkpOwogfQogCi1ib29sIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkR2V0RW50
cnkoRW50cnkqIGVudHJ5KQorYm9vbCBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmRpZEdldEVudHJ5
KEVudHJ5KiBlbnRyeSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVu
dHJ5PiByZXN1bHQoVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKS5zZXRV
cmwoZW50cnktPnRvVVJMKCkpLnNldE5hbWUoIi8iKS5zZXRJc0RpcmVjdG9yeSh0cnVlKSk7Cisg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gcmVzdWx0ID0gVHlwZUJ1
aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKQorICAgICAgICAuc2V0VXJsKGVudHJ5
LT50b1VSTCgpKQorICAgICAgICAuc2V0TmFtZSgiLyIpCisgICAgICAgIC5zZXRJc0RpcmVjdG9y
eSh0cnVlKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNv
ZGU+KDApLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1jbGFzcyBSZWFkRGlyZWN0
b3J5VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWREaXJlY3RvcnlUYXNrPiB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmVhZERpcmVjdG9yeVRhc2spOworY2xhc3MgRGlyZWN0b3J5Q29u
dGVudFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJlY3RvcnlDb250ZW50UmVxdWVzdD4g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0KTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5Q29u
dGVudFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5k
UHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5VGFzayhmcm9udGVuZFByb3ZpZGVy
LCByZXF1ZXN0SWQsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsKSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+UmVhZERpcmVjdG9yeVRhc2soKQorICAgIHZpcnR1YWwgfkRpcmVj
dG9yeUNvbnRlbnRSZXF1ZXN0KCkKICAgICB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJy
b3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgfQpAQCAtMjM4LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CiAgICAgfQogCi0gICAgUmVhZERpcmVjdG9y
eVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICBEaXJlY3RvcnlDb250ZW50UmVxdWVz
dChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihm
cm9udGVuZFByb3ZpZGVyKQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAg
ICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CkBAIC0yNTIsNyArMjQ0LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBtX2RpcmVjdG9yeVJlYWRlcjsK
IH07CiAKLXZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit2b2lkIERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0
OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQog
ewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApAQCAtMjYzLDE0ICsyNTUs
MTQgQEAgdm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNo
ZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNr
OjpkaWRHZXRFbnRyeSk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywg
JlJlYWREaXJlY3RvcnlUYXNrOjpkaWRIaXRFcnJvcik7CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxs
YmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEdldEVudHJ5
KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlz
cGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29u
dGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsKICAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNr
cz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUs
IHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmls
ZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tz
LnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgUmVhZERpcmVjdG9yeVRhc2s6OmRpZEdldEVudHJ5KEVu
dHJ5KiBlbnRyeSkKK2Jvb2wgRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEdldEVudHJ5KEVu
dHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7CiAgICAgICAg
IHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSLCAwKTsKQEAgLTI4Mywx
OSArMjc1LDE5IEBAIGJvb2wgUmVhZERpcmVjdG9yeVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBl
bnRyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6cmVh
ZERpcmVjdG9yeUVudHJpZXMoKQordm9pZCBEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6cmVhZERp
cmVjdG9yeUVudHJpZXMoKQogewogICAgIGlmICghbV9kaXJlY3RvcnlSZWFkZXItPmZpbGVzeXN0
ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChG
aWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNo
ZXJGYWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRh
c2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46
OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZEhpdEVycm9yKTsKKyAgICBSZWZQ
dHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJG
YWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJl
cXVlc3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEhpdEVycm9yKTsK
ICAgICBtX2RpcmVjdG9yeVJlYWRlci0+cmVhZEVudHJpZXMoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKIH0KIAotYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKK2Jvb2wgRGlyZWN0b3J5Q29udGVudFJlcXVl
c3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJpZXMpCiB7CiAgICAg
aWYgKCFlbnRyaWVzLT5sZW5ndGgoKSkgewogICAgICAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nh
c3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCBtX2VudHJpZXMpOwpAQCAtMzA0LDcgKzI5Niwx
MCBAQCBib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRy
eUFycmF5KiBlbnRyaWVzKQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMt
Pmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgRW50cnkqIGVudHJ5ID0gZW50cmllcy0+aXRlbShp
KTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnlG
b3JGcm9udGVuZCA9IFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3JlYXRlKCkuc2V0
VXJsKGVudHJ5LT50b1VSTCgpKS5zZXROYW1lKGVudHJ5LT5uYW1lKCkpLnNldElzRGlyZWN0b3J5
KGVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxl
U3lzdGVtOjpFbnRyeT4gZW50cnlGb3JGcm9udGVuZCA9IFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVt
OjpFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRVcmwoZW50cnktPnRvVVJMKCkpCisg
ICAgICAgICAgICAuc2V0TmFtZShlbnRyeS0+bmFtZSgpKQorICAgICAgICAgICAgLnNldElzRGly
ZWN0b3J5KGVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKIAogICAgICAgICB1c2luZyBUeXBlQnVpbGRl
cjo6UGFnZTo6UmVzb3VyY2VUeXBlOwogICAgICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9yeSgp
KSB7CkBAIC0zMzQsMTUgKzMyOSwxNSBAQCBib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFk
RGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVzKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1jbGFzcyBHZXRNZXRhZGF0YVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRNZXRhZGF0
YVRhc2s+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRNZXRhZGF0YVRhc2spOworY2xh
c3MgTWV0YWRhdGFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWRhdGFSZXF1ZXN0PiB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0YWRhdGFSZXF1ZXN0KTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZy
b250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFkYXRhUmVxdWVzdD4gY3JlYXRl
KFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEdldE1ldGFkYXRhVGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhUmVxdWVzdChmcm9udGVuZFByb3Zp
ZGVyLCByZXF1ZXN0SWQsIHVybCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkdldE1ldGFkYXRh
VGFzaygpCisgICAgdmlydHVhbCB+TWV0YWRhdGFSZXF1ZXN0KCkKICAgICB7CiAgICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CiAgICAgfQpAQCAtMzY2LDcgKzM2
MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR2V0TWV0YWRhdGFUYXNrKFBh
c3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgTWV0YWRhdGFSZXF1ZXN0KFBhc3NSZWZQdHI8RnJv
bnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nJiB1cmwpCiAgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIp
CiAgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICAgICAsIG1fdXJsKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSB7IH0KQEAgLTM3OCw0OSArMzczLDUxIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzRGlyZWN0b3J5OwogfTsKIAotdm9pZCBHZXRNZXRhZGF0YVRhc2s6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit2b2lkIE1ldGFk
YXRhUmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKIHsKICAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwogICAgIERPTUZpbGVTeXN0ZW1C
YXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwobV91cmwsIHR5cGUsIG1fcGF0aCk7CiAKLSAgICBSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFj
dG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRNZXRhZGF0YVRhc2s6OmRpZEdl
dEVudHJ5KTsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxi
YWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0
YWRhdGFUYXNrOjpkaWRIaXRFcnJvcik7CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNy
ZWF0ZSh0aGlzLCAmTWV0YWRhdGFSZXF1ZXN0OjpkaWRHZXRFbnRyeSk7CisgICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVy
cm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFkYXRhUmVxdWVzdDo6ZGlkSGl0RXJyb3Ip
OwogCiAgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3Mg
PSBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBtX3BhdGgpOwogICAgIExvY2FsRmls
ZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29s
IEdldE1ldGFkYXRhVGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBNZXRhZGF0
YVJlcXVlc3Q6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5m
aWxlc3lzdGVtKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICByZXBvcnRS
ZXN1bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIsIDApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2Fs
bGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxNZXRhZGF0YUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZH
ZXRNZXRhZGF0YVRhc2s6OmRpZEdldE1ldGFkYXRhKTsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRIaXRFcnJvcik7CisgICAgUmVm
UHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hl
ckZhY3Rvcnk8TWV0YWRhdGFDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmTWV0YWRhdGFSZXF1ZXN0
OjpkaWRHZXRNZXRhZGF0YSk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhp
cywgJk1ldGFkYXRhUmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwogICAgIGVudHJ5LT5nZXRNZXRhZGF0
YShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwogICAgIG1faXNEaXJlY3RvcnkgPSBl
bnRyeS0+aXNEaXJlY3RvcnkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBHZXRNZXRh
ZGF0YVRhc2s6OmRpZEdldE1ldGFkYXRhKE1ldGFkYXRhKiBtZXRhZGF0YSkKK2Jvb2wgTWV0YWRh
dGFSZXF1ZXN0OjpkaWRHZXRNZXRhZGF0YShNZXRhZGF0YSogbWV0YWRhdGEpCiB7CiAgICAgdXNp
bmcgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhOwotICAgIFJlZlB0cjxNZXRhZGF0
YT4gcmVzdWx0ID0gTWV0YWRhdGE6OmNyZWF0ZSgpLnNldE1vZGlmaWNhdGlvblRpbWUobWV0YWRh
dGEtPm1vZGlmaWNhdGlvblRpbWUoKSkuc2V0U2l6ZShtZXRhZGF0YS0+c2l6ZSgpKTsKKyAgICBS
ZWZQdHI8TWV0YWRhdGE+IHJlc3VsdCA9IE1ldGFkYXRhOjpjcmVhdGUoKQorICAgICAgICAuc2V0
TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSgpKQorICAgICAgICAu
c2V0U2l6ZShtZXRhZGF0YS0+c2l6ZSgpKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8
RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1jbGFzcyBSZWFkRmlsZVRhc2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUmVhZEZpbGVUYXNrKTsKK2NsYXNzIEZpbGVDb250ZW50UmVxdWVzdCA6
IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaWxlQ29u
dGVudFJlcXVlc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRGaWxlVGFz
az4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwg
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4dCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RmlsZUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUmVhZEZpbGVUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsLCByZWFkQXNU
ZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RmlsZUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsLCByZWFk
QXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+UmVh
ZEZpbGVUYXNrKCkKKyAgICB2aXJ0dWFsIH5GaWxlQ29udGVudFJlcXVlc3QoKQogICAgIHsKICAg
ICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwLCAwKTsKICAgICB9CkBA
IC00NjAsNyArNDU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyID0g
MDsKICAgICB9CiAKLSAgICBSZWFkRmlsZVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVy
PiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9v
bCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCkKKyAgICBGaWxlQ29udGVudFJlcXVlc3QoUGFzc1JlZlB0cjxGcm9udGVuZFBy
b3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVy
bCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCkKICAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6
OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQogICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRlcihmcm9u
dGVuZFByb3ZpZGVyKQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKQEAgLTQ4Miw3
ICs0NzksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWxlUmVhZGVyPiBtX3JlYWRlcjsKIH07
CiAKLXZvaWQgUmVhZEZpbGVUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQordm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC00OTMsMTQgKzQ5MCwxNCBAQCB2b2lkIFJl
YWRGaWxlVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0RW50cnkpOwotICAgIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFj
dG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEhpdEVy
cm9yKTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZGaWxlQ29u
dGVudFJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNy
ZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAgT3duUHRy
PFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZlVVJJQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCB0eXBlLCBwYXRoKTsKIAogICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwg
ZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29sIFJlYWRGaWxlVGFzazo6
ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZEdl
dEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoZW50cnktPmlzRGlyZWN0b3J5KCkpIHsK
ICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIsIDAsIDAp
OwpAQCAtNTEyLDggKzUwOSw4IEBAIGJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRy
eSogZW50cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJlZlB0cjxGaWxl
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8Rmls
ZUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUpOwotICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVy
RmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEhp
dEVycm9yKTsKKyAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxs
YmFja0Rpc3BhdGNoZXJGYWN0b3J5PEZpbGVDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRmlsZUNv
bnRlbnRSZXF1ZXN0OjpkaWRHZXRGaWxlKTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNy
ZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7CiAgICAgc3RhdGlj
X2Nhc3Q8RmlsZUVudHJ5Kj4oZW50cnkpLT5maWxlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7CiAKICAgICBtX3JlYWRlciA9IEZpbGVSZWFkZXI6OmNyZWF0ZShlbnRyeS0+ZmlsZXN5
c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtNTIyLDcgKzUxOSw3IEBAIGJv
b2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRGaWxlKEZpbGUqIGZpbGUpCitib29s
IEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkR2V0RmlsZShGaWxlKiBmaWxlKQogewogICAgIFJlZlB0
cjxCbG9iPiBibG9iID0gZmlsZS0+c2xpY2UobV9zdGFydCwgbV9lbmQpOwogICAgIG1fcmVhZGVy
LT5zZXRPbmxvYWQodGhpcyk7CkBAIC01MzMsNyArNTMwLDcgQEAgYm9vbCBSZWFkRmlsZVRhc2s6
OmRpZEdldEZpbGUoRmlsZSogZmlsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWFk
RmlsZVRhc2s6OmRpZFJlYWQoKQordm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZFJlYWQoKQog
ewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gbV9yZWFkZXItPmFycmF5QnVmZmVy
UmVzdWx0KCk7CiAKQEAgLTU4MSw3ICs1NzgsNyBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxl
U3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGludCogcmVxdWVzdElkKQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVl
c3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGludCogcmVxdWVzdElkKQogewogICAgIGlmICgh
bV9lbmFibGVkIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpIHsKICAgICAgICAgKmVycm9yID0gIkZp
bGVTeXN0ZW0gYWdlbnQgaXMgbm90IGVuYWJsZWQiOwpAQCAtNTg5LDExICs1ODYsMjIgQEAgdm9p
ZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFMKICAgICB9CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRl
ci0+ZnJvbnRlbmQoKSk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJv
ciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5nZXQoKSk7CisgICAg
aWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxl
U3lzdGVtVHlwZSB0eXBlOworICAgIGlmICh0eXBlU3RyaW5nID09IERPTUZpbGVTeXN0ZW1CYXNl
OjpwZXJzaXN0ZW50UGF0aFByZWZpeCkKKyAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBlUGVy
c2lzdGVudDsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09IERPTUZpbGVTeXN0ZW1CYXNlOjp0
ZW1wb3JhcnlQYXRoUHJlZml4KQorICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jh
cnk7CisgICAgZWxzZSB7CisgICAgICAgICplcnJvciA9ICJJbnZhbGlkIEZpbGVTeXN0ZW0gdHlw
ZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVx
dWVzdElkKys7Ci0gICAgaWYgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCkpKQotICAgICAgICBHZXRGaWxlU3lzdGVt
Um9vdFRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHR5cGUpLT5z
dGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRl
bmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCgqcmVxdWVzdElk
LCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7CisgICAgRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0OjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB0
eXBlKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKQEAgLTYwNCwxMiArNjEyLDEy
IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29udGVu
dChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0CiAgICAgfQogICAgIEFTU0VSVChtX2Zyb250ZW5k
UHJvdmlkZXItPmZyb250ZW5kKCkpOwogCi0gICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVlc3RJ
ZCsrOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZv
ck9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKSkKLSAg
ICAgICAgUmVhZERpcmVjdG9yeVRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1
ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kaXJlY3RvcnlDb250ZW50UmVj
ZWl2ZWQoKnJlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiks
IDApOworICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKKyAgICBEaXJlY3RvcnlD
b250ZW50UmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJs
KS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpCkBAIC02MjAsMTIgKzYyOCwxMiBAQCB2b2lkIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdE1ldGFkYXRhKEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJgogICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5m
cm9udGVuZCgpKTsKIAotICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcodXJsKS5nZXQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCi0gICAgICAgIEdldE1l
dGFkYXRhVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJsKS0+
c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPm1ldGFkYXRhUmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3Rh
dGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDApOworICAgICpyZXF1ZXN0SWQg
PSBtX25leHRSZXF1ZXN0SWQrKzsKKyAgICBNZXRhZGF0YVJlcXVlc3Q6OmNyZWF0ZShtX2Zyb250
ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVDb250
ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4
dCwgY29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBlbmQsIGNvbnN0IFN0cmluZyogY2hhcnNl
dCwgaW50KiByZXF1ZXN0SWQpCkBAIC02MzYsMTIgKzY0NCwxNSBAQCB2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaQogICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgp
KTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsKKwogICAgICpyZXF1ZXN0SWQgPSBtX25leHRS
ZXF1ZXN0SWQrKzsKIAotICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKSkKLSAgICAgICAgUmVhZEZpbGVUYXNr
OjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB1cmwsIHJlYWRBc1RleHQs
IHN0YXJ0ID8gKnN0YXJ0IDogMCwgZW5kID8gKmVuZCA6IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9u
ZyBsb25nPjo6bWF4KCksIGNoYXJzZXQgPyAqY2hhcnNldCA6ICIiKS0+c3RhcnQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZy
b250ZW5kKCktPmZpbGVDb250ZW50UmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50
PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDAsIDApOworICAgIGxvbmcgbG9uZyBzdGFydFBvc2l0
aW9uID0gc3RhcnQgPyAqc3RhcnQgOiAwOworICAgIGxvbmcgbG9uZyBlbmRQb3NpdGlvbiA9IGVu
ZCA/ICplbmQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpOworICAgIEZp
bGVDb250ZW50UmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwg
dXJsLCByZWFkQXNUZXh0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgY2hhcnNldCA/ICpj
aGFyc2V0IDogIiIpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkKQEAgLTY3NywxMiArNjg4LDE0IEBAIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQodGhp
cyk7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojphc3Nl
cnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKEVycm9yU3RyaW5nKiBlcnJvciwgU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFn
ZW50LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKQogICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpOwogICAgIH0KKworICAgICplcnJvciA9
ICJObyBmcmFtZSBpcyBhdmFpbGFibGUgZm9yIHRoZSByZXF1ZXN0IjsKICAgICByZXR1cm4gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5oCmluZGV4IDU2YTI5MjYwMjgxMGE2NDFjMDJjYjAyZjk1MzczZjZjM2YxZmYxZjUu
LmY3MzUwZDQxNjM1YmJiNmY5NGZiYzJjMzI4YmFkNGI1NzMxZWI5NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKQEAgLTM0
LDE4ICszNCwxNCBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShGSUxFX1NZU1RF
TSkKIAogI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NRmlsZVN5
c3RlbTsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50
OwotY2xhc3MgSW5zcGVjdG9yU3RhdGU7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCkBAIC01
OSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQqIHJlcXVl
c3RJZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJp
bmcsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERp
cmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1
ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TWV0YWRhdGEoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQqIGVu
ZCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0LCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CkBAIC03
MCw3ICs2Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3Rv
clN0YXRlKik7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGFzc2VydFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oRXJyb3JTdHJpbmcqLCBT
ZWN1cml0eU9yaWdpbiopOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsK
ICAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5q
cwppbmRleCBmYzE3MTY2NjY0MWQ5YzQxMDBiZTFiM2ZlMTA4NDExNDY5Y2U1YjdhLi45NjQwMmJk
OWI4YzlmYWVkMzNkM2NmY2Q2ZGZkZWZkYTUwMzRlZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAtNDY4LDcg
KzQ2OCw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
ID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gdHlwZQotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBGaWxlU3lz
dGVtQWdlbnQuRW50cnkpPX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJl
ciwgRmlsZVN5c3RlbUFnZW50LkVudHJ5PSk9fSBjYWxsYmFjawogICAgICAqLwogICAgIHJlcXVl
c3RGaWxlU3lzdGVtUm9vdDogZnVuY3Rpb24ob3JpZ2luLCB0eXBlLCBjYWxsYmFjaykKICAgICB7
CkBAIC00NzcsNyArNDc3LDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdl
ci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVycm9y
LCByZXF1ZXN0SWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VS
SVRZX0VSUik7CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVz
dElkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIH0KICAgICB9LApAQCAt
NTA3LDcgKzUwOSw5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJv
dG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVx
dWVzdElkKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5TRUNVUklUWV9F
UlIpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0b3JlW3JlcXVlc3RJZF0g
PSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwogICAgICAgICB9CiAgICAgfSwKQEAgLTUzNyw3
ICs1NDEsOSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiByZXF1ZXN0QWNjZXB0ZWQoZXJyb3IsIHJlcXVlc3RJ
ZCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAgICAgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhGaWxlRXJyb3IuU0VDVVJJVFlfRVJSKTsK
KyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzdG9yZVtyZXF1ZXN0SWRdID0gY2Fs
bGJhY2sgfHwgZnVuY3Rpb24oKSB7fTsKICAgICAgICAgfQogICAgIH0sCkBAIC01NjYsNyArNTcy
LDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVycm9yLCByZXF1ZXN0SWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7CisgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNr
IHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIH0KICAgICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViNzdhYjdlZGE5
MmJjNWQyMzk1ZDRiYzBkYjYwNzZiNDRkM2E1OTIuLjVmZDQzZWE3ODYwNWI3ZmUyMWQ2ZGUyYjFi
ZTI4ZGVjNzFkODBlNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNy0xMCAgVGFpanUg
VHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xl
YW4gdXAgRmlsZVN5c3RlbSByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgRmlsZVN5c3RlbSByZWxhdGVkIGNvZGUgaW4g
SW5zcGVjdG9yIGFzIGZvbGxvd3M6CisgICAgICAgIC0gQ2xlYW4gdXAgbGF5b3V0IHRlc3RzIGFu
ZCBhZGQgdGVzdCBjYXNlIGZvciBlcnJvciBjYXNlLAorICAgICAgICAtIEZpeCBlcnJvciBoYW5k
bGluZyBvbiByZXF1ZXN0LAorICAgICAgICAtIHMvR2V0RmlsZVN5c3RlbVJvb3RUYXNrL0ZpbGVT
eXN0ZW1Sb290UmVxdWVzdC9nCisgICAgICAgIC0gcy9SZWFkRGlyZWN0b3J5VGFzay9EaXJlY3Rv
cnlDb250ZW50UmVxdWVzdC9nCisgICAgICAgIC0gcy9SZWFkRmlsZVRhc2svRmlsZUNvbnRlbnRS
ZXF1ZXN0L2cKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmls
ZXN5c3RlbS10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdC5JbnNw
ZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQpOgorICAgICAgICAoaW5p
dGlhbGl6ZV9GaWxlU3lzdGVtVGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50
UmVxdWVzdFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3Bl
Y3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXpl
X0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3Vs
dCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0KToKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhw
ZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50Lmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L3JlYWQtZGlyZWN0b3J5Lmh0bWwuIENoYW5nZWQgdGVzdCBzdGVwcyB0byB1bm5hbWVkIGZ1bmN0
aW9uIGFycmF5LiBBZGQgZmFpbGNhc2UgdGVzdC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50LWV4cGVjdGVkLnR4dDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1m
aWxlLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sLiBDaGFuZ2VkIHRl
c3Qgc3RlcHMgdG8gdW5uYW1lZCBmdW5jdGlvbiBhcnJheS4gQWRkIGZhaWxjYXNlIHRlc3QuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0
ZW0tcm9vdC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLWV4cGVjdGVkLnR4dC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1y
b290Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbC4gQ2hhbmdlZCB0ZXN0IHN0ZXBzIHRv
IHVubmFtZWQgZnVuY3Rpb24gYXJyYXkuIEFkZCBmYWlsY2FzZSB0ZXN0LgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS1leHBlY3RlZC50
eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2dldC1tZXRhZGF0YS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1s
LiBDaGFuZ2VkIHRlc3Qgc3RlcHMgdG8gdW5uYW1lZCBmdW5jdGlvbiBhcnJheS4gQWRkIGZhaWxj
YXNlIHRlc3QuCisKIDIwMTItMDctMTAgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUg
ZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKaW5kZXgg
NGVkNmNlNThmZDcyNDUxYmI4NWNjNTM4MWIyNGY1MDBhZjQ2ZWIxZS4uNGExYTRjMDRmNTI3YWYz
MzExZWE4YTZmZGI5ZmI4NGJmM2U1Y2Y2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMK
QEAgLTcwLDEyICs3MCwyMyBAQCB2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0
aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJGaWxlU3lz
dGVtKCIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsK
ICAgICB9OwogCi0gICAgSW5zcGVjdG9yVGVzdC5kdW1wUmVhZERpcmVjdG9yeVJlc3VsdCA9IGZ1
bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lz
dGVtUm9vdFJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50
cnkpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAi
ICsgZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGJhY2tlbmRSb290RW50cnkpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiYmFja2VuZFJvb3RFbnRyeS51cmw6ICIgKyBiYWNr
ZW5kUm9vdEVudHJ5LnVybCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJiYWNrZW5kUm9vdEVudHJ5OiAobnVsbCkiKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBE
aXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmll
cykKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIg
KyBlcnJvckNvZGUpOwogCiAgICAgICAgIGlmICghZW50cmllcykgewogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoImVudHJpZXM6IChudWxsKSIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTg1LDYgKzk2LDcgQEAgdmFyIGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QgPSBmdW5j
dGlvbigpCiAgICAgICAgICAgZm9yICh2YXIgaiBpbiBlbnRyaWVzW2ldKQogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgaiArICI6ICIgKyBlbnRyaWVzW2ldW2pd
KTsKICAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAg
fTsKIAogICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdCA9IGZ1bmN0
aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCkBAIC05Nyw2ICsxMDksMjAgQEAgdmFyIGluaXRpYWxp
emVfRmlsZVN5c3RlbVRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibWV0YWRhdGE6IChudWxsKSIpOwogICAgICAg
ICB9CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICB9OworCisgICAg
SW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJy
b3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7CisKKyAgICAgICAgaWYgKGNvbnRl
bnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudDogXCIiICsg
Y29udGVudCArICJcIiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiY29udGVudDogKG51bGwpIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImNoYXJzZXQ6ICIgKyBjaGFyc2V0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIiIpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1maWxl
c3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
NzNmZmY1ZjA3Y2NiMjFhOTEwYTllYmViMGJhNWE4ODNiYjQyNjYyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3RzIGdldEZpbGVTeXN0ZW1Sb290LgotCi1QQVNT
OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvIGlzIGZvdW5kLgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L2dldC1maWxlc3lzdGVtLXJvb3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjNDJiY2Q2MGE2MjVhMTdlN2RlNTkwNzNkMzhlNDQxN2FhZWEyMmQxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LWZpbGVzeXN0ZW0tcm9vdC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PG1ldGEgY2hh
cnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsK
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciByZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgewotICAg
ICAgICAvLyBGSVhNRTogQWRkIEFQSSB0byBkZWxldGUgYSBGaWxlU3lzdGVtIGNvbXBsZXRlbHkg
YW5kIHRlc3QgZ2V0RmlsZVN5c3RlbVJvb3QgZm9yCi0gICAgICAgIC8vIHVuaW5pdGlhbGl6ZWQg
RmlsZVN5c3RlbS4KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZSIsIHN0
ZXAyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAgICByZXF1
ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIs
ICJ0ZW1wb3JhcnkiLCBzdGVwMyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDMoZXJyb3JD
b2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgIHsKLSAgICAgICAgaWYgKGVycm9yQ29kZSA9PT0g
MCAmJiBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlBBU1M6ICIgKyBiYWNrZW5kUm9vdEVudHJ5LnVybCArICIgaXMgZm91bmQuIik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMOiBlcnJv
ckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKLQotICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmls
ZVN5c3RlbShzdGVwNCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDQoZXJyb3JDb2RlLCBm
aWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
LSAgICB9Ci19Ci0KLTwvc2NyaXB0PgotPHA+VGVzdHMgZ2V0RmlsZVN5c3RlbVJvb3QuPC9wPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9n
ZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyYzc3ZmJmYzE2MjdmZTNmOTY4OTAyNTJiZmM5NmQ5YWQ2ZTk2NjAwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVRlc3RzIGdldE1ldGFkYXRhLgotCi1l
cnJvckNvZGU6IDAKLW1ldGFkYXRhOgotICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQotICBz
aXplOiA0Ci1lcnJvckNvZGU6IDAKLW1ldGFkYXRhOgotICBtb2RpZmljYXRpb25UaW1lOiAoZXhp
c3RzKQotICBzaXplOiAwCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2MmE2NmU5YzIwODMyYTdjMzU0OTcxNTFkMTQwZTk0YzY0YTc3Mjkx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48bWV0YSBjaGFyc2V0
PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwMSk7Ci0KLSAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAg
ewotICAgICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2UiLCAiZnVnYSIsIHN0ZXAy
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAgICBmaWxlU3lz
dGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHN0ZXAzKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBzdGVwMyhlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAg
ICBzdGVwNCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA0KCkKLSAgICB7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvcGl5byIsIHN0ZXA1KTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBzdGVwNSgpCi0gICAgewotICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90
ZW1wb3JhcnkvcGl5byIsIHN0ZXA2KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNihlcnJv
ckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRh
dGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RlcDco
ZXJyb3JDb2RlLCBmaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgotPHA+VGVzdHMgZ2V0TWV0YWRhdGEu
PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk5YWE1NjMzMzY5MmMxNDE3OGY0ODY4MTNjZTg1NjY5
ZTFmNDcxMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRlc3RzIHJlYWRE
aXJlY3RvcnkuCi0KLWVycm9yQ29kZTogMAotZW50cmllczoKLSAgMDoKLSAgICB1cmw6IGZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL3BpeW8uaHRtbAotICAg
IG5hbWU6IHBpeW8uaHRtbAotICAgIGlzRGlyZWN0b3J5OiBmYWxzZQotICAgIGlzVGV4dEZpbGU6
IHRydWUKLSAgICBtaW1lVHlwZTogdGV4dC9odG1sCi0gICAgcmVzb3VyY2VUeXBlOiBEb2N1bWVu
dAotICAxOgotICAgIHVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5L2hvZ2UvZnVnYQotICAgIG5hbWU6IGZ1Z2EKLSAgICBpc0RpcmVjdG9yeTogdHJ1ZQotZXJy
b3JDb2RlOiAxCi1lbnRyaWVzOiAobnVsbCkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGFiZmZlOGFjYjQ5MjZjYWI1YmZkNDRl
MjhkYmIzY2JmYTQyMzlkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1k
aXJlY3RvcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVk
IiwgcnVuVGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVxdWVzdE1hbmFnZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOwotCi0gICAgSW5z
cGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOwotCi0gICAgZnVuY3Rpb24gc3RlcDEo
KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlIiwg
c3RlcDIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZS9mdWdhIiwgc3RlcDMpOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY3Jl
YXRlRmlsZSgiL2hvZ2UvcGl5by5odG1sIiwgc3RlcDQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKLSAgICB7Ci0gICAgICAgIHJlcXVlc3RNYW5hZ2VyLnJlcXVlc3REaXJlY3RvcnlD
b250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIs
IHN0ZXA1KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVwNShlcnJvckNvZGUsIGVudHJpZXMp
Ci0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZWFkRGlyZWN0b3J5UmVzdWx0KGVy
cm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAgIHJlcXVlc3RNYW5hZ2VyLnJlcXVlc3REaXJlY3Rv
cnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZm9v
Iiwgc3RlcDYpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA2KGVycm9yQ29kZSwgZW50cmll
cykgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSZWFkRGlyZWN0b3J5UmVzdWx0KGVycm9y
Q29kZSwgZW50cmllcyk7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0o
c3RlcDcpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0ZXA3KCkKLSAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTxwPlRl
c3RzIHJlYWREaXJlY3RvcnkuPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzMwYmJlMmVjODdhMzFkNmE5M2YwNDA0
MWExYTBlZTY5NTczMTZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1m
aWxlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotVGVzdHMgcmVx
dWVzdEZpbGVDb250ZW50LgotCi1lcnJvckNvZGUgPSAwCi1jb250ZW50ID0gIlBBU1MiCi1jaGFy
c2V0ID0gVVRGLTgKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIwNjEyZjQzN2QyMmM3ZDA1YmQyZmUyYjI4MTUzZjMxYTFmZjNhMGMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDU1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVxdWVzdE1hbmFnZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOwotICAgIEluc3BlY3RvclRlc3QuY2xl
YXJGaWxlU3lzdGVtKHN0ZXAxKTsKLQotICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZSIsIHN0ZXAyKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0Lndy
aXRlRmlsZSgiL2hvZ2UvZnVnYS50eHQiLCAicGlQQVNTeW8iLCBzdGVwMyk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gc3RlcDMoKQotICAgIHsKLSAgICAgICAgcmVxdWVzdE1hbmFnZXIucmVxdWVz
dEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
aG9nZS9mdWdhLnR4dCIsIHRydWUsIDIsIDYsICJVVEYtOCIsIHN0ZXA0KTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBzdGVwNChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlID0gIiArIGVycm9yQ29kZSk7
Ci0gICAgICAgIGlmIChjb250ZW50KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImNvbnRlbnQgPSBcIiIgKyBjb250ZW50ICsgIlwiIik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb250ZW50ID0gKG51bGwpIik7Ci0KLSAg
ICAgICAgaWYgKGNoYXJzZXQpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Y2hhcnNldCA9ICIgKyBjaGFyc2V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoImNoYXJzZXQgPSAobnVsbCkiKTsKLQotICAgICAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVwNSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3Rl
cDUoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgcmVxdWVzdEZpbGVDb250
ZW50LjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
cXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNTJiMzMz
YWUwMDBlZDZjNTAxZmEyNDQxMzllZTE5MDRhY2VmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5
LWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3RzIHJlcXVlc3REaXJl
Y3RvcnlDb250ZW50IGNvbW1hbmQuCisKK2Vycm9yQ29kZTogMAorZW50cmllczoKKyAgMDoKKyAg
ICB1cmw6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL3Bp
eW8uaHRtbAorICAgIG5hbWU6IHBpeW8uaHRtbAorICAgIGlzRGlyZWN0b3J5OiBmYWxzZQorICAg
IGlzVGV4dEZpbGU6IHRydWUKKyAgICBtaW1lVHlwZTogdGV4dC9odG1sCisgICAgcmVzb3VyY2VU
eXBlOiBEb2N1bWVudAorICAxOgorICAgIHVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYQorICAgIG5hbWU6IGZ1Z2EKKyAgICBpc0RpcmVjdG9y
eTogdHJ1ZQorCitlcnJvckNvZGU6IDEKK2VudHJpZXM6IChudWxsKQorCitlcnJvckNvZGU6IDIK
K2VudHJpZXM6IChudWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25lLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0
b3J5LWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0OGUyZWM0
YTMxMzVlN2I5ODhiNTMxZDU3NDU1NDNmOGVmMjA1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5
LWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExv
YWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1S
ZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2Vy
KCk7CisKKyAgICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlIiwgdGVz
dFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UvZnVn
YSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZS9w
aXlvLmh0bWwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5y
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAg
ICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwg
ZW50cmllcyk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdERp
cmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFy
eS9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
bihlcnJvckNvZGUsIGVudHJpZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7
CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdERpcmVjdG9yeUNv
bnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3RlbXBvcmFyeS8iLCB0ZXN0U3Rl
cC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVu
dHJpZXMpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRS
ZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0
LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RGlyZWN0b3J5Q29udGVudCBjb21tYW5kLjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29u
dGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3MDI2YjI0ODYzZTgwZWVmYzgxMGNlNWU1
MjQxYzY2YWJmMTM3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjAgQEAKK1Rlc3RzIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kLgorCitlcnJv
ckNvZGU6IDAKK2NvbnRlbnQ6ICJQQVNTIgorY2hhcnNldDogVVRGLTgKKworZXJyb3JDb2RlOiAx
MQorY29udGVudDogKG51bGwpCitjaGFyc2V0OiB1bmRlZmluZWQKKworZXJyb3JDb2RlOiAxCitj
b250ZW50OiAobnVsbCkKK2NoYXJzZXQ6IHVuZGVmaW5lZAorCitlcnJvckNvZGU6IDIKK2NvbnRl
bnQ6IChudWxsKQorY2hhcnNldDogdW5kZWZpbmVkCisKK0FsbCB0ZXN0cyBoYXZlIGRvbmUuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmU3
Y2VhMmNkYzYwMjQzY2UwODNlZjNmZTQyMTZlMDhiOTJjZDc0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUt
Y29udGVudC5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9h
ZGVkIiwgcnVuVGVzdCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgZmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIo
KTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHtJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
O30sIDEwMDApOworICAgIHZhciB0ZXN0U3RlcCA9IFsKKyAgICAgICAgZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2Ui
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZS9mdWdh
LnR4dCIsICJwaVBBU1N5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RN
YW5hZ2VyLnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYS50eHQiLCB0cnVlLCAyLCA2LCAiVVRGLTgiLCB0ZXN0U3Rl
cC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNv
bnRlbnQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwor
ICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29udGVudCgi
ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0cnVlLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0
KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC90ZW1wb3JhcnkvZm9vIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICIiLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNv
ZGUsIGNvbnRlbnQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJz
ZXQpOworICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29u
dGVudCgiZmlsZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5L2Zvby50eHQiLCB0
cnVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0
UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lz
dGVtLXJvb3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NTAzNDg3MTY5ZTU4NTFjZTk1N2Rk
MTg4MWViODRhNmI1NDVmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyByZXF1ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFu
ZC4KKworZXJyb3JDb2RlOiAwCitiYWNrZW5kUm9vdEVudHJ5LnVybDogZmlsZXN5c3RlbTpodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5LworCitlcnJvckNvZGU6IDIKK2JhY2tlbmRSb290
RW50cnk6IChudWxsKQorCitlcnJvckNvZGU6IDIKK2JhY2tlbmRSb290RW50cnk6IChudWxsKQor
CitBbGwgdGVzdHMgaGF2ZSBkb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMyYTdjODgxYzdlMDY2NmQ0MjA4YzM2MGI1MTY2
ODY0YTJlMjJkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbApAQCAtMCwwICsx
LDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2YXIgdGVzdFN0ZXAg
PSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6
IEFkZCBBUEkgdG8gZGVsZXRlIGEgRmlsZVN5c3RlbSBjb21wbGV0ZWx5IGFuZCB0ZXN0IGdldEZp
bGVTeXN0ZW1Sb290IGZvcgorICAgICAgICAgICAgLy8gdW5pbml0aWFsaXplZCBGaWxlU3lzdGVt
LgorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZSIsIHRlc3RTdGVw
LnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lzdGVtUm9v
dCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkp
OworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RF
bnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3Rl
bVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CisgICAgICAg
ICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiLCAiZml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVx
dWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOworICAgICAgICAgICAgZmls
ZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovL2V4YW1w
bGUuY29tIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAgICAgICAgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0
KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAg
ICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFuZC48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZDg2YjI1NDk3MTJjYzMwMmIzYmQ0NzRhN2U1ZTlmODk3ZjdjZmIw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitU
ZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC4KKworZXJyb3JDb2RlOiAwCittZXRhZGF0YToK
KyAgbW9kaWZpY2F0aW9uVGltZTogKGV4aXN0cykKKyAgc2l6ZTogNAorCitlcnJvckNvZGU6IDAK
K21ldGFkYXRhOgorICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQorICBzaXplOiAwCisKK2Vy
cm9yQ29kZTogMQorbWV0YWRhdGE6IChudWxsKQorCitBbGwgdGVzdHMgaGF2ZSBkb25lLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
cXVlc3QtbWV0YWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNzQwNzgxYjYyNWEy
YWRlNThhNzI3ZTg4NjE0MmY4MDMwNzk4ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbApA
QCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3Qp
OworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9
IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICB2YXIg
dGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC53cml0ZUZpbGUoIi9ob2dlIiwgImZ1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRhdGEoImZpbGVzeXN0ZW06
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7
CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVz
dWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVh
dGVEaXJlY3RvcnkoIi9waXlvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFk
YXRhKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRh
dGEoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUs
IG1ldGFkYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRh
ZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBtZXRhZGF0YSk7CisgICAgICAgICAgICBmaWxl
U3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly9l
eGFtcGxlLmNvbS90ZW1wb3JhcnkvYmFyIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="160106"
          type_id="1"
          status="+"
          setter="vsevik"
    />
    <flag name="commit-queue"
          id="160107"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>