<?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>64732</bug_id>
          
          <creation_ts>2011-07-18 10:46:42 -0700</creation_ts>
          <short_desc>Refactor automatically generated JS DOM bindings to replace operator new with static create methods</short_desc>
          <delta_ts>2011-07-26 14:56:33 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64999</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438567</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-18 10:46:42 -0700</bug_when>
    <thetext>This is the second of a series of bugs to refactor JSC and its related DOM bindings to use static create methods when creating heap-allocated JS objects.  The goal of this bug is to replace all instances of JSCell::operator new within the generated JS DOM bindings in WebCore with the new static create methods.

See also: https://bugs.webkit.org/show_bug.cgi?id=64466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439412</commentid>
    <comment_count>1</comment_count>
      <attachid>101375</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-19 13:41:49 -0700</bug_when>
    <thetext>Created attachment 101375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439420</commentid>
    <comment_count>2</comment_count>
      <attachid>101375</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-19 13:48:37 -0700</bug_when>
    <thetext>Comment on attachment 101375
Patch

When changing bindings, you should run the command line tool named run-bindings-tests. It will show you the generated code so you can proofread it. Then you should use run-bindings-tests --reset-results to overwrite the results and include the changes to expected results in your patch.

Otherwise, looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439423</commentid>
    <comment_count>3</comment_count>
      <attachid>101379</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-19 13:51:55 -0700</bug_when>
    <thetext>Created attachment 101379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439426</commentid>
    <comment_count>4</comment_count>
      <attachid>101379</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-19 13:55:31 -0700</bug_when>
    <thetext>Comment on attachment 101379
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1492
&gt; +    if ($interfaceName eq &quot;DOMWindow&quot;) {
&gt; +        push(@implContent, &quot;$className* ${className}::create(JSGlobalData&amp; globalData, Structure* structure, PassRefPtr&lt;$implType&gt; impl, JSDOMWindowShell* windowShell)\n&quot;);
&gt; +        push(@implContent, &quot;{\n&quot;);
&gt; +        push(@implContent, &quot;    return new (allocateCell&lt;$className&gt;(globalData.heap)) ${className}(globalData, structure, impl, windowShell);\n&quot;);
&gt; +        push(@implContent, &quot;}\n\n&quot;);
&gt; +    } elsif ($dataNode-&gt;extendedAttributes-&gt;{&quot;IsWorkerContext&quot;}) {
&gt; +        push(@implContent, &quot;$className* ${className}::create(JSGlobalData&amp; globalData, Structure* structure, PassRefPtr&lt;$implType&gt; impl)\n&quot;);
&gt; +        push(@implContent, &quot;{\n&quot;);
&gt; +        push(@implContent, &quot;    return new (allocateCell&lt;$className&gt;(globalData.heap)) ${className}(globalData, structure, impl);\n&quot;);
&gt; +        push(@implContent, &quot;}\n\n&quot;);
&gt; +    } else {
&gt; +        push(@implContent, &quot;$className* ${className}::create(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr&lt;$implType&gt; impl)\n&quot;);
&gt; +        push(@implContent, &quot;{\n&quot;);
&gt; +        push(@implContent, &quot;    return new (allocateCell&lt;$className&gt;(globalObject-&gt;globalData().heap)) ${className}(structure, globalObject, impl);\n&quot;);
&gt; +        push(@implContent, &quot;}\n\n&quot;);
&gt; +    }

I wonder if any of these should be inlined, and thus in the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439438</commentid>
    <comment_count>5</comment_count>
      <attachid>101379</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-19 14:10:15 -0700</bug_when>
    <thetext>Comment on attachment 101379
Patch

Attachment 101379 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9155296</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439553</commentid>
    <comment_count>6</comment_count>
      <attachid>101408</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-19 16:37:43 -0700</bug_when>
    <thetext>Created attachment 101408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439554</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-19 16:38:04 -0700</bug_when>
    <thetext>Ignore the patch, I didn&apos;t fix the qt errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439557</commentid>
    <comment_count>8</comment_count>
      <attachid>101408</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-19 16:50:19 -0700</bug_when>
    <thetext>Comment on attachment 101408
Patch

Attachment 101408 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9209029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439572</commentid>
    <comment_count>9</comment_count>
      <attachid>101408</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-19 17:30:05 -0700</bug_when>
    <thetext>Comment on attachment 101408
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1520
&gt; +    #if ($interfaceName eq &quot;DOMWindow&quot;) {
&gt; +    #    push(@implContent, &quot;$className* ${className}::create(JSGlobalData&amp; globalData, Structure* structure, PassRefPtr&lt;$implType&gt; impl, JSDOMWindowShell* windowShell)\n&quot;);
&gt; +    #    push(@implContent, &quot;{\n&quot;);
&gt; +    #    push(@implContent, &quot;    return new (allocateCell&lt;$className&gt;(globalData.heap)) ${className}(globalData, structure, impl, windowShell);\n&quot;);
&gt; +    #    push(@implContent, &quot;}\n\n&quot;);
&gt; +    #} elsif ($dataNode-&gt;extendedAttributes-&gt;{&quot;IsWorkerContext&quot;}) {
&gt; +    #    push(@implContent, &quot;$className* ${className}::create(JSGlobalData&amp; globalData, Structure* structure, PassRefPtr&lt;$implType&gt; impl)\n&quot;);
&gt; +    #    push(@implContent, &quot;{\n&quot;);
&gt; +    #    push(@implContent, &quot;    return new (allocateCell&lt;$className&gt;(globalData.heap)) ${className}(globalData, structure, impl);\n&quot;);
&gt; +    #    push(@implContent, &quot;}\n\n&quot;);
&gt; +    #} else {
&gt; +    #    push(@implContent, &quot;$className* ${className}::create(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr&lt;$implType&gt; impl)\n&quot;);
&gt; +    #    push(@implContent, &quot;{\n&quot;);
&gt; +    #    push(@implContent, &quot;    return new (allocateCell&lt;$className&gt;(globalObject-&gt;globalData().heap)) ${className}(structure, globalObject, impl);\n&quot;);
&gt; +    #    push(@implContent, &quot;}\n\n&quot;);
&gt; +    #}

This should be deleted, not just commented out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439602</commentid>
    <comment_count>10</comment_count>
      <attachid>101408</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-07-19 19:22:18 -0700</bug_when>
    <thetext>Comment on attachment 101408
Patch

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

Please fix the Qt and windows builds.

&gt; Source/JavaScriptCore/runtime/JSByteArray.h:82
&gt; +        static JSByteArray* create(ExecState* exec, Structure* structure, WTF::ByteArray* storage)

The WTF:: should not be necessary here.

&gt; Source/WebCore/bindings/js/JSAudioConstructor.h:39
&gt;      class JSAudioConstructor : public DOMConstructorWithDocument {
&gt; -    public:
&gt; +    private:
&gt;          JSAudioConstructor(JSC::ExecState*, JSC::Structure*, JSDOMGlobalObject*);

In general, we like putting the private section below the public section. I would understand if you are trying to minimize the change to the functional aspect, but please clean this up afterwords.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440715</commentid>
    <comment_count>11</comment_count>
      <attachid>101665</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-21 16:43:34 -0700</bug_when>
    <thetext>Created attachment 101665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440717</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-21 16:48:54 -0700</bug_when>
    <thetext>Notes on the patch:

I changed the perl script to generate the static create methods in the header to better facilitate inlining.

I had some issues getting the patch to link on Windows due to what I *think* was the result of Visual Studio inlining the static function call in JSByteArray.h and not being able to find the resulting call to private constructor.  After fiddling around with the JavaScriptCore symbol export file for a while, I moved the static create method body out of the header so as to prevent inlining, and the problem disappeared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441939</commentid>
    <comment_count>13</comment_count>
      <attachid>101665</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 15:56:55 -0700</bug_when>
    <thetext>Comment on attachment 101665
Patch

Rejecting attachment 101665 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
8554cd8b75b70c087929c437c4c58e84135981fe
r91714 = dbcecc31ac7380ffb1cac39b7023aecc5877afbb
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ 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/9244199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442290</commentid>
    <comment_count>14</comment_count>
      <attachid>102013</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-26 08:42:35 -0700</bug_when>
    <thetext>Created attachment 102013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442292</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-26 08:44:20 -0700</bug_when>
    <thetext>I didn&apos;t make any changes to the patch except for in the WebCore ChangeLog.  I couldn&apos;t reproduce the test failures, so I figured I&apos;d let the bots do my work for me :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442554</commentid>
    <comment_count>16</comment_count>
      <attachid>102013</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 14:56:27 -0700</bug_when>
    <thetext>Comment on attachment 102013
Patch

Clearing flags on attachment: 102013

Committed r91790: &lt;http://trac.webkit.org/changeset/91790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442555</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 14:56:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101375</attachid>
            <date>2011-07-19 13:41:49 -0700</date>
            <delta_ts>2011-07-19 13:51:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64732-20110719134151.patch</filename>
            <type>text/plain</type>
            <size>31961</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDctMTkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWZhY3RvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00gYmluZGluZ3Mg
dG8gcmVwbGFjZSBvcGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjaW5nIHRoZSBw
dWJsaWMgY29uc3RydWN0b3JzIGluIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00g
YmluZGluZ3Mgd2l0aCBzdGF0aWMgCisgICAgICAgIGNyZWF0ZSBtZXRob2RzLiAgSlNCeXRlQXJy
YXkgaXMgdXNlZCBieSBzZXZlcmFsIG9mIHRoZXNlIGJpbmRpbmdzIGluIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5
OjpjcmVhdGUpOgorCiAyMDExLTA3LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gV2ViS2l0IGFsbG9jYXRlcyBnaWdhYnl0ZXMgb2Yg
bWVtb3J5IHdoZW4gZG9pbmcgcmVwZWF0ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gOTEy
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAKKyAgICBwcml2YXRlOgog
ICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBXVEY6OkJ5dGVBcnJh
eSogc3RvcmFnZSk7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEpTQnl0
ZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV1RG
OjpCeXRlQXJyYXkqIHN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4
ZWMsIHN0cnVjdHVyZSwgc3RvcmFnZSk7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUs
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5MTI5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTA3LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgSlMgRE9NIGJpbmRpbmdzIHRvIHJlcGxhY2Ugb3BlcmF0b3IgbmV3IHdpdGggc3Rh
dGljIGNyZWF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgIFJlcGxhY2luZyB0aGUg
cHVibGljIGNvbnN0cnVjdG9ycyBpbiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgSlMgRE9N
IGJpbmRpbmdzIGluIENvZGVHZW5lcmF0b3JKUy5wbQorICAgICAgICB3aXRoIHN0YXRpYyBjcmVh
dGUgbWV0aG9kcy4gIFRoaXMgaXMgcGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyBlZmZvcnQg
dG8gdXNlIHN0YXRpYyBjcmVhdGUgbWV0aG9kcworICAgICAgICBpbiBmYXZvciBvZiBwdWJsaWMg
Y29uc3RydWN0b3JzIHRocm91Z2hvdXQgSlNDLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNB
dWRpb0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpoaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
Ojpsb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3B0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9K
YXZhQXJyYXlKU0MuY3BwOgorICAgICAgICAoSmF2YUFycmF5Ojpjb252ZXJ0Sk9iamVjdFRvQXJy
YXkpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Okluc3RhbmNlOjpuZXdSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX3V0aWxpdHkubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFFWYXJpYW50VG9WYWx1ZSk6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVh
dGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKwogMjAxMS0wNy0xOSAgTWlobmVhIE92
aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc11QYXJzZSAt
d2Via2l0LXJlZ2lvbi1vdmVyZmxvdyBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxMjcxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDkgKzM1LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBKU0F1ZGlvQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQg
ewotICAgIHB1YmxpYzoKKyAgICBwcml2YXRlOgogICAgICAgICBKU0F1ZGlvQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAK
KyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBKU0F1ZGlvQ29uc3RydWN0b3IqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNBdWRpb0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNBdWRpb0NvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChu
b2RlKTsKICAgICAgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVj
KSwgbm9kZSkpOwotICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBuZXcgKGV4ZWMpIFdy
YXBwZXJDbGFzcyhnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVjLCBnbG9iYWxPYmpl
Y3QpLCBnbG9iYWxPYmplY3QsIG5vZGUpOworICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIg
PSBXcmFwcGVyQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVj
LCBnbG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QsIG5vZGUpOwogICAgICAgICAvLyBGSVhNRTog
VGhlIGVudGlyZSBmdW5jdGlvbiBjYW4gYmUgcmVtb3ZlZCwgb25jZSB3ZSBmaXggY2FjaGluZy4K
ICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBhIG9uZS1vZmYgaGFjayB0byBtYWtlIE5vZGVz
IGNhY2hlIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0LgogICAgICAgICBjYWNoZVdyYXBwZXIo
Y3VycmVudFdvcmxkKGV4ZWMpLCBub2RlLCB3cmFwcGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24gOTEyNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAg
ICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVjdG9y
Q2xhc3M6OnNfaW5mbykuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7Ci0g
ICAgICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBDb25zdHJ1Y3Rv
ckNsYXNzKGV4ZWMsIENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIEpTQzo6SlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKGV4ZWMsIENvbnN0cnVjdG9y
Q2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNz
OjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVt
cDsKICAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkt
PmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJz
dC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw3ICs0MjgsNyBA
QCBKU1ZhbHVlIEpTRE9NV2luZG93OjpoaXN0b3J5KEV4ZWNTdGF0ZSogCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogCiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGNvbnN0X2Nhc3Q8SlNET01X
aW5kb3cqPih0aGlzKTsKLSAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IG5ldyAoZXhlYykgSlNI
aXN0b3J5KGdldERPTVN0cnVjdHVyZTxKU0hpc3Rvcnk+KGV4ZWMsIHdpbmRvdyksIHdpbmRvdywg
aGlzdG9yeSk7CisgICAgSlNIaXN0b3J5KiBqc0hpc3RvcnkgPSBKU0hpc3Rvcnk6OmNyZWF0ZShn
ZXRET01TdHJ1Y3R1cmU8SlNIaXN0b3J5PihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGhpc3Rvcnkp
OwogICAgIGNhY2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGhpc3RvcnksIGpzSGlzdG9y
eSk7CiAgICAgcmV0dXJuIGpzSGlzdG9yeTsKIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQCBKU1ZhbHVl
IEpTRE9NV2luZG93Ojpsb2NhdGlvbihFeGVjU3RhdGUqCiAgICAgICAgIHJldHVybiB3cmFwcGVy
OwogCiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGNvbnN0X2Nhc3Q8SlNET01XaW5kb3cqPih0
aGlzKTsKLSAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gbmV3IChleGVjKSBKU0xvY2F0aW9u
KGdldERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGxvY2F0
aW9uKTsKKyAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gSlNMb2NhdGlvbjo6Y3JlYXRlKGdl
dERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGxvY2F0aW9u
KTsKICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbiwganNMb2Nh
dGlvbik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gOTEyNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsMTAgKzYxLDEwIEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2lu
ZG93KFBhc3NSZWYKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAo
T25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBj
YW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCiAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1
Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCpKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5k
b3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKSwgMCwgcHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJv
dG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgSlNE
T01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpLCAwLCBwcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdygq
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRvdywg
dGhpcyk7CisgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01XaW5kb3c6OmNyZWF0
ZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRv
dywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqSlNET01XaW5kb3c6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAgc2V0V2luZG93KCpK
U0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIEpTVmFsdWUgSlNEb2N1
bWVudDo6bG9jYXRpb24oRXhlY1N0YXRlKiAKICAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVy
ID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uKSkKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAKLSAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gbmV3IChl
eGVjKSBKU0xvY2F0aW9uKGdldERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCBnbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBsb2NhdGlvbik7CisgICAgSlNMb2NhdGlvbioganNM
b2NhdGlvbiA9IEpTTG9jYXRpb246OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4o
ZXhlYywgZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRpb24pOwogICAgIGNh
Y2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uLCBqc0xvY2F0aW9uKTsKICAg
ICByZXR1cm4ganNMb2NhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5ICsyNiwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNJbWFn
ZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsKLSAgICBw
dWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTSW1hZ2VD
b25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIH0KKwog
ICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYQogICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAm
SlNCeXRlQXJyYXk6OkJhc2U6OnNfaW5mbywgMCwgMCB9OwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3Ryb25nPFN0cnVjdHVyZT4sIGNwYVN0cnVjdHVyZSwgKGV4ZWMtPmdsb2JhbERhdGEoKSwg
SlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgp
LCAmY3BhQ2xhc3NJbmZvKSkpOwotICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGRhdGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVy
ZS5nZXQoKSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUs
IEpTQnl0ZUFycmF5OjpjcmVhdGUoZXhlYywgY3BhU3RydWN0dXJlLmdldCgpLCBpbWFnZURhdGEt
PmRhdGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBleGVjLT5oZWFw
KCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbWFnZURhdGEtPmRhdGEoKS0+bGVuZ3RoKCkpOwog
ICAgIAogICAgIHJldHVybiB3cmFwcGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDkgKzI3LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBK
U09wdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsK
LSAgICBwdWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgSlNPcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEpTT3B0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNPcHRpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEpTT3B0aW9uQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAg
ICAgICB9CisKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwyNCArNzUsMjQgQEAgdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgIC8vIHdoZW4gd2UgYWxsb2Nh
dGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAg
ICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBT
dHJ1Y3R1cmUqIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1dvcmtlckNvbnRl
eHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBqc051bGwoKSk7Ci0g
ICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2VyQ29udGV4dFByb3RvdHlw
ZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUpKTsKKyAgICBTdHJvbmc8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlPiB3b3JrZXJDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRl
KCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAog
ICAgIGlmIChtX3dvcmtlckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSB7CiAg
ICAgICAgIFN0cnVjdHVyZSogZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2Jh
bERhdGEsIHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAgICAgICBTdHJvbmc8SlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBl
KCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4dFByb3Rv
dHlwZVN0cnVjdHVyZSkpOworICAgICAgICBTdHJvbmc8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIDAsIGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9n
bG9iYWxEYXRhLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBt
X3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0
YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCptX2dsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAg
ICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBKU0RlZGljYXRlZFdv
cmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29u
dGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4
dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJD
b250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUt
PnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBw
ZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICB9IGVsc2UgewogICAg
ICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7CiAg
ICAgICAgIFN0cnVjdHVyZSogc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hh
cmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEs
IHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAgICAgICBTdHJvbmc8SlNTaGFyZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERh
dGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5
cGUoKm1fZ2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOwor
ICAgICAgICBTdHJvbmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250
ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlw
ZTo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUpKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRl
eHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBzaGFyZWRDb250ZXh0UHJvdG90eXBl
LmdldCgpKTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxE
YXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0KCptX2ds
b2JhbERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRl
eHQoKSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRh
LCBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29y
a2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwg
bV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIHNoYXJlZENvbnRleHRQcm90
b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gOTEyNzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgwLDggKzY4MCw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgQ2xh
c3MgZGVjbGFyYXRpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJGNsYXNzTmFt
ZSA6IHB1YmxpYyAkcGFyZW50Q2xhc3NOYW1lIHtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgdHlwZWRlZiAkcGFyZW50Q2xhc3NOYW1lIEJhc2U7XG4iKTsKLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
cHJvdGVjdGVkOlxuIik7CiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRj
bGFzc05hbWUoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8
JGltcGxUeXBlPiwgSlNET01XaW5kb3dTaGVsbCopO1xuIik7CkBAIC02OTEsNiArNjkxLDE1IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRj
bGFzc05hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8
JGltcGxUeXBlPik7XG4iKTsKICAgICB9CiAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVi
bGljOlxuIik7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShK
U0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+
LCBKU0RPTVdpbmRvd1NoZWxsKik7XG4iKTsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgeworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERh
dGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NO
YW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQ
dHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICB9CisKICAgICAjIFByb3RvdHlwZQogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpIHVubGVzcyAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9KTsK
IApAQCAtOTYwLDEzICs5NjksMTUgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgImNsYXNzICR7Y2xhc3NOYW1lfVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTtcbiIpOwogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKLSAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTtcbiIpOwotICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNDOjpKU0ds
b2JhbERhdGEqKTtcbiIpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5l
ICJET01XaW5kb3ciICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtl
ckNvbnRleHQifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
O1xuIik7CiAgICAgfQorCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJHtj
bGFzc05hbWV9UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSlcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
JHtjbGFzc05hbWV9UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX1Qcm90
b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7CisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOworCiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAgaWYg
KCRudW1GdW5jdGlvbnMgPiAwIHx8ICRudW1Db25zdGFudHMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRlbGVnYXRpbmdQcm90b3R5cGVHZXRPd25Qcm9wZXJ0eVNsb3Qi
fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CkBAIC05OTEsNiArMTAwMiw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5jdGlvbgogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBn
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIifTsKIAorICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7IH1cbiIpOwogCiAgICAgIyBzdHJ1Y3R1cmUgZmxh
Z3MKQEAgLTEzNTEsMTcgKzEzNjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7
Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90
b3R5cGVcIiwgJkpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8sICYke2NsYXNz
TmFtZX1Qcm90b3R5cGVUYWJsZSwgMCB9O1xuXG4iKTsKICAgICB9Ci0gICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9p
ZCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpXG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVh
cC5hbGxvY2F0ZShzaXplKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3Jr
ZXJDb250ZXh0In0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkKiAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9j
YXRlKHNpemUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAg
ICB9IGVsc2UgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpz
ZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPCR7Y2xhc3NOYW1lfT4oZXhlYywgZ2xv
YmFsT2JqZWN0KTtcbiIpOwpAQCAtMTQ3MSw2ICsxNDczLDIzIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXRBbm9ueW1v
dXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgaSwgSlNWYWx1ZSgpKTtcbiIpOwog
ICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgCisgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiJGNsYXNzTmFtZSogJHtjbGFzc05hbWV9OjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpT
RE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJGNsYXNzTmFtZSogJHtjbGFzc05hbWV9OjpjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+
IGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPCRjbGFzc05h
bWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRjbGFzc05hbWUqICR7Y2xhc3NO
YW1lfTo6Y3JlYXRlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCkuaGVhcCkpICR7Y2xhc3NOYW1lfShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgIH0KIAogICAg
IGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4i
KTsKQEAgLTE0ODcsOSArMTUwNiw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6Y3JlYXRlUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAoJGhhc1Bh
cmVudCAmJiAkcGFyZW50Q2xhc3NOYW1lIG5lICJKU0M6OkRPTU5vZGVGaWx0ZXIiKSB7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbmV3IChleGVjKSAke2NsYXNz
TmFtZX1Qcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtwYXJl
bnRDbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksICR7cGFy
ZW50Q2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xh
c3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpO1xuIik7CiAgICAg
ICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KQEAgLTMw
MzEsOCArMzA1MCwxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAg
bXkgJGNhbGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgi
fTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05h
bWV9IDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHtcbiIpOwotICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgInB1YmxpYzpcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByaXZhdGU6
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
XG5cbiIpOworICAgIAorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInB1YmxpYzpcbiIpOworICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAge1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY29uc3RydWN0b3JDbGFzc05hbWU+KCpleGVjLT5oZWFw
KCkpKSAkY29uc3RydWN0b3JDbGFzc05hbWUoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiwxNiBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7
Citwcml2YXRlOgorICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBCaW5kaW5nczo6QXJyYXkq
KTsKKwogcHVibGljOgorICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEJpbmRpbmdzOjpBcnJheSogYXJyYXkpCisgICAgeworICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5
KGV4ZWMsIGFycmF5KTsKKyAgICB9CisKICAgICB0eXBlZGVmIEJpbmRpbmdzOjpBcnJheSBCaW5k
aW5nc0FycmF5OwotICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBCaW5kaW5nczo6QXJyYXkq
KTsKICAgICB2aXJ0dWFsIH5SdW50aW1lQXJyYXkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICsz
NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIFJ1
bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKLXB1YmxpYzoK
K3Byb3RlY3RlZDogICAgCiAgICAgUnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKKworcHVibGljOgorICAg
IHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5SdW50
aW1lT2JqZWN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQXJyYXlKU0MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAJ
KHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUFy
cmF5SlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBKU1ZhbHVlIEphdmFB
cnJheTo6Y29udmVydEpPYmplY3RUb0FycmF5CiAgICAgaWYgKHR5cGVbMF0gIT0gJ1snKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRp
bWVBcnJheShleGVjLCBuZXcgSmF2YUFycmF5KGFuT2JqZWN0LCB0eXBlLCByb290T2JqZWN0KSk7
CisgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBKYXZhQXJyYXkoYW5P
YmplY3QsIHR5cGUsIHJvb3RPYmplY3QpKTsKIH0KIAogSmF2YUFycmF5OjpKYXZhQXJyYXkoam9i
amVjdCBhcnJheSwgY29uc3QgY2hhciogdHlwZSwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkocmV2
aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5j
ZTo6bmV3UnVudGltZU9iamVjCiAKICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAg
ICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIu
Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZU9iamVjdChleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGlt
ZU9iamVjdD4oZXhlYyksIHRoaXMpOworICAgIHJldHVybiBSdW50aW1lT2JqZWN0OjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKIH0KIAogdm9pZCBJbnN0
YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDQsNyArMjQ0LDcgQEAgSlNWYWx1ZSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShFeGVjU3RhdAog
ICAgICAgICAgICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoW29iaiBkb3VibGVWYWx1ZV0pOwogICAgICAg
ICAgICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgT2JqY0FycmF5
KG9iaiwgcm9vdE9iamVjdCkpOworICAgICAgICAgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6
OmNyZWF0ZShleGVjLCBuZXcgT2JqY0FycmF5KG9iaiwgcm9vdE9iamVjdCkpOwogICAgICAgICAg
ICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczp3ZWJTY3JpcHRPYmplY3RDbGFzcygpXSkgewogICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBpbXAgPSBbb2JqIF9pbXBdOwogICAgICAgICAgICAgICAg
IHJldHVybiBpbXAgPyBpbXAgOiBqc1VuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3MywxNiArOTcz
LDE2IEBAIEpTVmFsdWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUKICAgICBpZiAo
dHlwZSA9PSBRTWV0YVR5cGU6OlFWYXJpYW50TGlzdCkgewogICAgICAgICBRVmFyaWFudExpc3Qg
dmwgPSB2YXJpYW50LnRvTGlzdCgpOwogICAgICAgICBxQ29udkRlYnVnKCkgPDwgImdvdCBhICIg
PDwgdmwuY291bnQoKSA8PCAiIGxlbmd0aCBsaXN0OiIgPDwgdmw7Ci0gICAgICAgIHJldHVybiBu
ZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRBcnJheTxRVmFyaWFudD4odmwsIFFN
ZXRhVHlwZTo6Vm9pZCwgcm9vdCkpOworICAgICAgICByZXR1cm4gUnVudGltZUFycmF5OjpjcmVh
dGUoZXhlYywgbmV3IFF0QXJyYXk8UVZhcmlhbnQ+KHZsLCBRTWV0YVR5cGU6OlZvaWQsIHJvb3Qp
KTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRU3RyaW5nTGlzdCkgewogICAg
ICAgICBRU3RyaW5nTGlzdCBzbCA9IHZhcmlhbnQudmFsdWU8UVN0cmluZ0xpc3Q+KCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRBcnJheTxRU3Ry
aW5nPihzbCwgUU1ldGFUeXBlOjpRU3RyaW5nLCByb290KSk7CisgICAgICAgIHJldHVybiBSdW50
aW1lQXJyYXk6OmNyZWF0ZShleGVjLCBuZXcgUXRBcnJheTxRU3RyaW5nPihzbCwgUU1ldGFUeXBl
OjpRU3RyaW5nLCByb290KSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IChRTWV0YVR5cGU6OlR5
cGUpIHFNZXRhVHlwZUlkPFFPYmplY3RMaXN0PigpKSB7CiAgICAgICAgIFFPYmplY3RMaXN0IG9s
PSB2YXJpYW50LnZhbHVlPFFPYmplY3RMaXN0PigpOwotICAgICAgICByZXR1cm4gbmV3IChleGVj
KSBSdW50aW1lQXJyYXkoZXhlYywgbmV3IFF0QXJyYXk8UU9iamVjdCo+KG9sLCBRTWV0YVR5cGU6
OlFPYmplY3RTdGFyLCByb290KSk7CisgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0
ZShleGVjLCBuZXcgUXRBcnJheTxRT2JqZWN0Kj4ob2wsIFFNZXRhVHlwZTo6UU9iamVjdFN0YXIs
IHJvb3QpKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gKFFNZXRhVHlwZTo6VHlwZSlxTWV0YVR5
cGVJZDxRTGlzdDxpbnQ+ID4oKSkgewogICAgICAgICBRTGlzdDxpbnQ+IGlsPSB2YXJpYW50LnZh
bHVlPFFMaXN0PGludD4gPigpOwotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBSdW50aW1lQXJy
YXkoZXhlYywgbmV3IFF0QXJyYXk8aW50PihpbCwgUU1ldGFUeXBlOjpJbnQsIHJvb3QpKTsKKyAg
ICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBRdEFycmF5PGludD4o
aWwsIFFNZXRhVHlwZTo6SW50LCByb290KSk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgPT0gKFFN
ZXRhVHlwZTo6VHlwZSlxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101379</attachid>
            <date>2011-07-19 13:51:55 -0700</date>
            <delta_ts>2011-07-19 16:37:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64732-20110719135156.patch</filename>
            <type>text/plain</type>
            <size>49973</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDctMTkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWZhY3RvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00gYmluZGluZ3Mg
dG8gcmVwbGFjZSBvcGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjaW5nIHRoZSBw
dWJsaWMgY29uc3RydWN0b3JzIGluIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00g
YmluZGluZ3Mgd2l0aCBzdGF0aWMgCisgICAgICAgIGNyZWF0ZSBtZXRob2RzLiAgSlNCeXRlQXJy
YXkgaXMgdXNlZCBieSBzZXZlcmFsIG9mIHRoZXNlIGJpbmRpbmdzIGluIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5
OjpjcmVhdGUpOgorCiAyMDExLTA3LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gV2ViS2l0IGFsbG9jYXRlcyBnaWdhYnl0ZXMgb2Yg
bWVtb3J5IHdoZW4gZG9pbmcgcmVwZWF0ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gOTEy
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAKKyAgICBwcml2YXRlOgog
ICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBXVEY6OkJ5dGVBcnJh
eSogc3RvcmFnZSk7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEpTQnl0
ZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV1RG
OjpCeXRlQXJyYXkqIHN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4
ZWMsIHN0cnVjdHVyZSwgc3RvcmFnZSk7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUs
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5MTI5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTA3LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgSlMgRE9NIGJpbmRpbmdzIHRvIHJlcGxhY2Ugb3BlcmF0b3IgbmV3IHdpdGggc3Rh
dGljIGNyZWF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgIFJlcGxhY2luZyB0aGUg
cHVibGljIGNvbnN0cnVjdG9ycyBpbiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgSlMgRE9N
IGJpbmRpbmdzIGluIENvZGVHZW5lcmF0b3JKUy5wbQorICAgICAgICB3aXRoIHN0YXRpYyBjcmVh
dGUgbWV0aG9kcy4gIFRoaXMgaXMgcGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyBlZmZvcnQg
dG8gdXNlIHN0YXRpYyBjcmVhdGUgbWV0aG9kcworICAgICAgICBpbiBmYXZvciBvZiBwdWJsaWMg
Y29uc3RydWN0b3JzIHRocm91Z2hvdXQgSlNDLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNB
dWRpb0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpoaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
Ojpsb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3B0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9K
YXZhQXJyYXlKU0MuY3BwOgorICAgICAgICAoSmF2YUFycmF5Ojpjb252ZXJ0Sk9iamVjdFRvQXJy
YXkpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Okluc3RhbmNlOjpuZXdSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX3V0aWxpdHkubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFFWYXJpYW50VG9WYWx1ZSk6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVh
dGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKwogMjAxMS0wNy0xOSAgTWlobmVhIE92
aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc11QYXJzZSAt
d2Via2l0LXJlZ2lvbi1vdmVyZmxvdyBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxMjcxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDkgKzM1LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBKU0F1ZGlvQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQg
ewotICAgIHB1YmxpYzoKKyAgICBwcml2YXRlOgogICAgICAgICBKU0F1ZGlvQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAK
KyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBKU0F1ZGlvQ29uc3RydWN0b3IqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNBdWRpb0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNBdWRpb0NvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChu
b2RlKTsKICAgICAgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVj
KSwgbm9kZSkpOwotICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBuZXcgKGV4ZWMpIFdy
YXBwZXJDbGFzcyhnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVjLCBnbG9iYWxPYmpl
Y3QpLCBnbG9iYWxPYmplY3QsIG5vZGUpOworICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIg
PSBXcmFwcGVyQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVj
LCBnbG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QsIG5vZGUpOwogICAgICAgICAvLyBGSVhNRTog
VGhlIGVudGlyZSBmdW5jdGlvbiBjYW4gYmUgcmVtb3ZlZCwgb25jZSB3ZSBmaXggY2FjaGluZy4K
ICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBhIG9uZS1vZmYgaGFjayB0byBtYWtlIE5vZGVz
IGNhY2hlIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0LgogICAgICAgICBjYWNoZVdyYXBwZXIo
Y3VycmVudFdvcmxkKGV4ZWMpLCBub2RlLCB3cmFwcGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24gOTEyNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAg
ICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVjdG9y
Q2xhc3M6OnNfaW5mbykuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7Ci0g
ICAgICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBDb25zdHJ1Y3Rv
ckNsYXNzKGV4ZWMsIENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIEpTQzo6SlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKGV4ZWMsIENvbnN0cnVjdG9y
Q2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNz
OjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVt
cDsKICAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkt
PmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJz
dC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw3ICs0MjgsNyBA
QCBKU1ZhbHVlIEpTRE9NV2luZG93OjpoaXN0b3J5KEV4ZWNTdGF0ZSogCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogCiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGNvbnN0X2Nhc3Q8SlNET01X
aW5kb3cqPih0aGlzKTsKLSAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IG5ldyAoZXhlYykgSlNI
aXN0b3J5KGdldERPTVN0cnVjdHVyZTxKU0hpc3Rvcnk+KGV4ZWMsIHdpbmRvdyksIHdpbmRvdywg
aGlzdG9yeSk7CisgICAgSlNIaXN0b3J5KiBqc0hpc3RvcnkgPSBKU0hpc3Rvcnk6OmNyZWF0ZShn
ZXRET01TdHJ1Y3R1cmU8SlNIaXN0b3J5PihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGhpc3Rvcnkp
OwogICAgIGNhY2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGhpc3RvcnksIGpzSGlzdG9y
eSk7CiAgICAgcmV0dXJuIGpzSGlzdG9yeTsKIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQCBKU1ZhbHVl
IEpTRE9NV2luZG93Ojpsb2NhdGlvbihFeGVjU3RhdGUqCiAgICAgICAgIHJldHVybiB3cmFwcGVy
OwogCiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGNvbnN0X2Nhc3Q8SlNET01XaW5kb3cqPih0
aGlzKTsKLSAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gbmV3IChleGVjKSBKU0xvY2F0aW9u
KGdldERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGxvY2F0
aW9uKTsKKyAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gSlNMb2NhdGlvbjo6Y3JlYXRlKGdl
dERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGxvY2F0aW9u
KTsKICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbiwganNMb2Nh
dGlvbik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gOTEyNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsMTAgKzYxLDEwIEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2lu
ZG93KFBhc3NSZWYKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAo
T25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBj
YW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCiAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1
Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCpKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5k
b3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKSwgMCwgcHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJv
dG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgSlNE
T01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpLCAwLCBwcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdygq
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRvdywg
dGhpcyk7CisgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01XaW5kb3c6OmNyZWF0
ZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRv
dywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqSlNET01XaW5kb3c6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAgc2V0V2luZG93KCpK
U0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIEpTVmFsdWUgSlNEb2N1
bWVudDo6bG9jYXRpb24oRXhlY1N0YXRlKiAKICAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVy
ID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uKSkKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAKLSAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gbmV3IChl
eGVjKSBKU0xvY2F0aW9uKGdldERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCBnbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBsb2NhdGlvbik7CisgICAgSlNMb2NhdGlvbioganNM
b2NhdGlvbiA9IEpTTG9jYXRpb246OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4o
ZXhlYywgZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRpb24pOwogICAgIGNh
Y2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uLCBqc0xvY2F0aW9uKTsKICAg
ICByZXR1cm4ganNMb2NhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5ICsyNiwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNJbWFn
ZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsKLSAgICBw
dWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTSW1hZ2VD
b25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIH0KKwog
ICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYQogICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAm
SlNCeXRlQXJyYXk6OkJhc2U6OnNfaW5mbywgMCwgMCB9OwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3Ryb25nPFN0cnVjdHVyZT4sIGNwYVN0cnVjdHVyZSwgKGV4ZWMtPmdsb2JhbERhdGEoKSwg
SlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgp
LCAmY3BhQ2xhc3NJbmZvKSkpOwotICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGRhdGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVy
ZS5nZXQoKSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUs
IEpTQnl0ZUFycmF5OjpjcmVhdGUoZXhlYywgY3BhU3RydWN0dXJlLmdldCgpLCBpbWFnZURhdGEt
PmRhdGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBleGVjLT5oZWFw
KCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbWFnZURhdGEtPmRhdGEoKS0+bGVuZ3RoKCkpOwog
ICAgIAogICAgIHJldHVybiB3cmFwcGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDkgKzI3LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBK
U09wdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsK
LSAgICBwdWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgSlNPcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEpTT3B0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNPcHRpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEpTT3B0aW9uQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAg
ICAgICB9CisKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwyNCArNzUsMjQgQEAgdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgIC8vIHdoZW4gd2UgYWxsb2Nh
dGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAg
ICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBT
dHJ1Y3R1cmUqIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1dvcmtlckNvbnRl
eHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBqc051bGwoKSk7Ci0g
ICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2VyQ29udGV4dFByb3RvdHlw
ZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUpKTsKKyAgICBTdHJvbmc8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlPiB3b3JrZXJDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRl
KCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAog
ICAgIGlmIChtX3dvcmtlckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSB7CiAg
ICAgICAgIFN0cnVjdHVyZSogZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2Jh
bERhdGEsIHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAgICAgICBTdHJvbmc8SlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBl
KCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4dFByb3Rv
dHlwZVN0cnVjdHVyZSkpOworICAgICAgICBTdHJvbmc8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIDAsIGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9n
bG9iYWxEYXRhLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBt
X3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0
YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCptX2dsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAg
ICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBKU0RlZGljYXRlZFdv
cmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29u
dGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4
dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJD
b250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUt
PnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBw
ZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICB9IGVsc2UgewogICAg
ICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7CiAg
ICAgICAgIFN0cnVjdHVyZSogc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hh
cmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEs
IHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAgICAgICBTdHJvbmc8SlNTaGFyZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERh
dGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5
cGUoKm1fZ2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOwor
ICAgICAgICBTdHJvbmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250
ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlw
ZTo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUpKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRl
eHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBzaGFyZWRDb250ZXh0UHJvdG90eXBl
LmdldCgpKTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxE
YXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0KCptX2ds
b2JhbERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRl
eHQoKSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRh
LCBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29y
a2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwg
bV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIHNoYXJlZENvbnRleHRQcm90
b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gOTEyNzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgwLDggKzY4MCw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgQ2xh
c3MgZGVjbGFyYXRpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJGNsYXNzTmFt
ZSA6IHB1YmxpYyAkcGFyZW50Q2xhc3NOYW1lIHtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgdHlwZWRlZiAkcGFyZW50Q2xhc3NOYW1lIEJhc2U7XG4iKTsKLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
cHJvdGVjdGVkOlxuIik7CiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRj
bGFzc05hbWUoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8
JGltcGxUeXBlPiwgSlNET01XaW5kb3dTaGVsbCopO1xuIik7CkBAIC02OTEsNiArNjkxLDE1IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRj
bGFzc05hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8
JGltcGxUeXBlPik7XG4iKTsKICAgICB9CiAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVi
bGljOlxuIik7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShK
U0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+
LCBKU0RPTVdpbmRvd1NoZWxsKik7XG4iKTsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgeworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERh
dGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NO
YW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQ
dHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICB9CisKICAgICAjIFByb3RvdHlwZQogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpIHVubGVzcyAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9KTsK
IApAQCAtOTYwLDEzICs5NjksMTUgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgImNsYXNzICR7Y2xhc3NOYW1lfVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTtcbiIpOwogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKLSAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTtcbiIpOwotICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNDOjpKU0ds
b2JhbERhdGEqKTtcbiIpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5l
ICJET01XaW5kb3ciICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtl
ckNvbnRleHQifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
O1xuIik7CiAgICAgfQorCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJHtj
bGFzc05hbWV9UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSlcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
JHtjbGFzc05hbWV9UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX1Qcm90
b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7CisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOworCiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAgaWYg
KCRudW1GdW5jdGlvbnMgPiAwIHx8ICRudW1Db25zdGFudHMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRlbGVnYXRpbmdQcm90b3R5cGVHZXRPd25Qcm9wZXJ0eVNsb3Qi
fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CkBAIC05OTEsNiArMTAwMiw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5jdGlvbgogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBn
ZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIifTsKIAorICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7IH1cbiIpOwogCiAgICAgIyBzdHJ1Y3R1cmUgZmxh
Z3MKQEAgLTEzNTEsMTcgKzEzNjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7
Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90
b3R5cGVcIiwgJkpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8sICYke2NsYXNz
TmFtZX1Qcm90b3R5cGVUYWJsZSwgMCB9O1xuXG4iKTsKICAgICB9Ci0gICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9p
ZCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpXG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVh
cC5hbGxvY2F0ZShzaXplKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3Jr
ZXJDb250ZXh0In0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkKiAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9j
YXRlKHNpemUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAg
ICB9IGVsc2UgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpz
ZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPCR7Y2xhc3NOYW1lfT4oZXhlYywgZ2xv
YmFsT2JqZWN0KTtcbiIpOwpAQCAtMTQ3MSw2ICsxNDczLDIzIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXRBbm9ueW1v
dXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgaSwgSlNWYWx1ZSgpKTtcbiIpOwog
ICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgCisgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiJGNsYXNzTmFtZSogJHtjbGFzc05hbWV9OjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpT
RE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiJGNsYXNzTmFtZSogJHtjbGFzc05hbWV9OjpjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+
IGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPCRjbGFzc05h
bWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRjbGFzc05hbWUqICR7Y2xhc3NO
YW1lfTo6Y3JlYXRlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCkuaGVhcCkpICR7Y2xhc3NOYW1lfShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgIH0KIAogICAg
IGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4i
KTsKQEAgLTE0ODcsOSArMTUwNiw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6Y3JlYXRlUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAoJGhhc1Bh
cmVudCAmJiAkcGFyZW50Q2xhc3NOYW1lIG5lICJKU0M6OkRPTU5vZGVGaWx0ZXIiKSB7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbmV3IChleGVjKSAke2NsYXNz
TmFtZX1Qcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtwYXJl
bnRDbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksICR7cGFy
ZW50Q2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xh
c3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpO1xuIik7CiAgICAg
ICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KQEAgLTMw
MzEsOCArMzA1MCwxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAg
bXkgJGNhbGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgi
fTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05h
bWV9IDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHtcbiIpOwotICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgInB1YmxpYzpcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByaXZhdGU6
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
XG5cbiIpOworICAgIAorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInB1YmxpYzpcbiIpOworICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAge1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY29uc3RydWN0b3JDbGFzc05hbWU+KCpleGVjLT5oZWFw
KCkpKSAkY29uc3RydWN0b3JDbGFzc05hbWUoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Mywx
NSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmCiAjdW5kZWYgVEhV
TktfR0VORVJBVE9SCiBzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlcywgMCB9OwogY2xhc3MgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Ig
OiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHVibGljOgorcHJpdmF0ZToKICAgICBK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAorcHVibGljOgorICAgIHN0YXRpYyBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihleGVj
LCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgfQorCiAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYs
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsKQEAgLTE0Miw5ICsxNDgsMTQgQEAgSlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2Uo
U3RydWN0dQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKK0pTVGVzdEludGVy
ZmFjZSogSlNUZXN0SW50ZXJmYWNlOjpjcmVhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4gaW1w
bCkKK3sKKyAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlPihnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlKHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKwogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZTo6Y3Jl
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCiBib29sIEpTVGVzdEludGVy
ZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5oCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsMTAg
QEAgY2xhc3MgVGVzdEludGVyZmFjZTsKIAogY2xhc3MgSlNUZXN0SW50ZXJmYWNlIDogcHVibGlj
IEpTRE9NV3JhcHBlciB7CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKLXB1YmxpYzoK
K3Byb3RlY3RlZDoKICAgICBKU1Rlc3RJbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4pOworcHVibGljOgorICAgIHN0
YXRpYyBKU1Rlc3RJbnRlcmZhY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPik7CiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpOwpAQCAtNjIsMTEgKzY0LDE4IEBAIGNsYXNzIEpTVGVzdEludGVyZmFjZVBy
b3RvdHlwZSA6IHB1YmxpYyAKICAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0IEJhc2U7CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgfQorCiAgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9
CisKK3ByaXZhdGU6CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfQogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAko
cmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDkgKzY0LDE1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RNZWRpYVEKICN1
bmRlZiBUSFVOS19HRU5FUkFUT1IKIHN0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJs
ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsK
IGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBE
T01Db25zdHJ1Y3Rvck9iamVjdCB7Ci1wdWJsaWM6Citwcml2YXRlOgogICAgIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAorcHVibGljOgorICAgIHN0YXRpYyBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCk7CisgICAgfQorCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKQEAgLTEzOCw5ICsx
NDQsMTQgQEAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SlNUZXN0TWVkaQogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKK0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcj4gaW1wbCkKK3sKKyAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCkuaGVhcCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIGltcGwpOworfQorCiBKU09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAg
ICByZXR1cm4gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAogYm9vbCBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkocmV2aXNpb24gOTEy
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMCBAQCBj
bGFzcyBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjsKIAogY2xhc3MgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5cGVkZWYgSlNET01X
cmFwcGVyIEJhc2U7Ci1wdWJsaWM6Citwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0
cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pOworcHVibGljOgorICAgIHN0YXRpYyBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KTsKICAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC02MCw2ICs2MiwxMSBAQCBjbGFzcyBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90CiAgICAgdHlwZWRlZiBKU0M6OkpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0
YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcg
KEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU+
KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIH0KKwogICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJik7CkBAIC02Nyw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsKICAgICB9CisKK3ByaXZhdGU6CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6
IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKSB7IH0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Myw5ICsxNDMsMTUgQEAgQ09NUElMRV9BU1NFUlQoMFgyMCA9PSBUZXN0T2Jq
OjpDT05TVF9WQQogQ09NUElMRV9BU1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVF
XzE0LCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzE0SXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsK
IAogY2xhc3MgSlNUZXN0T2JqQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmpl
Y3QgewotcHVibGljOgorcHJpdmF0ZToKICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAorcHVibGlj
OgorICAgIHN0YXRpYyBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0T2JqQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgfQorCiAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpT
Qzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsKQEAgLTI2Myw5ICsyNjksMTQgQEAgSlNUZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0
dXJlKiBzdHJ1Y3R1cgogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKK0pTVGVz
dE9iaiogSlNUZXN0T2JqOjpjcmVhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKK3sKKyAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKS5oZWFwKSkgSlNUZXN0T2JqKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30K
KwogSlNPYmplY3QqIEpTVGVzdE9iajo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBK
U1Rlc3RPYmpQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVz
dE9ialByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIEpTVGVzdE9i
alByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rl
c3RPYmpQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCiBib29sIEpTVGVzdE9i
ajo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZpc2lvbiA5
MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsMTAgQEAgY2xhc3MgVGVzdE9iajsKIAog
Y2xhc3MgSlNUZXN0T2JqIDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgdHlwZWRlZiBKU0RP
TVdyYXBwZXIgQmFzZTsKLXB1YmxpYzoKK3Byb3RlY3RlZDoKICAgICBKU1Rlc3RPYmooSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdE9iaj4pOworcHVi
bGljOgorICAgIHN0YXRpYyBKU1Rlc3RPYmoqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0T2JqPik7CiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpOwpAQCAtNjksNiArNzEsMTEgQEAgY2xhc3MgSlNUZXN0T2JqUHJvdG90eXBl
IDogcHVibGljIEpTQzo6SgogICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QgQmFzZTsKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNUZXN0T2JqUHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9ialByb3RvdHlw
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0T2JqUHJvdG90eXBlKGdsb2JhbERhdGEsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFz
c0luZm8gc19pbmZvOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAt
NzYsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAg
ICAgfQorCitwcml2YXRlOgogICAgIEpTVGVzdE9ialByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7IH0KIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9u
IDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDkgKzY1LDE1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTZXJpYWwKICN1
bmRlZiBUSFVOS19HRU5FUkFUT1IKIHN0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJs
ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlID0g
eyAxLCAwLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRh
YmxlVmFsdWVzLCAwIH07CiBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Ci1wdWJsaWM6Citw
cml2YXRlOgogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCop
OwogCitwdWJsaWM6CisgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpAQCAtMTI4LDkgKzEz
NCwxNCBAQCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTCiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAorSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBsKQoreworICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQor
CiBKU09iamVjdCogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKKyAgICByZXR1cm4gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CiB9CiAKIGJvb2wgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHJldmlzaW9uIDkxMjcxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCwxMCBAQCBjbGFz
cyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlCiAKIGNsYXNzIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5
cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7Ci1wdWJsaWM6Citwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQ
dHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4pOwogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTYyLDExICs2NCwxOCBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhCiAgICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdCBCYXNlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIH0K
KwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgfQorCitwcml2YXRlOgogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpT
Qzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKSB7IH0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiwxNiBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7
Citwcml2YXRlOgorICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBCaW5kaW5nczo6QXJyYXkq
KTsKKwogcHVibGljOgorICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEJpbmRpbmdzOjpBcnJheSogYXJyYXkpCisgICAgeworICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5
KGV4ZWMsIGFycmF5KTsKKyAgICB9CisKICAgICB0eXBlZGVmIEJpbmRpbmdzOjpBcnJheSBCaW5k
aW5nc0FycmF5OwotICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBCaW5kaW5nczo6QXJyYXkq
KTsKICAgICB2aXJ0dWFsIH5SdW50aW1lQXJyYXkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICsz
NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIFJ1
bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKLXB1YmxpYzoK
K3Byb3RlY3RlZDogICAgCiAgICAgUnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKKworcHVibGljOgorICAg
IHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5SdW50
aW1lT2JqZWN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQXJyYXlKU0MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAJ
KHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUFy
cmF5SlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBKU1ZhbHVlIEphdmFB
cnJheTo6Y29udmVydEpPYmplY3RUb0FycmF5CiAgICAgaWYgKHR5cGVbMF0gIT0gJ1snKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRp
bWVBcnJheShleGVjLCBuZXcgSmF2YUFycmF5KGFuT2JqZWN0LCB0eXBlLCByb290T2JqZWN0KSk7
CisgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBKYXZhQXJyYXkoYW5P
YmplY3QsIHR5cGUsIHJvb3RPYmplY3QpKTsKIH0KIAogSmF2YUFycmF5OjpKYXZhQXJyYXkoam9i
amVjdCBhcnJheSwgY29uc3QgY2hhciogdHlwZSwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkocmV2
aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5j
ZTo6bmV3UnVudGltZU9iamVjCiAKICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAg
ICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIu
Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZU9iamVjdChleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGlt
ZU9iamVjdD4oZXhlYyksIHRoaXMpOworICAgIHJldHVybiBSdW50aW1lT2JqZWN0OjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKIH0KIAogdm9pZCBJbnN0
YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDQsNyArMjQ0LDcgQEAgSlNWYWx1ZSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShFeGVjU3RhdAog
ICAgICAgICAgICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoW29iaiBkb3VibGVWYWx1ZV0pOwogICAgICAg
ICAgICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgT2JqY0FycmF5
KG9iaiwgcm9vdE9iamVjdCkpOworICAgICAgICAgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6
OmNyZWF0ZShleGVjLCBuZXcgT2JqY0FycmF5KG9iaiwgcm9vdE9iamVjdCkpOwogICAgICAgICAg
ICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczp3ZWJTY3JpcHRPYmplY3RDbGFzcygpXSkgewogICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBpbXAgPSBbb2JqIF9pbXBdOwogICAgICAgICAgICAgICAg
IHJldHVybiBpbXAgPyBpbXAgOiBqc1VuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3MywxNiArOTcz
LDE2IEBAIEpTVmFsdWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUKICAgICBpZiAo
dHlwZSA9PSBRTWV0YVR5cGU6OlFWYXJpYW50TGlzdCkgewogICAgICAgICBRVmFyaWFudExpc3Qg
dmwgPSB2YXJpYW50LnRvTGlzdCgpOwogICAgICAgICBxQ29udkRlYnVnKCkgPDwgImdvdCBhICIg
PDwgdmwuY291bnQoKSA8PCAiIGxlbmd0aCBsaXN0OiIgPDwgdmw7Ci0gICAgICAgIHJldHVybiBu
ZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRBcnJheTxRVmFyaWFudD4odmwsIFFN
ZXRhVHlwZTo6Vm9pZCwgcm9vdCkpOworICAgICAgICByZXR1cm4gUnVudGltZUFycmF5OjpjcmVh
dGUoZXhlYywgbmV3IFF0QXJyYXk8UVZhcmlhbnQ+KHZsLCBRTWV0YVR5cGU6OlZvaWQsIHJvb3Qp
KTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRU3RyaW5nTGlzdCkgewogICAg
ICAgICBRU3RyaW5nTGlzdCBzbCA9IHZhcmlhbnQudmFsdWU8UVN0cmluZ0xpc3Q+KCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRBcnJheTxRU3Ry
aW5nPihzbCwgUU1ldGFUeXBlOjpRU3RyaW5nLCByb290KSk7CisgICAgICAgIHJldHVybiBSdW50
aW1lQXJyYXk6OmNyZWF0ZShleGVjLCBuZXcgUXRBcnJheTxRU3RyaW5nPihzbCwgUU1ldGFUeXBl
OjpRU3RyaW5nLCByb290KSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IChRTWV0YVR5cGU6OlR5
cGUpIHFNZXRhVHlwZUlkPFFPYmplY3RMaXN0PigpKSB7CiAgICAgICAgIFFPYmplY3RMaXN0IG9s
PSB2YXJpYW50LnZhbHVlPFFPYmplY3RMaXN0PigpOwotICAgICAgICByZXR1cm4gbmV3IChleGVj
KSBSdW50aW1lQXJyYXkoZXhlYywgbmV3IFF0QXJyYXk8UU9iamVjdCo+KG9sLCBRTWV0YVR5cGU6
OlFPYmplY3RTdGFyLCByb290KSk7CisgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0
ZShleGVjLCBuZXcgUXRBcnJheTxRT2JqZWN0Kj4ob2wsIFFNZXRhVHlwZTo6UU9iamVjdFN0YXIs
IHJvb3QpKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gKFFNZXRhVHlwZTo6VHlwZSlxTWV0YVR5
cGVJZDxRTGlzdDxpbnQ+ID4oKSkgewogICAgICAgICBRTGlzdDxpbnQ+IGlsPSB2YXJpYW50LnZh
bHVlPFFMaXN0PGludD4gPigpOwotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBSdW50aW1lQXJy
YXkoZXhlYywgbmV3IFF0QXJyYXk8aW50PihpbCwgUU1ldGFUeXBlOjpJbnQsIHJvb3QpKTsKKyAg
ICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBRdEFycmF5PGludD4o
aWwsIFFNZXRhVHlwZTo6SW50LCByb290KSk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgPT0gKFFN
ZXRhVHlwZTo6VHlwZSlxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101408</attachid>
            <date>2011-07-19 16:37:43 -0700</date>
            <delta_ts>2011-07-21 16:43:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64732-20110719163745.patch</filename>
            <type>text/plain</type>
            <size>56968</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDctMTkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWZhY3RvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00gYmluZGluZ3Mg
dG8gcmVwbGFjZSBvcGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjaW5nIHRoZSBw
dWJsaWMgY29uc3RydWN0b3JzIGluIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00g
YmluZGluZ3Mgd2l0aCBzdGF0aWMgCisgICAgICAgIGNyZWF0ZSBtZXRob2RzLiAgSlNCeXRlQXJy
YXkgaXMgdXNlZCBieSBzZXZlcmFsIG9mIHRoZXNlIGJpbmRpbmdzIGluIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5
OjpjcmVhdGUpOgorCiAyMDExLTA3LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gV2ViS2l0IGFsbG9jYXRlcyBnaWdhYnl0ZXMgb2Yg
bWVtb3J5IHdoZW4gZG9pbmcgcmVwZWF0ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gOTEy
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAKKyAgICBwcml2YXRlOgog
ICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBXVEY6OkJ5dGVBcnJh
eSogc3RvcmFnZSk7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEpTQnl0
ZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV1RG
OjpCeXRlQXJyYXkqIHN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4
ZWMsIHN0cnVjdHVyZSwgc3RvcmFnZSk7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUs
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5MTI5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTA3LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgSlMgRE9NIGJpbmRpbmdzIHRvIHJlcGxhY2Ugb3BlcmF0b3IgbmV3IHdpdGggc3Rh
dGljIGNyZWF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgIFJlcGxhY2luZyB0aGUg
cHVibGljIGNvbnN0cnVjdG9ycyBpbiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgSlMgRE9N
IGJpbmRpbmdzIGluIENvZGVHZW5lcmF0b3JKUy5wbQorICAgICAgICB3aXRoIHN0YXRpYyBjcmVh
dGUgbWV0aG9kcy4gIFRoaXMgaXMgcGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyBlZmZvcnQg
dG8gdXNlIHN0YXRpYyBjcmVhdGUgbWV0aG9kcworICAgICAgICBpbiB0aGUgaGVhZGVycyBvZiB0
aGUgZ2VuZXJhdGVkIGZpbGVzIChzbyBhcyB0byBiZSBpbmxpbmUtYWJsZSkgaW4gZmF2b3Igb2Yg
cHVibGljIGNvbnN0cnVjdG9ycyB0aHJvdWdob3V0IEpTQy4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6aGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvdzo6bG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRG9jdW1lbnQ6OmxvY2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU09wdGlvbkNv
bnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU09wdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgICogYnJpZGdlL2pu
aS9qc2MvSmF2YUFycmF5SlNDLmNwcDoKKyAgICAgICAgKEphdmFBcnJheTo6Y29udmVydEpPYmpl
Y3RUb0FycmF5KToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29u
dmVydE9iamNWYWx1ZVRvVmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRRVmFyaWFudFRvVmFsdWUpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisKIDIwMTEtMDctMTkgIE1p
aG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNd
UGFyc2UgLXdlYmtpdC1yZWdpb24tb3ZlcmZsb3cgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTI3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgSlNBdWRpb0NvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERv
Y3VtZW50IHsKLSAgICBwdWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgSlNBdWRpb0NvbnN0
cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOwogCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgSlNBdWRpb0NvbnN0cnVjdG9yKiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTQXVkaW9Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEpTQXVkaW9Db25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7
CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDkxMjcxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgewogICAgICAgICBB
U1NFUlQobm9kZSk7CiAgICAgICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29y
bGQoZXhlYyksIG5vZGUpKTsKLSAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0gbmV3IChl
eGVjKSBXcmFwcGVyQ2xhc3MoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZ2xv
YmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKKyAgICAgICAgV3JhcHBlckNsYXNzKiB3
cmFwcGVyID0gV3JhcHBlckNsYXNzOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFz
cz4oZXhlYywgZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKICAgICAgICAgLy8g
RklYTUU6IFRoZSBlbnRpcmUgZnVuY3Rpb24gY2FuIGJlIHJlbW92ZWQsIG9uY2Ugd2UgZml4IGNh
Y2hpbmcuCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBvbmUtb2ZmIGhhY2sgdG8gbWFr
ZSBOb2RlcyBjYWNoZSBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdC4KICAgICAgICAgY2FjaGVX
cmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSwgd3JhcHBlcik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDkx
MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ewogICAgICAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBjb25zdF9jYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuZ2V0KCZDb25z
dHJ1Y3RvckNsYXNzOjpzX2luZm8pLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOwotICAgICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgQ29u
c3RydWN0b3JDbGFzcyhleGVjLCBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3Rf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgICAgICBKU0M6OkpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZShleGVjLCBDb25z
dHJ1Y3RvckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOwogICAgICAgICBBU1NFUlQoIWNvbnN0X2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5jb250YWlucygmQ29uc3RydWN0
b3JDbGFzczo6c19pbmZvKSk7CiAgICAgICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmpl
Y3Q+IHRlbXA7CiAgICAgICAgIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVt
cCkuZmlyc3QtPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNv
bnN0cnVjdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsNyAr
NDI4LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6aGlzdG9yeShFeGVjU3RhdGUqIAogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKIAogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBjb25zdF9jYXN0
PEpTRE9NV2luZG93Kj4odGhpcyk7Ci0gICAgSlNIaXN0b3J5KiBqc0hpc3RvcnkgPSBuZXcgKGV4
ZWMpIEpTSGlzdG9yeShnZXRET01TdHJ1Y3R1cmU8SlNIaXN0b3J5PihleGVjLCB3aW5kb3cpLCB3
aW5kb3csIGhpc3RvcnkpOworICAgIEpTSGlzdG9yeSoganNIaXN0b3J5ID0gSlNIaXN0b3J5Ojpj
cmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpTSGlzdG9yeT4oZXhlYywgd2luZG93KSwgd2luZG93LCBo
aXN0b3J5KTsKICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBoaXN0b3J5LCBq
c0hpc3RvcnkpOwogICAgIHJldHVybiBqc0hpc3Rvcnk7CiB9CkBAIC00NDAsNyArNDQwLDcgQEAg
SlNWYWx1ZSBKU0RPTVdpbmRvdzo6bG9jYXRpb24oRXhlY1N0YXRlKgogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKIAogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBjb25zdF9jYXN0PEpTRE9NV2lu
ZG93Kj4odGhpcyk7Ci0gICAgSlNMb2NhdGlvbioganNMb2NhdGlvbiA9IG5ldyAoZXhlYykgSlNM
b2NhdGlvbihnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4oZXhlYywgd2luZG93KSwgd2luZG93
LCBsb2NhdGlvbik7CisgICAgSlNMb2NhdGlvbioganNMb2NhdGlvbiA9IEpTTG9jYXRpb246OmNy
ZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4oZXhlYywgd2luZG93KSwgd2luZG93LCBs
b2NhdGlvbik7CiAgICAgY2FjaGVXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbG9jYXRpb24s
IGpzTG9jYXRpb24pOwogICAgIHJldHVybiBqc0xvY2F0aW9uOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDkx
MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDEwICs2MSwxMCBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6
OnNldFdpbmRvdyhQYXNzUmVmCiAgICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9i
amVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKICAgICAvLyBjb25zdHJ1Y3Rl
ZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUuKQogICAgIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBqc051bGwoKSk7Ci0gICAgU3Ryb25nPEpT
RE9NV2luZG93UHJvdG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKSwgbmV3IEpTRE9NV2luZG93UHJvdG90eXBlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCksIDAsIHByb3RvdHlwZVN0cnVjdHVyZSkpOworICAgIFN0cm9uZzxKU0RPTVdp
bmRvd1Byb3RvdHlwZT4gcHJvdG90eXBlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRh
KCksIEpTRE9NV2luZG93UHJvdG90eXBlOjpjcmVhdGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0ds
b2JhbERhdGEoKSwgMCwgcHJvdG90eXBlU3RydWN0dXJlKSk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUoKkpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKSwgcHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0RPTVdpbmRvdyoganNE
T01XaW5kb3cgPSBuZXcgKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSkgSlNET01X
aW5kb3coKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBkb21X
aW5kb3csIHRoaXMpOworICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRvdyA9IEpTRE9NV2luZG93
OjpjcmVhdGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBk
b21XaW5kb3csIHRoaXMpOwogICAgIHByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKkpTRE9N
V2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgMCwganNET01XaW5kb3cpOwogICAgIHNldFdp
bmRvdygqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBqc0RPTVdpbmRvdyk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9t
LmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBKU1ZhbHVl
IEpTRG9jdW1lbnQ6OmxvY2F0aW9uKEV4ZWNTdGF0ZSogCiAgICAgaWYgKEpTRE9NV3JhcHBlciog
d3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbikp
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgSlNMb2NhdGlvbioganNMb2NhdGlvbiA9
IG5ldyAoZXhlYykgSlNMb2NhdGlvbihnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4oZXhlYywg
Z2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRpb24pOworICAgIEpTTG9jYXRp
b24qIGpzTG9jYXRpb24gPSBKU0xvY2F0aW9uOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpTTG9j
YXRpb24+KGV4ZWMsIGdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0KCksIGxvY2F0aW9uKTsK
ICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbiwganNMb2NhdGlv
bik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTEyNzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsOSArMjYsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEpTSW1hZ2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7
Ci0gICAgcHVibGljOgorICAgIHByaXZhdGU6CiAgICAgICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEpTSW1hZ2VDb25zdHJ1Y3RvciogY3JlYXRlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3
IChKU0M6OmFsbG9jYXRlQ2VsbDxKU0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U0ltYWdlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAg
ICB9CisKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAJKHJldmlzaW9uIDkxMjcx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmEKICAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7CiAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBjcGFDbGFzc0luZm8gPSB7ICJDYW52YXNQaXhlbEFy
cmF5IiwgJkpTQnl0ZUFycmF5OjpCYXNlOjpzX2luZm8sIDAsIDAgfTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cm9uZzxTdHJ1Y3R1cmU+LCBjcGFTdHJ1Y3R1cmUsIChleGVjLT5nbG9iYWxE
YXRhKCksIEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBq
c051bGwoKSwgJmNwYUNsYXNzSW5mbykpKTsKLSAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgbmV3IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFT
dHJ1Y3R1cmUuZ2V0KCksIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOworICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGRh
dGFOYW1lLCBKU0J5dGVBcnJheTo6Y3JlYXRlKGV4ZWMsIGNwYVN0cnVjdHVyZS5nZXQoKSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgZXhl
Yy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0
aCgpKTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxMjcxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw5ICsyNywxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgSlNPcHRpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1
bWVudCB7Ci0gICAgcHVibGljOgorICAgIHByaXZhdGU6CiAgICAgICAgIEpTT3B0aW9uQ29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Kik7CiAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBKU09wdGlvbkNvbnN0cnVjdG9yKiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTT3B0aW9uQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU09wdGlvbkNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMjQgKzc1LDI0IEBA
IHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAvLyB3aGVuIHdl
IGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBm
dWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4p
CiAgICAgU3RydWN0dXJlKiB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3Jr
ZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwganNOdWxs
KCkpOwotICAgIFN0cm9uZzxKU1dvcmtlckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRleHRQ
cm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTV29ya2Vy
Q29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCAwLCB3b3JrZXJDb250ZXh0UHJvdG90eXBl
U3RydWN0dXJlKSk7CisgICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2Vy
Q29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6
OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJl
KSk7CiAKICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQo
KSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgq
bV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAgICAgU3Ry
b25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFBy
b3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIGRlZGljYXRlZENvbnRl
eHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRh
LCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRh
LCAwLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1
cmUoKm1fZ2xvYmFsRGF0YSwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAg
ICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2ds
b2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCgqbV9nbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsK
KyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX3dv
cmtlckNvbnRleHQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSk7CiAgICAgICAgIHdvcmtl
ckNvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1f
d29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJv
dG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRl
eHRXcmFwcGVyLmdldCgpKTsKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgfSBlbHNl
IHsKICAgICAgICAgQVNTRVJUKG1fd29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0
KCkpOwogICAgICAgICBTdHJ1Y3R1cmUqIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9i
YWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAgICAgU3Ryb25nPEpT
U2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9n
bG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUpKTsKKyAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hh
cmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU1NoYXJlZFdvcmtlckNvbnRleHRQ
cm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBzaGFyZWRDb250ZXh0UHJvdG90eXBl
U3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwgc2hhcmVkQ29udGV4dFBy
b3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1f
Z2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29udGV4
dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3Jr
ZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xv
YmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCBtX3dvcmtlckNvbnRleHQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKSk7CiAgICAg
ICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERh
dGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBzaGFyZWRDb250
ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtl
ckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDkxMjcx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHdvcmtpbmcgY29weSkKQEAgLTIzNSwzMSArMjM1LDE0IEBAIHN1YiBJbmRleEdldHRlclJldHVy
bnNTdHJpbmdzCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKK3N1
YiBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwKIHsKICAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJh
dG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7CiAgICAgbXkgJGlzQ2FsbGJhY2sgPSBAXyA/IHNoaWZ0
IDogMDsKLQotICAgICMgV2hlbiB3ZSdyZSBmaW5pc2hlZCB3aXRoIHRoZSBvbmUtZmlsZS1wZXIt
Y2xhc3MKLSAgICAjIHJlb3JnYW5pemF0aW9uLCB3ZSB3b24ndCBuZWVkIHRoZXNlIHNwZWNpYWwg
Y2FzZXMuCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9y
ICRjb2RlR2VuZXJhdG9yLT5Bdm9pZEluY2x1c2lvbk9mVHlwZSgkdHlwZSkKLSAgICAgICAgb3Ig
JHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgJHR5cGUgZXEgIkRPTU9iamVjdCIgb3IgJHR5cGUgZXEg
IkFycmF5IikgewotICAgIH0gZWxzaWYgKCR0eXBlID1+IC9TVkdQYXRoU2VnLykgewotICAgICAg
ICAkam9pbmVkTmFtZSA9ICR0eXBlOwotICAgICAgICAkam9pbmVkTmFtZSA9fiBzL0Fic3xSZWwv
LzsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siJHtqb2luZWROYW1lfS5oIn0gPSAxOwotICAgIH0g
ZWxzaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7Ci0gICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkpT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7Ci0gICAgfSBlbHNpZiAoJGlzQ2FsbGJhY2sp
IHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siSlMke3R5cGV9LmgifSA9IDE7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgIyBkZWZhdWx0LCBpbmNsdWRlIHRoZSBzYW1lIG5hbWVkIGZpbGUKLSAgICAg
ICAgJGltcGxJbmNsdWRlc3siJHt0eXBlfS5oIn0gPSAxOwotICAgIH0KLQorICAgIAorICAgIEFk
ZEluY2x1ZGVzRm9yVHlwZSgkdHlwZSwgJGlzQ2FsbGJhY2ssIFwlaW1wbEluY2x1ZGVzKTsKKyAg
ICAKICAgICAjIGFkZGl0aW9uYWwgaW5jbHVkZXMgKHRoaW5ncyBuZWVkZWQgdG8gY29tcGlsZSB0
aGUgYmluZGluZ3MgYnV0IG5vdCB0aGUgaGVhZGVyKQotCiAgICAgaWYgKCR0eXBlIGVxICJDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkNhbnZhc0dy
YWRpZW50LmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkNhbnZhc1BhdHRlcm4uaCJ9
ID0gMTsKQEAgLTI3OSw2ICsyNjIsMzkgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgIH0K
IH0KIAorc3ViIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyCit7CisgICAgbXkgJHR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIG15ICRpc0NhbGxiYWNrID0g
QF8gPyBzaGlmdCA6IDA7CisgICAgCisgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBlLCAkaXND
YWxsYmFjaywgXCVoZWFkZXJJbmNsdWRlcyk7Cit9CisKK3N1YiBBZGRJbmNsdWRlc0ZvclR5cGUK
K3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworICAgIG15ICRpc0NhbGxiYWNrID0gc2hpZnQ7Cisg
ICAgbXkgJGluY2x1ZGVzUmVmID0gc2hpZnQ7CisKKyAgICAjIFdoZW4gd2UncmUgZmluaXNoZWQg
d2l0aCB0aGUgb25lLWZpbGUtcGVyLWNsYXNzCisgICAgIyByZW9yZ2FuaXphdGlvbiwgd2Ugd29u
J3QgbmVlZCB0aGVzZSBzcGVjaWFsIGNhc2VzLgorICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQ
cmltaXRpdmVUeXBlKCR0eXBlKSBvciAkY29kZUdlbmVyYXRvci0+QXZvaWRJbmNsdXNpb25PZlR5
cGUoJHR5cGUpCisgICAgICAgIG9yICR0eXBlIGVxICJET01TdHJpbmciIG9yICR0eXBlIGVxICJE
T01PYmplY3QiIG9yICR0eXBlIGVxICJBcnJheSIpIHsKKyAgICB9IGVsc2lmICgkdHlwZSA9fiAv
U1ZHUGF0aFNlZy8pIHsKKyAgICAgICAgJGpvaW5lZE5hbWUgPSAkdHlwZTsKKyAgICAgICAgJGpv
aW5lZE5hbWUgPX4gcy9BYnN8UmVsLy87CisgICAgICAgICRpbmNsdWRlc1JlZi0+eyIke2pvaW5l
ZE5hbWV9LmgifSA9IDE7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIp
IHsKKyAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7Cisg
ICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oIn0gPSAxOwor
ICAgIH0gZWxzaWYgKCRpc0NhbGxiYWNrKSB7CisgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKUyR7
dHlwZX0uaCJ9ID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICAjIGRlZmF1bHQsIGluY2x1ZGUg
dGhlIHNhbWUgbmFtZWQgZmlsZQorICAgICAgICAkaW5jbHVkZXNSZWYtPnsiJHt0eXBlfS5oIn0g
PSAxOworICAgIH0KK30KKwogIyBGSVhNRTogVGhpcyBtZXRob2Qgd2lsbCBnbyBhd2F5IG9uY2Ug
YWxsIFNWRyBhbmltYXRlZCBwcm9wZXJ0aWVzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIG5ldyBzY2hl
bWUuCiBzdWIgQWRkSW5jbHVkZXNGb3JTVkdBbmltYXRlZFR5cGUKIHsKQEAgLTY3Miw3ICs2ODgs
OSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIkaW1wbENs
YXNzTmFtZS5oIn0gPSAxOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgSW1wbGVtZW50YXRpb24g
Y2xhc3MgZm9yd2FyZCBkZWNsYXJhdGlvbgotICAgICAgICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRl
ZCgkaW1wbENsYXNzTmFtZSkgdW5sZXNzICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsK
KyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAgICAgICBB
ZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgkaW1wbENsYXNzTmFtZSkgdW5sZXNzICRzdmdQcm9wZXJ0
eU9yTGlzdFByb3BlcnR5VHlwZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEFkZENsYXNzRm9y
d2FyZElmTmVlZGVkKCJKU0RPTVdpbmRvd1NoZWxsIikgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyI7CkBAIC02ODAsOCArNjk4LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBD
bGFzcyBkZWNsYXJhdGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkY2xhc3NO
YW1lIDogcHVibGljICRwYXJlbnRDbGFzc05hbWUge1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB0eXBlZGVmICRwYXJlbnRDbGFzc05hbWUgQmFzZTtcbiIpOwotICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKIAorICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJwcm90ZWN0ZWQ6XG4iKTsKICAgICAjIENvbnN0cnVjdG9yCiAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
JGNsYXNzTmFtZShKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0
cjwkaW1wbFR5cGU+LCBKU0RPTVdpbmRvd1NoZWxsKik7XG4iKTsKQEAgLTY5MSw2ICs3MDksMjUg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
JGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0
cjwkaW1wbFR5cGU+KTtcbiIpOwogICAgIH0KIAorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJw
dWJsaWM6XG4iKTsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRl
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hl
bGwpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgaW1wbCwgd2luZG93U2hlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgeworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGlt
cGxUeXBlPiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBuZXcgKEpT
Qzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1l
fShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgfVxuXG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBZGRJbmNsdWRl
c0ZvclR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGU7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFz
c05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1l
PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB9XG5cbiIpOworICAgIH0KKwogICAgICMgUHJvdG90eXBlCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIikgdW5sZXNzICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9NR2xvYmFsT2JqZWN0In0pOwogCkBAIC05
NjAsMTMgKzk5NywxNSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiY2xhc3MgJHtjbGFzc05hbWV9UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0IHtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdHlw
ZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlO1xuIik7CiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QpO1xuIik7Ci0gICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBKU0M6OkpTR2xvYmFsRGF0
YSopO1xuIik7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgbmUgIkRPTVdp
bmRvdyIgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4
dCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsK
ICAgICB9CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxu
Iik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNz
TmFtZX1Qcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7XG4iKTsKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIH1cblxuIik7CisKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKICAgICBpZiAoJG51bUZ1
bmN0aW9ucyA+IDAgfHwgJG51bUNvbnN0YW50cyA+IDAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1Byb3RvdHlwZUdldE93blByb3BlcnR5U2xvdCJ9KSB7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJv
cGVydHlTbG90Jik7XG4iKTsKQEAgLTk5MSw2ICsxMDMwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAgICAgIyBDdXN0b20gZGVmaW5lR2V0dGVyIGZ1bmN0aW9uCiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIGdldHRlckZ1
bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVByb3RvdHlwZURlZmluZUdldHRlciJ9OwogCisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIlxucHJpdmF0ZTpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfVxuIik7CiAKICAgICAjIHN0cnVjdHVyZSBmbGFncwpAQCAt
MTI1Niw3ICsxMjk2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAkaW1wbElu
Y2x1ZGVzeyI8d3RmL0dldFB0ci5oPiJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPiJ9ID0gMSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSGFzTnVtZXJpY0luZGV4R2V0dGVyIn07CiAKLSAgICBBZGRJbmNsdWRlc0ZvclR5cGUo
JGludGVyZmFjZU5hbWUpOworICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCgkaW50ZXJmYWNl
TmFtZSk7CiAKICAgICBAaW1wbENvbnRlbnQgPSAoKTsKIApAQCAtMTM1MSwxNyArMTM5MSw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2lu
Zm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU09iamVjdFdp
dGhHbG9iYWxPYmplY3Q6OnNfaW5mbywgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwIH07
XG5cbiIpOwogICAgIH0KLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkKiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRlKHNpemUpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2lmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInZvaWQqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6b3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIGdsb2JhbERhdGEtPmhlYXAuYWxsb2NhdGUoc2l6ZSk7XG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIG5lICJET01XaW5kb3ciICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJc1dvcmtlckNvbnRleHQifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpT
T2JqZWN0KiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Q
cm90b3R5cGU8JHtjbGFzc05hbWV9PihleGVjLCBnbG9iYWxPYmplY3QpO1xuIik7CkBAIC0xNDQ4
LDExICsxNDc4LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAjIENvbnN0
cnVjdG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAg
IEFkZEluY2x1ZGVzRm9yVHlwZSgiSlNET01XaW5kb3dTaGVsbCIpOworICAgICAgICBBZGRJbmNs
dWRlc0ZvclR5cGVJbkltcGwoIkpTRE9NV2luZG93U2hlbGwiKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpT
RE9NV2luZG93U2hlbGwqIHNoZWxsKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIDogJHBhcmVudENsYXNzTmFtZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHNoZWxs
KVxuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNX
b3JrZXJDb250ZXh0In0pIHsKLSAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRpbnRlcmZhY2VO
YW1lKTsKKyAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRpbnRlcmZhY2VOYW1lKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwk
aW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAk
cGFyZW50Q2xhc3NOYW1lKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbClcbiIpOwogICAgIH0g
ZWxzZSB7CkBAIC0xNDcxLDYgKzE1MDEsMjMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dEFub255bW91c1ZhbHVlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBpLCBKU1ZhbHVlKCkpO1xuIik7CiAgICAgfQogICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAKKyAgICAjaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgIyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRjbGFz
c05hbWUqICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsLCBKU0RPTVdpbmRv
d1NoZWxsKiB3aW5kb3dTaGVsbClcbiIpOworICAgICMgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKKyAgICAjICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAjICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAjfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAjICAgIHB1c2goQGltcGxD
b250ZW50LCAiJGNsYXNzTmFtZSogJHtjbGFzc05hbWV9OjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGlt
cGwpXG4iKTsKKyAgICAjICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgIyAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8JGNsYXNzTmFt
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwg
aW1wbCk7XG4iKTsKKyAgICAjICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAj
fSBlbHNlIHsKKyAgICAjICAgIHB1c2goQGltcGxDb250ZW50LCAiJGNsYXNzTmFtZSogJHtjbGFz
c05hbWV9OjpjcmVhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7CisgICAgIyAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICMgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLmhlYXApKSAke2NsYXNzTmFtZX0oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGlt
cGwpO1xuIik7CisgICAgIyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgI30K
IAogICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpXG4iKTsKQEAgLTE0ODcsOSArMTUzNCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6Y3Jl
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAo
JGhhc1BhcmVudCAmJiAkcGFyZW50Q2xhc3NOYW1lIG5lICJKU0M6OkRPTU5vZGVGaWx0ZXIiKSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbmV3IChleGVjKSAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsICR7
Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
JHtwYXJlbnRDbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAk
e2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
ICR7cGFyZW50Q2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFs
T2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpO1xuIik7
CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0K
QEAgLTE4OTAsNyArMTkzNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBG
dW5jdGlvbnMKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKICAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICBBZGRJ
bmNsdWRlc0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAg
QWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKIAog
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRjbGFzc05hbWUpIC4gIlByb3RvdHlwZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKIApAQCAtMjQwOSwxMiArMjQ1Niwx
MiBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
bmV4dDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlw
ZUluSW1wbCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5
cGUpIC4gIiAke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIo
Iik7CiAKICAgICAgICAgICAgIG15IEBhcmdzID0gKCk7CiAgICAgICAgICAgICBmb3JlYWNoIG15
ICRwYXJhbSAoQHBhcmFtcykgewotICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgk
cGFyYW0tPnR5cGUsIDEpOworICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1w
bCgkcGFyYW0tPnR5cGUsIDEpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3MsIEdldE5hdGl2
ZVR5cGUoJHBhcmFtLT50eXBlKSAuICIgIiAuICRwYXJhbS0+bmFtZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgam9pbigiLCAiLCBAYXJncykpOwpAQCAt
MzAzMSw4ICszMDc4LDE0IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAg
ICBteSAkY2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0
aCJ9OwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY2xhc3MgJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0gOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qge1xuIik7Ci0gICAgcHVzaChAJG91
dHB1dEFycmF5LCAicHVibGljOlxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHJpdmF0
ZTpcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qq
KTtcblxuIik7CisgICAgCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHVibGljOlxuIik7Cisg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUq
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICB7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVy
biBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjb25zdHJ1Y3RvckNsYXNzTmFtZT4oKmV4ZWMtPmhl
YXAoKSkpICRjb25zdHJ1Y3RvckNsYXNzTmFtZShleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKIAogICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAJKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYz
LDE1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmYKICN1bmRlZiBU
SFVOS19HRU5FUkFUT1IKIHN0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CiBjbGFzcyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Ci1wdWJsaWM6Citwcml2YXRlOgogICAg
IEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCitwdWJsaWM6CisgICAgc3RhdGljIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
eworICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKGV4
ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19p
bmZvOwpAQCAtMTQ0LDcgKzE1MCw3IEBAIEpTVGVzdEludGVyZmFjZTo6SlNUZXN0SW50ZXJmYWNl
KFN0cnVjdHUKIAogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZTo6Y3JlYXRlUHJvdG90eXBlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gbmV3IChleGVjKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBnbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKSk7CisgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSkpOwogfQogCiBib29sIEpTVGVzdEludGVyZmFjZTo6Z2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiA5
MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTggKzI0LDIzIEBACiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgVGVzdEludGVyZmFjZTsKLQogY2xhc3MgSlNUZXN0SW50ZXJmYWNl
IDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsK
LXB1YmxpYzoKK3Byb3RlY3RlZDoKICAgICBKU1Rlc3RJbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4pOworcHVibGlj
OgorICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RJ
bnRlcmZhY2U+IGltcGwpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBK
U1Rlc3RJbnRlcmZhY2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgIH0KKwog
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTYyLDExICs2NywxOCBAQCBjbGFz
cyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJsaWMgCiAgICAgdHlwZWRlZiBKU0M6OkpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3Vu
dCwgJnNfaW5mbyk7CiAgICAgfQorCitwcml2YXRlOgogICAgIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7IH0K
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw5ICs2NCwxNSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0TWVkaWFRCiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCiBzdGF0aWMgSlNDX0NPTlNU
X0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzLCAwIH07CiBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHVibGljOgorcHJpdmF0
ZToKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKK3B1YmxpYzoK
KyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3Io
ZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgIH0KKwogICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBz
X2luZm87CkBAIC0xNDAsNyArMTQ2LDcgQEAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
SlNUZXN0TWVkaQogCiBKU09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3Jl
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1
cm4gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAogYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkocmV2aXNpb24gOTEyNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxOCArMjIsMjMgQEAKICNkZWZp
bmUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcl9oCiAKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI7
Ci0KIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgOiBwdWJsaWMgSlNET01XcmFw
cGVyIHsKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwotcHVibGljOgorcHJvdGVjdGVk
OgogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGltcGwpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgfQor
CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtNjAsNiArNjUsMTEgQEAgY2xh
c3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdAogICAgIHR5cGVkZWYgSlNDOjpK
U09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICB9CisKICAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYpOwpAQCAtNjcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Ns
b3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQorCitwcml2YXRlOgogICAgIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkgeyB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiA5MTI3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDE1IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVz
dE9iajo6Q09OU1RfVkEKIENPTVBJTEVfQVNTRVJUKDB4MWFiYyA9PSBUZXN0T2JqOjpDT05TVF9W
QUxVRV8xNCwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8xNElzV3JvbmdVc2VEb250Q2hlY2tFbnVt
cyk7CiAKIGNsYXNzIEpTVGVzdE9iakNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9y
T2JqZWN0IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKK3B1
YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0T2JqQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdE9iakNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0T2JqQ29uc3Ry
dWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgIH0KKwogICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNz
SW5mbyBzX2luZm87CkBAIC0yNjUsNyArMjcxLDcgQEAgSlNUZXN0T2JqOjpKU1Rlc3RPYmooU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiBKU09iamVjdCogSlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBuZXcgKGV4ZWMpIEpTVGVzdE9ialByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCwgSlNUZXN0T2JqUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAg
ICByZXR1cm4gSlNUZXN0T2JqUHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QsIEpTVGVzdE9ialByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9
CiAKIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmgJKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxOCArMjIsMjMgQEAK
ICNkZWZpbmUgSlNUZXN0T2JqX2gKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1
ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50
aW1lL09iamVjdFByb3RvdHlwZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRl
c3RPYmo7Ci0KIGNsYXNzIEpTVGVzdE9iaiA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5
cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7Ci1wdWJsaWM6Citwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0
T2JqKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RP
Ymo+KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0T2JqKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0
cjxUZXN0T2JqPiBpbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0
T2JqKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICB9CisKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC02OSw2ICs3NCwxMSBAQCBjbGFzcyBKU1Rlc3RPYmpQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKCiAgICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCBCYXNlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxm
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU1Rl
c3RPYmpQcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2Jq
UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RPYmpQcm90b3R5cGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBK
U0M6OkNsYXNzSW5mbyBzX2luZm87CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CkBAIC03Niw2ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19p
bmZvKTsKICAgICB9CisKK3ByaXZhdGU6CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfQogcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAko
cmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsOSArNjUsMTUgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFNl
cmlhbAogI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgogc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUg
SGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9y
VGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXB1
YmxpYzoKK3ByaXZhdGU6CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpOworICAgIH0KKwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC0x
MzAsNyArMTM2LDcgQEAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpKUwog
CiBKU09iamVjdCogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKKyAgICByZXR1cm4gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CiB9CiAKIGJvb2wgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHJldmlzaW9uIDkxMjcxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxOCArMjQsMjMgQEAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOwotCiBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICB0eXBlZGVmIEpTRE9N
V3JhcHBlciBCYXNlOwotcHVibGljOgorcHJvdGVjdGVkOgogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
UGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPik7CitwdWJsaWM6
CisgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gaW1wbCkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVh
cCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgaW1wbCk7CisgICAgfQorCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0
ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYp
OwpAQCAtNjIsMTEgKzY3LDE4IEBAIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmEKICAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU+KGdsb2JhbERhdGEu
aGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZShnbG9i
YWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgfQorCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CisKK3By
aXZhdGU6CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhH
bG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfQogcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5o
CShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDE2IEBACiBuYW1lc3BhY2UgSlNDIHsKICAg
ICAKIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKK3ByaXZhdGU6CisgICAg
UnVudGltZUFycmF5KEV4ZWNTdGF0ZSosIEJpbmRpbmdzOjpBcnJheSopOworCiBwdWJsaWM6Cisg
ICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgQmluZGluZ3M6
OkFycmF5KiBhcnJheSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxS
dW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgYXJyYXkpOwor
ICAgIH0KKwogICAgIHR5cGVkZWYgQmluZGluZ3M6OkFycmF5IEJpbmRpbmdzQXJyYXk7Ci0gICAg
UnVudGltZUFycmF5KEV4ZWNTdGF0ZSosIEJpbmRpbmdzOjpBcnJheSopOwogICAgIHZpcnR1YWwg
flJ1bnRpbWVBcnJheSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgJKHJldmlzaW9uIDkxMjcxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogY2xhc3MgUnVudGltZU9iamVjdCA6IHB1
YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewotcHVibGljOgorcHJvdGVjdGVkOiAgICAK
ICAgICBSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4pOworCitwdWJsaWM6CisgICAgc3RhdGljIFJ1bnRpbWVP
YmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0Pigq
ZXhlYy0+aGVhcCgpKSkgUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgaW5zdGFuY2UpOworICAgIH0KKwogICAgIHZpcnR1YWwgflJ1bnRpbWVPYmplY3QoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUFycmF5SlNDLmNwcAkocmV2aXNpb24gOTEyNzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQXJyYXlKU0MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgSmF2YUFycmF5Ojpjb252ZXJ0Sk9i
amVjdFRvQXJyYXkKICAgICBpZiAodHlwZVswXSAhPSAnWycpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZUFycmF5KGV4ZWMsIG5l
dyBKYXZhQXJyYXkoYW5PYmplY3QsIHR5cGUsIHJvb3RPYmplY3QpKTsKKyAgICByZXR1cm4gUnVu
dGltZUFycmF5OjpjcmVhdGUoZXhlYywgbmV3IEphdmFBcnJheShhbk9iamVjdCwgdHlwZSwgcm9v
dE9iamVjdCkpOwogfQogCiBKYXZhQXJyYXk6OkphdmFBcnJheShqb2JqZWN0IGFycmF5LCBjb25z
dCBjaGFyKiB0eXBlLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCShyZXZpc2lvbiA5MTI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA2LDcgKzEwNiw3IEBAIFJ1bnRpbWVPYmplY3QqIEluc3RhbmNlOjpuZXdSdW50aW1lT2Jq
ZWMKIAogICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHBy
b3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAvLyBXZSBuZWVkIHRv
IHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KLSAgICByZXR1cm4gbmV3
IChleGVjKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
V2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lT2JqZWN0PihleGVjKSwg
dGhpcyk7CisgICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVu
dGltZU9iamVjdD4oZXhlYyksIHRoaXMpOwogfQogCiB2b2lkIEluc3RhbmNlOjp3aWxsSW52YWxp
ZGF0ZVJ1bnRpbWVPYmplY3QoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y191dGlsaXR5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfdXRpbGl0eS5tbQkocmV2aXNpb24gOTEyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCBK
U1ZhbHVlIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0CiAgICAgICAgICAgICBpZiAo
W29iaiBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICAgICAgICAgIHJl
dHVybiBqc051bWJlcihbb2JqIGRvdWJsZVZhbHVlXSk7CiAgICAgICAgICAgICBpZiAoW29iaiBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyAoZXhlYykgUnVudGltZUFycmF5KGV4ZWMsIG5ldyBPYmpjQXJyYXkob2JqLCByb290T2JqZWN0
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5l
dyBPYmpjQXJyYXkob2JqLCByb290T2JqZWN0KSk7CiAgICAgICAgICAgICBpZiAoW29iaiBpc0tp
bmRPZkNsYXNzOndlYlNjcmlwdE9iamVjdENsYXNzKCldKSB7CiAgICAgICAgICAgICAgICAgSlNP
YmplY3QqIGltcCA9IFtvYmogX2ltcF07CiAgICAgICAgICAgICAgICAgcmV0dXJuIGltcCA/IGlt
cCA6IGpzVW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVu
dGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRp
bWUuY3BwCShyZXZpc2lvbiA5MTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTczLDE2ICs5NzMsMTYgQEAgSlNWYWx1ZSBj
b252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZQogICAgIGlmICh0eXBlID09IFFNZXRhVHlw
ZTo6UVZhcmlhbnRMaXN0KSB7CiAgICAgICAgIFFWYXJpYW50TGlzdCB2bCA9IHZhcmlhbnQudG9M
aXN0KCk7CiAgICAgICAgIHFDb252RGVidWcoKSA8PCAiZ290IGEgIiA8PCB2bC5jb3VudCgpIDw8
ICIgbGVuZ3RoIGxpc3Q6IiA8PCB2bDsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGlt
ZUFycmF5KGV4ZWMsIG5ldyBRdEFycmF5PFFWYXJpYW50Pih2bCwgUU1ldGFUeXBlOjpWb2lkLCBy
b290KSk7CisgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjLCBuZXcgUXRB
cnJheTxRVmFyaWFudD4odmwsIFFNZXRhVHlwZTo6Vm9pZCwgcm9vdCkpOwogICAgIH0gZWxzZSBp
ZiAodHlwZSA9PSBRTWV0YVR5cGU6OlFTdHJpbmdMaXN0KSB7CiAgICAgICAgIFFTdHJpbmdMaXN0
IHNsID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nTGlzdD4oKTsKLSAgICAgICAgcmV0dXJuIG5ldyAo
ZXhlYykgUnVudGltZUFycmF5KGV4ZWMsIG5ldyBRdEFycmF5PFFTdHJpbmc+KHNsLCBRTWV0YVR5
cGU6OlFTdHJpbmcsIHJvb3QpKTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRl
KGV4ZWMsIG5ldyBRdEFycmF5PFFTdHJpbmc+KHNsLCBRTWV0YVR5cGU6OlFTdHJpbmcsIHJvb3Qp
KTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gKFFNZXRhVHlwZTo6VHlwZSkgcU1ldGFUeXBlSWQ8
UU9iamVjdExpc3Q+KCkpIHsKICAgICAgICAgUU9iamVjdExpc3Qgb2w9IHZhcmlhbnQudmFsdWU8
UU9iamVjdExpc3Q+KCk7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShl
eGVjLCBuZXcgUXRBcnJheTxRT2JqZWN0Kj4ob2wsIFFNZXRhVHlwZTo6UU9iamVjdFN0YXIsIHJv
b3QpKTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBRdEFy
cmF5PFFPYmplY3QqPihvbCwgUU1ldGFUeXBlOjpRT2JqZWN0U3Rhciwgcm9vdCkpOwogICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSAoUU1ldGFUeXBlOjpUeXBlKXFNZXRhVHlwZUlkPFFMaXN0PGludD4g
PigpKSB7CiAgICAgICAgIFFMaXN0PGludD4gaWw9IHZhcmlhbnQudmFsdWU8UUxpc3Q8aW50PiA+
KCk7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRB
cnJheTxpbnQ+KGlsLCBRTWV0YVR5cGU6OkludCwgcm9vdCkpOworICAgICAgICByZXR1cm4gUnVu
dGltZUFycmF5OjpjcmVhdGUoZXhlYywgbmV3IFF0QXJyYXk8aW50PihpbCwgUU1ldGFUeXBlOjpJ
bnQsIHJvb3QpKTsKICAgICB9CiAKICAgICBpZiAodHlwZSA9PSAoUU1ldGFUeXBlOjpUeXBlKXFN
ZXRhVHlwZUlkPFFWYXJpYW50PigpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101665</attachid>
            <date>2011-07-21 16:43:34 -0700</date>
            <delta_ts>2011-07-26 08:42:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64732-20110721164333.patch</filename>
            <type>text/plain</type>
            <size>63374</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE1MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDctMjEgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWZhY3RvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00gYmluZGluZ3Mg
dG8gcmVwbGFjZSBvcGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjaW5nIHRoZSBw
dWJsaWMgY29uc3RydWN0b3JzIGluIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00g
YmluZGluZ3Mgd2l0aCBzdGF0aWMgCisgICAgICAgIGNyZWF0ZSBtZXRob2RzLiAgSlNCeXRlQXJy
YXkgaXMgdXNlZCBieSBzZXZlcmFsIG9mIHRoZXNlIGJpbmRpbmdzIGluIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBydW50aW1l
L0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgorCiAyMDExLTA3LTIxICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5MDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gOTE1MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1
LDcgQEAgX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfNwogX19aTjNKU0Mx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKIF9fWk4zSlNDMTFKU0J5
dGVBcnJheTEzc19kZWZhdWx0SW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTE1Y3JlYXRlU3Ry
dWN0dXJlRVJOU18xMkpTR2xvYmFsRGF0YUVOU183SlNWYWx1ZUVQS05TXzlDbGFzc0luZm9FCi1f
X1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVQTjNX
VEY5Qnl0ZUFycmF5RQorX19aTjNKU0MxMUpTQnl0ZUFycmF5NmNyZWF0ZUVQTlNfOUV4ZWNTdGF0
ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQogX19aTjNKU0MxMVBhcnNlckFyZW5h
NXJlc2V0RXYKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwU291
cmNlQ29kZUUKIF9fWk4zSlNDMTFjcmVhdGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3Ry
aW5nRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWYJKHJldmlzaW9uIDkxNTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDYgQEAgRVhQT1JUUwogICAgID8/MEludGVybmFsRnVu
Y3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBQQVZT
dHJ1Y3R1cmVAMUBBQlZJZGVudGlmaWVyQDFAQFoKICAgICA/PzBKU0FycmF5QEpTQ0BASUFFQEFB
VkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAxQEBaCiAgICAgPz8wSlNBcnJheUBKU0NAQElB
RUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBBQlZBcmdMaXN0QDFAQFoKLSAgICA/
PzBKU0J5dGVBcnJheUBKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBQQVZTdHJ1Y3R1cmVAMUBQQVZC
eXRlQXJyYXlAV1RGQEBAWgogICAgID8/MEpTRnVuY3Rpb25ASlNDQEBBQUVAUEFWRXhlY1N0YXRl
QDFAUEFWSlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBIQUJWSWRlbnRpZmllckAxQFA2
SV9KMEBaQFoKICAgICA/PzBKU0xvY2tASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAQFoKICAgICA/
PzBKU09iamVjdFdpdGhHbG9iYWxPYmplY3RASlNDQEBJQUVAQUFWSlNHbG9iYWxEYXRhQDFAUEFW
SlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBAWgpAQCAtOTYsNiArOTUsNyBAQCBFWFBP
UlRTCiAgICAgP2NvbnZlcnRVVEYxNlRvVVRGOEBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lv
blJlc3VsdEAxMkBQQVBCX1dQQl9XUEFQQURQQURfTkBaCiAgICAgP2NvbnZlcnRVVEY4VG9VVEYx
NkBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRFBCRFBBUEFfV1BB
X1dfTkBaCiAgICAgP2NyZWF0ZUBCeXRlQXJyYXlAV1RGQEBTQT9BVj8kUGFzc1JlZlB0ckBWQnl0
ZUFycmF5QFdURkBAQDJASUBaCisgICAgP2NyZWF0ZUBKU0J5dGVBcnJheUBKU0NAQFNBUEFWMTJA
UEFWRXhlY1N0YXRlQDJAUEFWU3RydWN0dXJlQDJAUEFWQnl0ZUFycmF5QFdURkBAQFoKICAgICA/
Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERhdGFA
SlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQEBaCiAgICAgP2NyZWF0ZUBPcGFxdWVKU1N0
cmluZ0BAU0E/QVY/JFBhc3NSZWZQdHJAVU9wYXF1ZUpTU3RyaW5nQEBAV1RGQEBBQlZVU3RyaW5n
QEpTQ0BAQFoKICAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNBUEFWMTJAQUFWSlNHbG9iYWxEYXRh
QDJAQUJWVVN0cmluZ0AyQFc0UmVnRXhwRmxhZ3NAMkBAWgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkocmV2aXNpb24gOTE1MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDExIEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheShFeGVjU3RhdGUq
IGV4ZWMKIHsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgp
KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKIH0KKyAgICAgICAgCitKU0J5dGVBcnJheSogSlNC
eXRlQXJyYXk6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBC
eXRlQXJyYXkqIHN0b3JhZ2UpCit7CisgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQnl0
ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgSlNCeXRlQXJyYXkoZXhlYywgc3RydWN0dXJlLCBzdG9y
YWdlKTsKK30KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIEpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJy
YXkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5o
CShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0
ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIHNldEluZGV4KGksIGJ5dGVWYWx1ZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBXVEY6OkJ5dGVBcnJh
eSogc3RvcmFnZSk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5KiBzdG9yYWdlKTsKKyAgICAgICAgCisgICAgcHVibGlj
OgorICAgICAgICBzdGF0aWMgSlNCeXRlQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBCeXRlQXJyYXkqKTsKKwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTUy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDgyIEBACisyMDExLTA3LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgSlMgRE9NIGJp
bmRpbmdzIHRvIHJlcGxhY2Ugb3BlcmF0b3IgbmV3IHdpdGggc3RhdGljIGNyZWF0ZSBtZXRob2Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDczMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gKE9PUFMhKQorCisgICAgICAgIFJlcGxhY2luZyB0aGUgcHVibGljIGNvbnN0cnVjdG9y
cyBpbiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgSlMgRE9NIGJpbmRpbmdzIGluIENvZGVH
ZW5lcmF0b3JKUy5wbQorICAgICAgICB3aXRoIHN0YXRpYyBjcmVhdGUgbWV0aG9kcy4gIFRoaXMg
aXMgcGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyBlZmZvcnQgdG8gdXNlIHN0YXRpYyBjcmVh
dGUgbWV0aG9kcworICAgICAgICBpbiB0aGUgaGVhZGVycyBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVz
IChzbyBhcyB0byBiZSBpbmxpbmUtYWJsZSkgaW4gZmF2b3Igb2YgcHVibGljIGNvbnN0cnVjdG9y
cyB0aHJvdWdob3V0IEpTQy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnN0cnVjdG9yOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6aGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6bG9jYXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6
OmxvY2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU09wdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGVJ
bkltcGwpOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIpOgorICAgICAgICAo
QWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRl
UHJvdG90eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Y3JlYXRl
UHJvdG90eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUFy
cmF5SlNDLmNwcDoKKyAgICAgICAgKEphdmFBcnJheTo6Y29udmVydEpPYmplY3RUb0FycmF5KToK
KyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6CisgICAgICAgICogYnJpZGdlL29iamMv
b2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydE9iamNWYWx1
ZVRvVmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OmNvbnZlcnRRVmFyaWFudFRvVmFsdWUpOgorICAgICAgICAqIGJyaWRn
ZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlKToK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisKIDIwMTEtMDctMjEgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB3ZWJnbGNvbnRleHRsb3N0IC8g
d2ViZ2xjb250ZXh0cmVzdG9yZWQgZGVsaXZlcnkgdG8gbWF0Y2ggc3BlYyBjaGFuZ2VzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gOTE1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgSlNBdWRpb0NvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0
cnVjdG9yV2l0aERvY3VtZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTQXVkaW9Db25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qq
KTsKKyAgICAgICAgc3RhdGljIEpTQXVkaW9Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU0F1ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0F1ZGlvQ29u
c3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICB9CiAKICAg
ICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKQEAg
LTQ2LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3Qg
SlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgSlNBdWRpb0Nv
bnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCopOwogICAgICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzks
NyArMTM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHsKICAgICAgICAgQVNTRVJUKG5v
ZGUpOwogICAgICAgICBBU1NFUlQoIWdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMp
LCBub2RlKSk7Ci0gICAgICAgIFdyYXBwZXJDbGFzcyogd3JhcHBlciA9IG5ldyAoZXhlYykgV3Jh
cHBlckNsYXNzKGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMsIGdsb2JhbE9iamVj
dCksIGdsb2JhbE9iamVjdCwgbm9kZSk7CisgICAgICAgIFdyYXBwZXJDbGFzcyogd3JhcHBlciA9
IFdyYXBwZXJDbGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMs
IGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgbm9kZSk7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGUgZW50aXJlIGZ1bmN0aW9uIGNhbiBiZSByZW1vdmVkLCBvbmNlIHdlIGZpeCBjYWNoaW5nLgog
ICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgb25lLW9mZiBoYWNrIHRvIG1ha2UgTm9kZXMg
Y2FjaGUgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QuCiAgICAgICAgIGNhY2hlV3JhcHBlcihj
dXJyZW50V29ybGQoZXhlYyksIG5vZGUsIHdyYXBwZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5MTUyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHsKICAgICAg
ICAgaWYgKEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gY29uc3RfY2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmdldCgmQ29uc3RydWN0b3JD
bGFzczo6c19pbmZvKS5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAg
ICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIENvbnN0cnVjdG9y
Q2xhc3MoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGNvbnN0X2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgSlNDOjpKU09iamVjdCog
Y29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JD
bGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKICAgICAgICAgQVNTRVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuY29udGFpbnMoJkNvbnN0cnVjdG9yQ2xhc3M6
OnNfaW5mbykpOwogICAgICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiB0ZW1w
OwogICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+
Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRlbXApLmZpcnN0
LT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rv
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDcgKzQyOCw3IEBA
IEpTVmFsdWUgSlNET01XaW5kb3c6Omhpc3RvcnkoRXhlY1N0YXRlKiAKICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CiAKICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gY29uc3RfY2FzdDxKU0RPTVdp
bmRvdyo+KHRoaXMpOwotICAgIEpTSGlzdG9yeSoganNIaXN0b3J5ID0gbmV3IChleGVjKSBKU0hp
c3RvcnkoZ2V0RE9NU3RydWN0dXJlPEpTSGlzdG9yeT4oZXhlYywgd2luZG93KSwgd2luZG93LCBo
aXN0b3J5KTsKKyAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IEpTSGlzdG9yeTo6Y3JlYXRlKGdl
dERPTVN0cnVjdHVyZTxKU0hpc3Rvcnk+KGV4ZWMsIHdpbmRvdyksIHdpbmRvdywgaGlzdG9yeSk7
CiAgICAgY2FjaGVXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgaGlzdG9yeSwganNIaXN0b3J5
KTsKICAgICByZXR1cm4ganNIaXN0b3J5OwogfQpAQCAtNDQwLDcgKzQ0MCw3IEBAIEpTVmFsdWUg
SlNET01XaW5kb3c6OmxvY2F0aW9uKEV4ZWNTdGF0ZSoKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAKICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gY29uc3RfY2FzdDxKU0RPTVdpbmRvdyo+KHRo
aXMpOwotICAgIEpTTG9jYXRpb24qIGpzTG9jYXRpb24gPSBuZXcgKGV4ZWMpIEpTTG9jYXRpb24o
Z2V0RE9NU3RydWN0dXJlPEpTTG9jYXRpb24+KGV4ZWMsIHdpbmRvdyksIHdpbmRvdywgbG9jYXRp
b24pOworICAgIEpTTG9jYXRpb24qIGpzTG9jYXRpb24gPSBKU0xvY2F0aW9uOjpjcmVhdGUoZ2V0
RE9NU3RydWN0dXJlPEpTTG9jYXRpb24+KGV4ZWMsIHdpbmRvdyksIHdpbmRvdywgbG9jYXRpb24p
OwogICAgIGNhY2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uLCBqc0xvY2F0
aW9uKTsKICAgICByZXR1cm4ganNMb2NhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiA5MTUyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MSwxMCArNjEsMTAgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5k
b3coUGFzc1JlZgogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChP
bmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNh
biBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKkpTRE9NV2luZG93
Ojpjb21tb25KU0dsb2JhbERhdGEoKSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RPTVdpbmRv
d1Byb3RvdHlwZT4gcHJvdG90eXBlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCks
IG5ldyBKU0RPTVdpbmRvd1Byb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0
YSgpLCAwLCBwcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICBTdHJvbmc8SlNET01XaW5kb3dQcm90
b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBKU0RP
TVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRh
KCksIDAsIHByb3RvdHlwZVN0cnVjdHVyZSkpOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCksIHByb3RvdHlwZS5nZXQoKSk7Ci0gICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93
ID0gbmV3IChKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpIEpTRE9NV2luZG93KCpK
U0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgZG9tV2luZG93LCB0
aGlzKTsKKyAgICBKU0RPTVdpbmRvdyoganNET01XaW5kb3cgPSBKU0RPTVdpbmRvdzo6Y3JlYXRl
KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgZG9tV2luZG93
LCB0aGlzKTsKICAgICBwcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCpKU0RPTVdpbmRvdzo6
Y29tbW9uSlNHbG9iYWxEYXRhKCksIDAsIGpzRE9NV2luZG93KTsKICAgICBzZXRXaW5kb3coKkpT
RE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwganNET01XaW5kb3cpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDkxNTI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgSlNWYWx1ZSBKU0RvY3Vt
ZW50Ojpsb2NhdGlvbihFeGVjU3RhdGUqIAogICAgIGlmIChKU0RPTVdyYXBwZXIqIHdyYXBwZXIg
PSBnZXRDYWNoZWRXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbG9jYXRpb24pKQogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKIAotICAgIEpTTG9jYXRpb24qIGpzTG9jYXRpb24gPSBuZXcgKGV4
ZWMpIEpTTG9jYXRpb24oZ2V0RE9NU3RydWN0dXJlPEpTTG9jYXRpb24+KGV4ZWMsIGdsb2JhbE9i
amVjdCgpKSwgZ2xvYmFsT2JqZWN0KCksIGxvY2F0aW9uKTsKKyAgICBKU0xvY2F0aW9uKiBqc0xv
Y2F0aW9uID0gSlNMb2NhdGlvbjo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihl
eGVjLCBnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBsb2NhdGlvbik7CiAgICAgY2Fj
aGVXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbG9jYXRpb24sIGpzTG9jYXRpb24pOwogICAg
IHJldHVybiBqc0xvY2F0aW9uOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxNTI2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTSW1hZ2VD
b25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7CiAgICAgcHVi
bGljOgotICAgICAgICBKU0ltYWdlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29u
c3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgICAgICB7CkBAIC0zNyw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKICAgICAgICAgdmlydHVhbCBKU0M6
OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURh
dGFDdXN0b20uY3BwCShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgSWRlbnRpZmll
ciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOwogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3Bh
Q2xhc3NJbmZvID0geyAiQ2FudmFzUGl4ZWxBcnJheSIsICZKU0J5dGVBcnJheTo6QmFzZTo6c19p
bmZvLCAwLCAwIH07CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJvbmc8U3RydWN0dXJlPiwg
Y3BhU3RydWN0dXJlLCAoZXhlYy0+Z2xvYmFsRGF0YSgpLCBKU0J5dGVBcnJheTo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdWxsKCksICZjcGFDbGFzc0luZm8pKSk7Ci0g
ICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUsIG5ldyAo
ZXhlYykgSlNCeXRlQXJyYXkoZXhlYywgY3BhU3RydWN0dXJlLmdldCgpLCBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICB3cmFwcGVyLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgSlNCeXRlQXJyYXk6OmNyZWF0ZShl
eGVjLCBjcGFTdHJ1Y3R1cmUuZ2V0KCksIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlD
b3N0KGltYWdlRGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgCiAgICAgcmV0dXJuIHdyYXBw
ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTT3B0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNPcHRpb25Db25zdHJ1Y3RvciA6IHB1
YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBK
U09wdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgSlNPcHRpb25Db25zdHJ1Y3RvciogY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU09wdGlvbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgSlNPcHRpb25Db25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7
CisgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICAgICAgewpAQCAtMzgsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBKU09wdGlvbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogICAgICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOwogICAgIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwyNCAr
NzUsMjQgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgIC8v
IHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2Jq
ZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJv
dG90eXBlLikKICAgICBTdHJ1Y3R1cmUqIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRh
LCBqc051bGwoKSk7Ci0gICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2Vy
Q29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkg
SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQ
cm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICBTdHJvbmc8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBl
PiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTV29ya2VyQ29udGV4dFBy
b3RvdHlwZTo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUpKTsKIAogICAgIGlmIChtX3dvcmtlckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCgpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKCptX2dsb2JhbERhdGEsIHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAg
ICAgICBTdHJvbmc8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRD
b250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBK
U0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgMCwgZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOworICAgICAgICBTdHJvbmc8SlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKCptX2ds
b2JhbERhdGEsIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlKCptX2ds
b2JhbERhdGEsIDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0
ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLmdldCgp
KTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBu
ZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCptX2dsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoKSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRh
LCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUsIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAg
ICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0
YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIGRlZGljYXRlZENv
bnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29y
a2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtl
ckNvbnRleHQoKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0
cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KCptX2dsb2JhbERhdGEsIHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAgICAgICBT
dHJvbmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90
eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1NoYXJlZFdvcmtl
ckNvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZSkpOworICAgICAgICBTdHJvbmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90
eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIEpTU2hhcmVkV29ya2Vy
Q29udGV4dFByb3RvdHlwZTo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQ
cm90b3R5cGVTdHJ1Y3R1cmUpKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1No
YXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBzaGFyZWRD
b250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVy
LnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0KCptX2dsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b1No
YXJlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNl
dCgqbV9nbG9iYWxEYXRhLCBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkp
KTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1f
Z2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIHNo
YXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAs
IG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gOTE1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjM1LDMxICsyMzUsMTQgQEAgc3ViIEluZGV4R2V0
dGVyUmV0dXJuc1N0cmluZ3MKICAgICByZXR1cm4gMDsKIH0KIAotc3ViIEFkZEluY2x1ZGVzRm9y
VHlwZQorc3ViIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbAogewogICAgIG15ICR0eXBlID0gJGNv
ZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKICAgICBteSAkaXNDYWxsYmFjayA9IEBf
ID8gc2hpZnQgOiAwOwotCi0gICAgIyBXaGVuIHdlJ3JlIGZpbmlzaGVkIHdpdGggdGhlIG9uZS1m
aWxlLXBlci1jbGFzcwotICAgICMgcmVvcmdhbml6YXRpb24sIHdlIHdvbid0IG5lZWQgdGhlc2Ug
c3BlY2lhbCBjYXNlcy4KLSAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgk
dHlwZSkgb3IgJGNvZGVHZW5lcmF0b3ItPkF2b2lkSW5jbHVzaW9uT2ZUeXBlKCR0eXBlKQotICAg
ICAgICBvciAkdHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiRE9NT2JqZWN0IiBvciAk
dHlwZSBlcSAiQXJyYXkiKSB7Ci0gICAgfSBlbHNpZiAoJHR5cGUgPX4gL1NWR1BhdGhTZWcvKSB7
Ci0gICAgICAgICRqb2luZWROYW1lID0gJHR5cGU7Ci0gICAgICAgICRqb2luZWROYW1lID1+IHMv
QWJzfFJlbC8vOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2pvaW5lZE5hbWV9LmgifSA9IDE7
Ci0gICAgfSBlbHNpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKLSAgICAgICAgJGlt
cGxJbmNsdWRlc3siSlNYUGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJbmNs
dWRlc3siSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsKLSAgICB9IGVsc2lmICgkaXND
YWxsYmFjaykgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR7dHlwZX0uaCJ9ID0gMTsKLSAg
ICB9IGVsc2UgewotICAgICAgICAjIGRlZmF1bHQsIGluY2x1ZGUgdGhlIHNhbWUgbmFtZWQgZmls
ZQotICAgICAgICAkaW1wbEluY2x1ZGVzeyIke3R5cGV9LmgifSA9IDE7Ci0gICAgfQotCisgICAg
CisgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBlLCAkaXNDYWxsYmFjaywgXCVpbXBsSW5jbHVk
ZXMpOworICAgIAogICAgICMgYWRkaXRpb25hbCBpbmNsdWRlcyAodGhpbmdzIG5lZWRlZCB0byBj
b21waWxlIHRoZSBiaW5kaW5ncyBidXQgbm90IHRoZSBoZWFkZXIpCi0KICAgICBpZiAoJHR5cGUg
ZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3si
Q2FudmFzR3JhZGllbnQuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFzUGF0
dGVybi5oIn0gPSAxOwpAQCAtMjc5LDYgKzI2MiwzOSBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBl
CiAgICAgfQogfQogCitzdWIgQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIKK3sKKyAgICBteSAk
dHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7CisgICAgbXkgJGlzQ2Fs
bGJhY2sgPSBAXyA/IHNoaWZ0IDogMDsKKyAgICAKKyAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5
cGUsICRpc0NhbGxiYWNrLCBcJWhlYWRlckluY2x1ZGVzKTsKK30KKworc3ViIEFkZEluY2x1ZGVz
Rm9yVHlwZQoreworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkgJGlzQ2FsbGJhY2sgPSBz
aGlmdDsKKyAgICBteSAkaW5jbHVkZXNSZWYgPSBzaGlmdDsKKworICAgICMgV2hlbiB3ZSdyZSBm
aW5pc2hlZCB3aXRoIHRoZSBvbmUtZmlsZS1wZXItY2xhc3MKKyAgICAjIHJlb3JnYW5pemF0aW9u
LCB3ZSB3b24ndCBuZWVkIHRoZXNlIHNwZWNpYWwgY2FzZXMuCisgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICRjb2RlR2VuZXJhdG9yLT5Bdm9pZEluY2x1
c2lvbk9mVHlwZSgkdHlwZSkKKyAgICAgICAgb3IgJHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgJHR5
cGUgZXEgIkRPTU9iamVjdCIgb3IgJHR5cGUgZXEgIkFycmF5IikgeworICAgIH0gZWxzaWYgKCR0
eXBlID1+IC9TVkdQYXRoU2VnLykgeworICAgICAgICAkam9pbmVkTmFtZSA9ICR0eXBlOworICAg
ICAgICAkam9pbmVkTmFtZSA9fiBzL0Fic3xSZWwvLzsKKyAgICAgICAgJGluY2x1ZGVzUmVmLT57
IiR7am9pbmVkTmFtZX0uaCJ9ID0gMTsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAiWFBhdGhOU1Jl
c29sdmVyIikgeworICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNYUGF0aE5TUmVzb2x2ZXIuaCJ9
ID0gMTsKKyAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgi
fSA9IDE7CisgICAgfSBlbHNpZiAoJGlzQ2FsbGJhY2spIHsKKyAgICAgICAgJGluY2x1ZGVzUmVm
LT57IkpTJHt0eXBlfS5oIn0gPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgICMgZGVmYXVsdCwg
aW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlCisgICAgICAgICRpbmNsdWRlc1JlZi0+eyIke3R5
cGV9LmgifSA9IDE7CisgICAgfQorfQorCiAjIEZJWE1FOiBUaGlzIG1ldGhvZCB3aWxsIGdvIGF3
YXkgb25jZSBhbGwgU1ZHIGFuaW1hdGVkIHByb3BlcnRpZXMgYXJlIGNvbnZlcnRlZCB0byB0aGUg
bmV3IHNjaGVtZS4KIHN1YiBBZGRJbmNsdWRlc0ZvclNWR0FuaW1hdGVkVHlwZQogewpAQCAtNjcy
LDcgKzY4OCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkaGVhZGVySW5jbHVkZXN7
IiRpbXBsQ2xhc3NOYW1lLmgifSA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBJbXBsZW1l
bnRhdGlvbiBjbGFzcyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0gICAgICAgIEFkZENsYXNzRm9yd2Fy
ZElmTmVlZGVkKCRpbXBsQ2xhc3NOYW1lKSB1bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVy
dHlUeXBlOworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAg
ICAgICAgIEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKCRpbXBsQ2xhc3NOYW1lKSB1bmxlc3MgJHN2
Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlOworICAgICAgICB9CiAgICAgfQogCiAgICAgQWRk
Q2xhc3NGb3J3YXJkSWZOZWVkZWQoIkpTRE9NV2luZG93U2hlbGwiKSBpZiAkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IjsKQEAgLTY4MCwxNSArNjk4LDI1IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICMgQ2xhc3MgZGVjbGFyYXRpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xh
c3MgJGNsYXNzTmFtZSA6IHB1YmxpYyAkcGFyZW50Q2xhc3NOYW1lIHtcbiIpOwogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdHlwZWRlZiAkcGFyZW50Q2xhc3NOYW1lIEJhc2U7XG4iKTsK
LSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAKLSAgICAjIENvbnN0cnVj
dG9yCisgICAgIyBTdGF0aWMgY3JlYXRlIG1ldGhvZHMKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OkpTR2xv
YmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+LCBKU0RPTVdp
bmRvd1NoZWxsKik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNET01X
aW5kb3dTaGVsbCogd2luZG93U2hlbGwpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkg
JHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCwgd2luZG93U2hlbGwpO1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVs
c2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkg
ewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpKU0ds
b2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3Jl
YXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRh
LmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsKTtcbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7Cisg
ICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNzICRzdmdQ
cm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBp
bXBsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2Nh
dGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSAkY2xh
c3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfQogCiAgICAgIyBQcm90b3R5cGUK
QEAgLTg3NCw4ICs5MDIsMTcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3Vu
dCA9ICRudW1DYWNoZWRBdHRyaWJ1dGVzICsgQmFzZTo6QW5vbnltb3VzU2xvdENvdW50O1xuIik7
CiAgICAgfQogCi0gICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHJvdGVjdGVkOlxuIik7CisgICAgIyBDb25zdHJ1Y3RvcgorICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICRjbGFzc05hbWUoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQ
dHI8JGltcGxUeXBlPiwgSlNET01XaW5kb3dTaGVsbCopO1xuIik7CisgICAgfSBlbHNpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6SlNHbG9iYWxEYXRh
JiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xu
Iik7CisgICAgfQorCisgICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9ICIpOwogICAg
IGZvcmVhY2ggbXkgJHN0cnVjdHVyZUZsYWcgKGtleXMgJXN0cnVjdHVyZUZsYWdzKSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRzdHJ1Y3R1cmVGbGFnIC4gIiB8ICIpOwpAQCAtOTYw
LDEzICs5OTcsMTUgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgImNsYXNzICR7Y2xhc3NOYW1lfVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdCB7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHR5cGVk
ZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTtcbiIpOwogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90KTtcbiIpOwotICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNDOjpKU0dsb2JhbERhdGEq
KTtcbiIpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5lICJET01XaW5k
b3ciICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQi
fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAg
ICAgfQorCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJHtjbGFzc05hbWV9
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSlcbiIp
OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JHtjbGFzc05h
bWV9UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX1Qcm90b3R5cGUoZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7CisgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB9XG5cbiIpOworCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAgaWYgKCRudW1GdW5j
dGlvbnMgPiAwIHx8ICRudW1Db25zdGFudHMgPiAwIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkRlbGVnYXRpbmdQcm90b3R5cGVHZXRPd25Qcm9wZXJ0eVNsb3QifSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5U2xvdCYpO1xuIik7CkBAIC05OTEsNiArMTAzMCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5jdGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0ZXJGdW5j
dGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIifTsKIAorICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJcbnByaXZhdGU6XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKSB7IH1cbiIpOwogCiAgICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKQEAgLTEy
NTYsNyArMTI5Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgJGltcGxJbmNs
dWRlc3siPHd0Zi9HZXRQdHIuaD4ifSA9IDE7CiAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuaD4ifSA9IDEgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNDdXN0b21JbmRleEdldHRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ikhhc051bWVyaWNJbmRleEdldHRlciJ9OwogCi0gICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRp
bnRlcmZhY2VOYW1lKTsKKyAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwoJGludGVyZmFjZU5h
bWUpOwogCiAgICAgQGltcGxDb250ZW50ID0gKCk7CiAKQEAgLTEzNTEsMTcgKzEzOTEsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZv
ID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgJkpTQzo6SlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0OjpzX2luZm8sICYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSwgMCB9O1xu
XG4iKTsKICAgICB9Ci0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0ZShzaXplKTtcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ2b2lkKiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6Om9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKVxuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRlKHNpemUpO1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2UgeworICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09i
amVjdCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NUHJv
dG90eXBlPCR7Y2xhc3NOYW1lfT4oZXhlYywgZ2xvYmFsT2JqZWN0KTtcbiIpOwpAQCAtMTQ0OCwx
MSArMTQ3OCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgIyBDb25zdHJ1
Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBB
ZGRJbmNsdWRlc0ZvclR5cGUoIkpTRE9NV2luZG93U2hlbGwiKTsKKyAgICAgICAgQWRkSW5jbHVk
ZXNGb3JUeXBlSW5JbXBsKCJKU0RPTVdpbmRvd1NoZWxsIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsLCBKU0RP
TVdpbmRvd1NoZWxsKiBzaGVsbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICA6ICRwYXJlbnRDbGFzc05hbWUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsLCBzaGVsbClc
biIpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29y
a2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkaW50ZXJmYWNlTmFt
ZSk7CisgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCgkaW50ZXJmYWNlTmFtZSk7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGlt
cGxUeXBlPiBpbXBsKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBh
cmVudENsYXNzTmFtZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwpXG4iKTsKICAgICB9IGVs
c2UgewpAQCAtMTQ4Nyw5ICsxNTE3LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9OjpjcmVhdGVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIGlmICgkaGFz
UGFyZW50ICYmICRwYXJlbnRDbGFzc05hbWUgbmUgIkpTQzo6RE9NTm9kZUZpbHRlciIpIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xh
c3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgJHtjbGFz
c05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCAke3Bh
cmVudENsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSkpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9
UHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsICR7Y2xh
c3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtw
YXJlbnRDbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIG5ldyAoZXhlYykgJHtjbGFzc05hbWV9UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7XG4iKTsKICAg
ICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQpAQCAt
MTg5MCw3ICsxOTIwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIEZ1bmN0
aW9ucwogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIEFkZEluY2x1
ZGVzRm9yVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBBZGRJ
bmNsdWRlc0ZvclR5cGVJbkltcGwoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwogCiAgICAg
ICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNs
YXNzTmFtZSkgLiAiUHJvdG90eXBlRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOwogCkBAIC0yNDA5LDEyICsyNDM5LDEyIEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBuZXh0
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5J
bXBsKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4iIC4gR2V0TmF0aXZlVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSkg
LiAiICR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIigiKTsK
IAogICAgICAgICAgICAgbXkgQGFyZ3MgPSAoKTsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBh
cmFtIChAcGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRwYXJh
bS0+dHlwZSwgMSk7CisgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRw
YXJhbS0+dHlwZSwgMSk7CiAgICAgICAgICAgICAgICAgcHVzaChAYXJncywgR2V0TmF0aXZlVHlw
ZSgkcGFyYW0tPnR5cGUpIC4gIiAiIC4gJHBhcmFtLT5uYW1lKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBqb2luKCIsICIsIEBhcmdzKSk7CkBAIC0zMDMx
LDggKzMwNjEsMTQgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIG15
ICRjYWxsV2l0aCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07
CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjbGFzcyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJwdWJsaWM6XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcml2YXRlOlxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopO1xu
XG4iKTsKKyAgICAKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljICRjb25zdHJ1Y3RvckNsYXNzTmFtZSogY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgp
KSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtc
biIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwogCiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gOTE1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsMTUg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgogI3VuZGVmIFRIVU5L
X0dFTkVSQVRPUgogc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yVGFibGVWYWx1ZXMsIDAgfTsKIGNsYXNzIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yIDog
cHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgSlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoZXhlYywg
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgIH0KKwogICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87
CkBAIC0xNDQsNyArMTUwLDcgQEAgSlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UoU3Ry
dWN0dQogCiBKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBu
ZXcgKGV4ZWMpIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKKyAgICByZXR1cm4gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKSk7CiB9CiAKIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHJldmlzaW9uIDkxNTI2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxOCArMjQsMjEgQEAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKKyNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9PYmplY3RQcm90b3R5cGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBUZXN0SW50ZXJmYWNlOwotCiBjbGFzcyBKU1Rlc3RJbnRlcmZhY2UgOiBw
dWJsaWMgSlNET01XcmFwcGVyIHsKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwogcHVi
bGljOgotICAgIEpTVGVzdEludGVyZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPik7CisgICAgc3RhdGljIEpTVGVzdEludGVy
ZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4gaW1wbCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZT4oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdEludGVyZmFjZShzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgfQorCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOwpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlZlB0cjxU
ZXN0SW50ZXJmYWNlPiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CisgICAgSlNUZXN0SW50ZXJmYWNlKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RJbnRlcmZh
Y2U+KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsKIApA
QCAtNjIsMTEgKzY2LDE4IEBAIGNsYXNzIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSA6IHB1Ymxp
YyAKICAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU+
KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CisKK3ByaXZhdGU6CiAg
ICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkocmV2aXNpb24gOTE1MjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDkgKzY0LDE1IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RNZWRpYVEKICN1bmRlZiBUSFVOS19HRU5F
UkFUT1IKIHN0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKIGNsYXNzIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9i
amVjdCB7Ci1wdWJsaWM6Citwcml2YXRlOgogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqKTsKIAorcHVibGljOgorICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Cisg
ICAgfQorCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKQEAgLTE0MCw3ICsxNDYsNyBAQCBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rlc3RNZWRpCiAKIEpTT2JqZWN0KiBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKSkpOworICAgIHJldHVybiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQog
CiBib29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oCShyZXZpc2lvbiA5MTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDE4ICsyMiwyMSBAQAogI2RlZmluZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyX2gK
IAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjsKLQogY2xhc3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lciA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJh
c2U7CiBwdWJsaWM6Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj4pOworICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gaW1wbCkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC01MCw2ICs1Myw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBt
X2ltcGw7CiBwcm90ZWN0ZWQ6CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcj4pOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CiB9OwogCkBAIC02MCw2ICs2NCwxMSBAQCBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90CiAgICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBC
YXNlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5m
byBzX2luZm87CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC02Nyw2
ICs3Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9
CisKK3ByaXZhdGU6CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xv
YmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7IH0KIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAJKHJldmlzaW9uIDkxNTI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw5ICsxNDMs
MTUgQEAgQ09NUElMRV9BU1NFUlQoMFgyMCA9PSBUZXN0T2JqOjpDT05TVF9WQQogQ09NUElMRV9B
U1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0LCBUZXN0T2JqRW51bUNPTlNU
X1ZBTFVFXzE0SXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIAogY2xhc3MgSlNUZXN0T2JqQ29u
c3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHVibGljOgorcHJpdmF0
ZToKICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAorcHVibGljOgorICAgIHN0YXRpYyBKU1Rlc3RP
YmpDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqQ29uc3RydWN0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCk7CisgICAgfQorCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKQEAgLTI2NSw3ICsy
NzEsNyBAQCBKU1Rlc3RPYmo6OkpTVGVzdE9iaihTdHJ1Y3R1cmUqIHN0cnVjdHVyCiAKIEpTT2Jq
ZWN0KiBKU1Rlc3RPYmo6OmNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgSlNUZXN0T2Jq
UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmpQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIHJldHVybiBKU1Rlc3RPYmpQcm90b3R5
cGU6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0T2JqUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAogYm9vbCBKU1Rlc3RPYmo6OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gOTE1MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDE4ICsyMiwyMSBAQAogI2RlZmluZSBKU1Rlc3RPYmpfaAogCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGVzdE9iajsKLQogY2xhc3MgSlNUZXN0T2Jq
IDogcHVibGljIEpTRE9NV3JhcHBlciB7CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsK
IHB1YmxpYzoKLSAgICBKU1Rlc3RPYmooSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFBhc3NSZWZQdHI8VGVzdE9iaj4pOworICAgIHN0YXRpYyBKU1Rlc3RPYmoqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhl
YXApKSBKU1Rlc3RPYmooc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgIH0KKwog
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTU5LDYgKzYyLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBSZWZQdHI8VGVzdE9iaj4gbV9pbXBsOwogcHJvdGVjdGVkOgorICAg
IEpTVGVzdE9iaihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0
cjxUZXN0T2JqPik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IH07CiAKQEAgLTY5LDYgKzczLDExIEBAIGNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSA6IHB1Ymxp
YyBKU0M6OkoKICAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdE9ialByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpQcm90b3R5cGU+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTVGVzdE9ialByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNf
aW5mbzsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTc2LDYgKzg1
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KKwor
cHJpdmF0ZToKICAgICBKU1Rlc3RPYmpQcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgeyB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiA5MTUyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw5ICs2NSwx
NSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsCiAjdW5kZWYgVEhV
TktfR0VORVJBVE9SCiBzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgMCB9OwogY2xhc3MgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHVibGljOgorcHJpdmF0ZToK
ICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAorcHVi
bGljOgorICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7CisgICAgfQorCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAg
c3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKQEAgLTEzMCw3ICsxMzYsNyBAQCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTCiAKIEpTT2JqZWN0KiBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZVByb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIG5l
dyAoZXhlYykgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIHJldHVybiBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZShleGVj
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAogYm9vbCBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaAkocmV2aXNpb24gOTE1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE4ICsyNCwyMSBAQAogI2lmIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCIKICNpbmNsdWRl
IDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdFdp
dGhHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL09iamVjdFByb3RvdHlwZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U7Ci0KIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA6
IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CiBw
dWJsaWM6Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlPiBpbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICB9CisKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC01Miw2ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IG1faW1wbDsK
IHByb3RlY3RlZDoKKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4pOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiB9OwogCkBAIC02MiwxMSArNjYsMTggQEAgY2xhc3MgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYQogICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QgQmFzZTsKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlUHJvdG90eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICB9
CisKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgIH0KKworcHJpdmF0ZToKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBK
U0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkgeyB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDkxNTI2KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7
CiBwdWJsaWM6CisgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgQmluZGluZ3M6OkFycmF5KiBhcnJheSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhl
YywgYXJyYXkpOworICAgIH0KKwogICAgIHR5cGVkZWYgQmluZGluZ3M6OkFycmF5IEJpbmRpbmdz
QXJyYXk7Ci0gICAgUnVudGltZUFycmF5KEV4ZWNTdGF0ZSosIEJpbmRpbmdzOjpBcnJheSopOwog
ICAgIHZpcnR1YWwgflJ1bnRpbWVBcnJheSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpAQCAtNjcsNiArNzEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
QXJyYXk6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgorICAgIFJ1bnRpbWVBcnJheShFeGVj
U3RhdGUqLCBCaW5kaW5nczo6QXJyYXkqKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0
ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHN0YXRpYyBK
U1ZhbHVlIGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIHVuc2lnbmVkKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gOTE1MjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsMTEgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogY2xhc3MgUnVudGlt
ZU9iamVjdCA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogcHVibGljOgotICAg
IFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQ
YXNzUmVmUHRyPEluc3RhbmNlPik7CisgICAgc3RhdGljIFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkg
UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2UpOwor
ICAgIH0KKwogICAgIHZpcnR1YWwgflJ1bnRpbWVPYmplY3QoKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTY3LDYgKzcxLDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJvdGVjdGVkOgorICAgIFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhQXJyYXlKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAJKHJldmlzaW9uIDkxNTI2KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUFycmF5SlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBKU1ZhbHVlIEphdmFBcnJheTo6Y29udmVydEpPYmplY3RUb0FycmF5CiAg
ICAgaWYgKHR5cGVbMF0gIT0gJ1snKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgSmF2YUFycmF5KGFu
T2JqZWN0LCB0eXBlLCByb290T2JqZWN0KSk7CisgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3Jl
YXRlKGV4ZWMsIG5ldyBKYXZhQXJyYXkoYW5PYmplY3QsIHR5cGUsIHJvb3RPYmplY3QpKTsKIH0K
IAogSmF2YUFycmF5OjpKYXZhQXJyYXkoam9iamVjdCBhcnJheSwgY29uc3QgY2hhciogdHlwZSwg
UGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkocmV2aXNpb24gOTE1MjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYs
NyBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjCiAKICAgICAvLyBG
SVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9m
IHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSBy
aWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCi0gICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGlt
ZU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJl
Y2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZU9iamVjdD4oZXhlYyksIHRoaXMpOworICAgIHJl
dHVybiBSdW50aW1lT2JqZWN0OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4
ZWMpLCB0aGlzKTsKIH0KIAogdm9pZCBJbnN0YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2Jq
ZWN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0J
KHJldmlzaW9uIDkxNTI2KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGls
aXR5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgSlNWYWx1ZSBjb252ZXJ0
T2JqY1ZhbHVlVG9WYWx1ZShFeGVjU3RhdAogICAgICAgICAgICAgaWYgKFtvYmogaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIo
W29iaiBkb3VibGVWYWx1ZV0pOwogICAgICAgICAgICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczpb
TlNBcnJheSBjbGFzc11dKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRp
bWVBcnJheShleGVjLCBuZXcgT2JqY0FycmF5KG9iaiwgcm9vdE9iamVjdCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjLCBuZXcgT2JqY0FycmF5KG9i
aiwgcm9vdE9iamVjdCkpOwogICAgICAgICAgICAgaWYgKFtvYmogaXNLaW5kT2ZDbGFzczp3ZWJT
Y3JpcHRPYmplY3RDbGFzcygpXSkgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBpbXAgPSBb
b2JqIF9pbXBdOwogICAgICAgICAgICAgICAgIHJldHVybiBpbXAgPyBpbXAgOiBqc1VuZGVmaW5l
ZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAkocmV2aXNp
b24gOTE1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxNSw3ICs5MTUsNyBAQCBKU1ZhbHVlIGNvbnZlcnRRVmFyaWFudFRv
VmFsdWUoRXhlY1N0YXRlCiAgICAgICAgIFFCeXRlQXJyYXkgcXRCeXRlQXJyYXkgPSB2YXJpYW50
LnZhbHVlPFFCeXRlQXJyYXk+KCk7CiAgICAgICAgIFdURjo6UmVmUHRyPFdURjo6Qnl0ZUFycmF5
PiB3dGZCeXRlQXJyYXkgPSBXVEY6OkJ5dGVBcnJheTo6Y3JlYXRlKHF0Qnl0ZUFycmF5Lmxlbmd0
aCgpKTsKICAgICAgICAgbWVtY3B5KHd0ZkJ5dGVBcnJheS0+ZGF0YSgpLCBxdEJ5dGVBcnJheS5j
b25zdERhdGEoKSwgcXRCeXRlQXJyYXkubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gbmV3IChl
eGVjKSBKU0M6OkpTQnl0ZUFycmF5KGV4ZWMsIEpTQzo6SlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSwgd3RmQnl0ZUFycmF5LmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6SlNCeXRlQXJyYXk6OmNyZWF0ZShleGVjLCBKU0M6OkpTQnl0
ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIHd0
ZkJ5dGVBcnJheS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpR
T2JqZWN0U3RhciB8fCB0eXBlID09IFFNZXRhVHlwZTo6UVdpZGdldFN0YXIpIHsKQEAgLTk3Mywx
NiArOTczLDE2IEBAIEpTVmFsdWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUKICAg
ICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OlFWYXJpYW50TGlzdCkgewogICAgICAgICBRVmFyaWFu
dExpc3QgdmwgPSB2YXJpYW50LnRvTGlzdCgpOwogICAgICAgICBxQ29udkRlYnVnKCkgPDwgImdv
dCBhICIgPDwgdmwuY291bnQoKSA8PCAiIGxlbmd0aCBsaXN0OiIgPDwgdmw7Ci0gICAgICAgIHJl
dHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRBcnJheTxRVmFyaWFudD4o
dmwsIFFNZXRhVHlwZTo6Vm9pZCwgcm9vdCkpOworICAgICAgICByZXR1cm4gUnVudGltZUFycmF5
OjpjcmVhdGUoZXhlYywgbmV3IFF0QXJyYXk8UVZhcmlhbnQ+KHZsLCBRTWV0YVR5cGU6OlZvaWQs
IHJvb3QpKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRU3RyaW5nTGlzdCkg
ewogICAgICAgICBRU3RyaW5nTGlzdCBzbCA9IHZhcmlhbnQudmFsdWU8UVN0cmluZ0xpc3Q+KCk7
Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVBcnJheShleGVjLCBuZXcgUXRBcnJh
eTxRU3RyaW5nPihzbCwgUU1ldGFUeXBlOjpRU3RyaW5nLCByb290KSk7CisgICAgICAgIHJldHVy
biBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjLCBuZXcgUXRBcnJheTxRU3RyaW5nPihzbCwgUU1l
dGFUeXBlOjpRU3RyaW5nLCByb290KSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IChRTWV0YVR5
cGU6OlR5cGUpIHFNZXRhVHlwZUlkPFFPYmplY3RMaXN0PigpKSB7CiAgICAgICAgIFFPYmplY3RM
aXN0IG9sPSB2YXJpYW50LnZhbHVlPFFPYmplY3RMaXN0PigpOwotICAgICAgICByZXR1cm4gbmV3
IChleGVjKSBSdW50aW1lQXJyYXkoZXhlYywgbmV3IFF0QXJyYXk8UU9iamVjdCo+KG9sLCBRTWV0
YVR5cGU6OlFPYmplY3RTdGFyLCByb290KSk7CisgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6
OmNyZWF0ZShleGVjLCBuZXcgUXRBcnJheTxRT2JqZWN0Kj4ob2wsIFFNZXRhVHlwZTo6UU9iamVj
dFN0YXIsIHJvb3QpKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gKFFNZXRhVHlwZTo6VHlwZSlx
TWV0YVR5cGVJZDxRTGlzdDxpbnQ+ID4oKSkgewogICAgICAgICBRTGlzdDxpbnQ+IGlsPSB2YXJp
YW50LnZhbHVlPFFMaXN0PGludD4gPigpOwotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBSdW50
aW1lQXJyYXkoZXhlYywgbmV3IFF0QXJyYXk8aW50PihpbCwgUU1ldGFUeXBlOjpJbnQsIHJvb3Qp
KTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBRdEFycmF5
PGludD4oaWwsIFFNZXRhVHlwZTo6SW50LCByb290KSk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUg
PT0gKFFNZXRhVHlwZTo6VHlwZSlxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102013</attachid>
            <date>2011-07-26 08:42:35 -0700</date>
            <delta_ts>2011-07-26 14:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64732-20110726084235.patch</filename>
            <type>text/plain</type>
            <size>63315</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDctMjYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWZhY3RvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00gYmluZGluZ3Mg
dG8gcmVwbGFjZSBvcGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjaW5nIHRoZSBw
dWJsaWMgY29uc3RydWN0b3JzIGluIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBKUyBET00g
YmluZGluZ3Mgd2l0aCBzdGF0aWMgCisgICAgICAgIGNyZWF0ZSBtZXRob2RzLiAgSlNCeXRlQXJy
YXkgaXMgdXNlZCBieSBzZXZlcmFsIG9mIHRoZXNlIGJpbmRpbmdzIGluIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBydW50aW1l
L0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgorCiAyMDExLTA3LTI2ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByOTE3NDYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIF9fWk4zSlND
MTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzcKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBO
U185RXhlY1N0YXRlRVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxM3NfZGVm
YXVsdEluZm9FCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxNWNyZWF0ZVN0cnVjdHVyZUVSTlNfMTJK
U0dsb2JhbERhdGFFTlNfN0pTVmFsdWVFUEtOU185Q2xhc3NJbmZvRQotX19aTjNKU0MxMUpTQnl0
ZUFycmF5QzFFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUK
K19fWk4zSlNDMTFKU0J5dGVBcnJheTZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1
cmVFUE4zV1RGOUJ5dGVBcnJheUUKIF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pO
M0pTQzExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFCiBfX1pO
M0pTQzExY3JlYXRlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShy
ZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw3ICsxMCw2IEBAIEVYUE9SVFMKICAgICA/PzBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFF
QFBBVkpTR2xvYmFsRGF0YUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFAQUJW
SWRlbnRpZmllckAxQEBaCiAgICAgPz8wSlNBcnJheUBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFA
MUBQQVZTdHJ1Y3R1cmVAMUBAWgogICAgID8/MEpTQXJyYXlASlNDQEBJQUVAQUFWSlNHbG9iYWxE
YXRhQDFAUEFWU3RydWN0dXJlQDFAQUJWQXJnTGlzdEAxQEBaCi0gICAgPz8wSlNCeXRlQXJyYXlA
SlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAUEFWU3RydWN0dXJlQDFAUEFWQnl0ZUFycmF5QFdURkBA
QFoKICAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAQUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVkpTR2xvYmFs
T2JqZWN0QDFAUEFWU3RydWN0dXJlQDFASEFCVklkZW50aWZpZXJAMUBQNklfSjBAWkBaCiAgICAg
Pz8wSlNMb2NrQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgPz8wSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVkpTR2xvYmFsT2JqZWN0
QDFAUEFWU3RydWN0dXJlQDFAQFoKQEAgLTk2LDYgKzk1LDcgQEAgRVhQT1JUUwogICAgID9jb252
ZXJ0VVRGMTZUb1VURjhAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQ
Ql9XUEJfV1BBUEFEUEFEX05AWgogICAgID9jb252ZXJ0VVRGOFRvVVRGMTZAVW5pY29kZUBXVEZA
QFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkRQQkRQQVBBX1dQQV9XX05AWgogICAgID9j
cmVhdGVAQnl0ZUFycmF5QFdURkBAU0E/QVY/JFBhc3NSZWZQdHJAVkJ5dGVBcnJheUBXVEZAQEAy
QElAWgorICAgID9jcmVhdGVASlNCeXRlQXJyYXlASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAy
QFBBVlN0cnVjdHVyZUAyQFBBVkJ5dGVBcnJheUBXVEZAQEBaCiAgICAgP2NyZWF0ZUBKU0dsb2Jh
bERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRU
aHJlYWRTdGFja1R5cGVAMkBAWgogICAgID9jcmVhdGVAT3BhcXVlSlNTdHJpbmdAQFNBP0FWPyRQ
YXNzUmVmUHRyQFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BKU0NAQEBaCiAgICAg
P2NyZWF0ZUBSZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdA
MkBXNFJlZ0V4cEZsYWdzQDJAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSwxMSBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjCiB7CiAgICAg
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9zdG9yYWdlLT5sZW5ndGgoKSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSk7CiB9CisgICAgICAgIAorSlNCeXRlQXJyYXkqIEpTQnl0ZUFycmF5OjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9y
YWdlKQoreworICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMt
PmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4ZWMsIHN0cnVjdHVyZSwgc3RvcmFnZSk7Cit9CiAKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiBKU0J5dGVBcnJheTo6fkpTQnl0ZUFycmF5KCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gOTE3
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAgSlNCeXRl
QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOwor
ICAgIHByaXZhdGU6CisgICAgICAgIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IEJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIEpTQnl0ZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5
Kik7CisKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogPSAmc19kZWZh
dWx0SW5mbyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MiBAQAorMjAxMS0w
Ny0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlZmFjdG9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEpTIERPTSBiaW5kaW5ncyB0byByZXBs
YWNlIG9wZXJhdG9yIG5ldyB3aXRoIHN0YXRpYyBjcmVhdGUgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgUmVwbGFjaW5nIHRoZSBwdWJsaWMgY29uc3RydWN0b3JzIGluIHRoZSBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBKUyBET00gYmluZGluZ3MgaW4gQ29kZUdlbmVyYXRvckpTLnBtCisgICAgICAg
IHdpdGggc3RhdGljIGNyZWF0ZSBtZXRob2RzLiAgVGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyIHJl
ZmFjdG9yaW5nIGVmZm9ydCB0byB1c2Ugc3RhdGljIGNyZWF0ZSBtZXRob2RzCisgICAgICAgIGlu
IHRoZSBoZWFkZXJzIG9mIHRoZSBnZW5lcmF0ZWQgZmlsZXMgKHNvIGFzIHRvIGJlIGlubGluZS1h
YmxlKSBpbiBmYXZvciBvZiBwdWJsaWMgY29uc3RydWN0b3JzIHRocm91Z2hvdXQgSlNDLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU0F1ZGlvQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpoaXN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpsb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1No
ZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
bWFnZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTT3B0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojppbml0U2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCk6CisgICAgICAgIChBZGRJ
bmNsdWRlc0ZvclR5cGVJbkhlYWRlcik6CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVy
ZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE9iajo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVh
dGVQcm90b3R5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhQXJyYXlKU0MuY3BwOgorICAgICAgICAo
SmF2YUFycmF5Ojpjb252ZXJ0Sk9iamVjdFRvQXJyYXkpOgorICAgICAgICAqIGJyaWRnZS9qc2Mv
QnJpZGdlSlNDLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpuZXdSdW50
aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW06CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZSk6CisgICAgICAgICog
YnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVy
dFFWYXJpYW50VG9WYWx1ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX29iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3Jl
YXRlKToKKwogMjAxMS0wNy0yNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkxNzQ2LgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEpTQXVkaW9Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1
Y3RvcldpdGhEb2N1bWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBKU0F1ZGlvQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CisgICAgICAgIHN0YXRpYyBKU0F1ZGlvQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxv
Y2F0ZUNlbGw8SlNBdWRpb0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNBdWRpb0NvbnN0
cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgfQogCiAgICAg
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CkBAIC00
Niw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIEpTQXVkaW9Db25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QqKTsKICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcg
KzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChub2Rl
KTsKICAgICAgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwg
bm9kZSkpOwotICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBuZXcgKGV4ZWMpIFdyYXBw
ZXJDbGFzcyhnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVjLCBnbG9iYWxPYmplY3Qp
LCBnbG9iYWxPYmplY3QsIG5vZGUpOworICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBX
cmFwcGVyQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVjLCBn
bG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QsIG5vZGUpOwogICAgICAgICAvLyBGSVhNRTogVGhl
IGVudGlyZSBmdW5jdGlvbiBjYW4gYmUgcmVtb3ZlZCwgb25jZSB3ZSBmaXggY2FjaGluZy4KICAg
ICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBhIG9uZS1vZmYgaGFjayB0byBtYWtlIE5vZGVzIGNh
Y2hlIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0LgogICAgICAgICBjYWNoZVdyYXBwZXIoY3Vy
cmVudFdvcmxkKGV4ZWMpLCBub2RlLCB3cmFwcGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAkocmV2aXNpb24gOTE3NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAgICAg
IGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5nZXQoJkNvbnN0cnVjdG9yQ2xh
c3M6OnNfaW5mbykuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7Ci0gICAg
ICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBDb25zdHJ1Y3RvckNs
YXNzKGV4ZWMsIENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIEpTQzo6SlNPYmplY3QqIGNv
bnN0cnVjdG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKGV4ZWMsIENvbnN0cnVjdG9yQ2xh
c3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpz
X2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsK
ICAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNv
bnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJzdC0+
c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3Ip
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBK
U1ZhbHVlIEpTRE9NV2luZG93OjpoaXN0b3J5KEV4ZWNTdGF0ZSogCiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogCiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGNvbnN0X2Nhc3Q8SlNET01XaW5k
b3cqPih0aGlzKTsKLSAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IG5ldyAoZXhlYykgSlNIaXN0
b3J5KGdldERPTVN0cnVjdHVyZTxKU0hpc3Rvcnk+KGV4ZWMsIHdpbmRvdyksIHdpbmRvdywgaGlz
dG9yeSk7CisgICAgSlNIaXN0b3J5KiBqc0hpc3RvcnkgPSBKU0hpc3Rvcnk6OmNyZWF0ZShnZXRE
T01TdHJ1Y3R1cmU8SlNIaXN0b3J5PihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGhpc3RvcnkpOwog
ICAgIGNhY2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGhpc3RvcnksIGpzSGlzdG9yeSk7
CiAgICAgcmV0dXJuIGpzSGlzdG9yeTsKIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93Ojpsb2NhdGlvbihFeGVjU3RhdGUqCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
CiAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGNvbnN0X2Nhc3Q8SlNET01XaW5kb3cqPih0aGlz
KTsKLSAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gbmV3IChleGVjKSBKU0xvY2F0aW9uKGdl
dERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGxvY2F0aW9u
KTsKKyAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gSlNMb2NhdGlvbjo6Y3JlYXRlKGdldERP
TVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGxvY2F0aW9uKTsK
ICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbiwganNMb2NhdGlv
bik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gOTE3NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTAgKzYxLDEwIEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93
KFBhc3NSZWYKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25j
ZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4g
bWFyayBpdHMgb3duIHByb3RvdHlwZS4pCiAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCpKU0RPTVdpbmRvdzo6
Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dQ
cm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBu
ZXcgSlNET01XaW5kb3dQcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEo
KSwgMCwgcHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJvdG90
eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgSlNET01X
aW5kb3dQcm90b3R5cGU6OmNyZWF0ZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LCAwLCBwcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
SlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRvdyA9
IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdygqSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRvdywgdGhp
cyk7CisgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01XaW5kb3c6OmNyZWF0ZSgq
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRvdywg
dGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqSlNET01XaW5kb3c6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAgc2V0V2luZG93KCpKU0RP
TVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZp
c2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVu
dDo6bG9jYXRpb24oRXhlY1N0YXRlKiAKICAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0g
Z2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uKSkKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CiAKLSAgICBKU0xvY2F0aW9uKiBqc0xvY2F0aW9uID0gbmV3IChleGVj
KSBKU0xvY2F0aW9uKGdldERPTVN0cnVjdHVyZTxKU0xvY2F0aW9uPihleGVjLCBnbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdCgpLCBsb2NhdGlvbik7CisgICAgSlNMb2NhdGlvbioganNMb2Nh
dGlvbiA9IEpTTG9jYXRpb246OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4oZXhl
YywgZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRpb24pOwogICAgIGNhY2hl
V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uLCBqc0xvY2F0aW9uKTsKICAgICBy
ZXR1cm4ganNMb2NhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU0ltYWdlQ29u
c3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0
cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTSW1hZ2VDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICAgICAgewpAQCAtMzcsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBw
cml2YXRlOgorICAgICAgICBKU0ltYWdlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAg
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRh
Q3VzdG9tLmNwcAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAg
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAgIElkZW50aWZpZXIg
ZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGNwYUNs
YXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAmSlNCeXRlQXJyYXk6OkJhc2U6OnNfaW5m
bywgMCwgMCB9OwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ryb25nPFN0cnVjdHVyZT4sIGNw
YVN0cnVjdHVyZSwgKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpLCAmY3BhQ2xhc3NJbmZvKSkpOwotICAg
IHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGRhdGFOYW1lLCBuZXcgKGV4
ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVyZS5nZXQoKSwgaW1hZ2VEYXRhLT5kYXRh
KCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgd3JhcHBlci0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUsIEpTQnl0ZUFycmF5OjpjcmVhdGUoZXhl
YywgY3BhU3RydWN0dXJlLmdldCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29z
dChpbWFnZURhdGEtPmRhdGEoKS0+bGVuZ3RoKCkpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U09wdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTT3B0aW9uQ29uc3RydWN0b3IgOiBwdWJs
aWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNP
cHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIEpTT3B0aW9uQ29uc3RydWN0b3IqIGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNPcHRpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIEpTT3B0aW9uQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwor
ICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgICAgIHsKQEAgLTM4LDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgSlNPcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QqKTsKICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMjQgKzc1
LDI0IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAvLyB3
aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVj
dCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3Rv
dHlwZS4pCiAgICAgU3RydWN0dXJlKiB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0g
SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwg
anNOdWxsKCkpOwotICAgIFN0cm9uZzxKU1dvcmtlckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNv
bnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpT
V29ya2VyQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCAwLCB3b3JrZXJDb250ZXh0UHJv
dG90eXBlU3RydWN0dXJlKSk7CisgICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4g
d29ya2VyQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU1dvcmtlckNvbnRleHRQcm90
b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3Ry
dWN0dXJlKSk7CiAKICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNv
bnRleHQoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAg
ICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIGRlZGljYXRl
ZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9i
YWxEYXRhLCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9i
YWxEYXRhLCAwLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVT
dHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7
CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3
IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCgqbV9nbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCkpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwg
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBtX3dvcmtlckNvbnRleHQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSk7CiAgICAgICAg
IHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEs
IDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtl
ckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fd29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJD
b250ZXh0KCkpOwogICAgICAgICBTdHJ1Y3R1cmUqIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgq
bV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAgICAgU3Ry
b25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlw
ZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJD
b250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUpKTsKKyAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlw
ZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU1NoYXJlZFdvcmtlckNv
bnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBzaGFyZWRDb250ZXh0UHJv
dG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNTaGFy
ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwgc2hhcmVkQ29u
dGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5z
ZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2Vy
Q29udGV4dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9TaGFy
ZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQo
Km1fZ2xvYmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBtX3dvcmtlckNvbnRleHQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKSk7
CiAgICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2ds
b2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBzaGFy
ZWRDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBt
X3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTIzNSwzMSArMjM1LDE0IEBAIHN1YiBJbmRleEdldHRl
clJldHVybnNTdHJpbmdzCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1YiBBZGRJbmNsdWRlc0ZvclR5
cGUKK3N1YiBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwKIHsKICAgICBteSAkdHlwZSA9ICRjb2Rl
R2VuZXJhdG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7CiAgICAgbXkgJGlzQ2FsbGJhY2sgPSBAXyA/
IHNoaWZ0IDogMDsKLQotICAgICMgV2hlbiB3ZSdyZSBmaW5pc2hlZCB3aXRoIHRoZSBvbmUtZmls
ZS1wZXItY2xhc3MKLSAgICAjIHJlb3JnYW5pemF0aW9uLCB3ZSB3b24ndCBuZWVkIHRoZXNlIHNw
ZWNpYWwgY2FzZXMuCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5
cGUpIG9yICRjb2RlR2VuZXJhdG9yLT5Bdm9pZEluY2x1c2lvbk9mVHlwZSgkdHlwZSkKLSAgICAg
ICAgb3IgJHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgJHR5cGUgZXEgIkRPTU9iamVjdCIgb3IgJHR5
cGUgZXEgIkFycmF5IikgewotICAgIH0gZWxzaWYgKCR0eXBlID1+IC9TVkdQYXRoU2VnLykgewot
ICAgICAgICAkam9pbmVkTmFtZSA9ICR0eXBlOwotICAgICAgICAkam9pbmVkTmFtZSA9fiBzL0Fi
c3xSZWwvLzsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siJHtqb2luZWROYW1lfS5oIn0gPSAxOwot
ICAgIH0gZWxzaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7Ci0gICAgICAgICRpbXBs
SW5jbHVkZXN7IkpTWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7Ci0gICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7Ci0gICAgfSBlbHNpZiAoJGlzQ2Fs
bGJhY2spIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siSlMke3R5cGV9LmgifSA9IDE7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgIyBkZWZhdWx0LCBpbmNsdWRlIHRoZSBzYW1lIG5hbWVkIGZpbGUK
LSAgICAgICAgJGltcGxJbmNsdWRlc3siJHt0eXBlfS5oIn0gPSAxOwotICAgIH0KLQorICAgIAor
ICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkdHlwZSwgJGlzQ2FsbGJhY2ssIFwlaW1wbEluY2x1ZGVz
KTsKKyAgICAKICAgICAjIGFkZGl0aW9uYWwgaW5jbHVkZXMgKHRoaW5ncyBuZWVkZWQgdG8gY29t
cGlsZSB0aGUgYmluZGluZ3MgYnV0IG5vdCB0aGUgaGVhZGVyKQotCiAgICAgaWYgKCR0eXBlIGVx
ICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkNh
bnZhc0dyYWRpZW50LmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkNhbnZhc1BhdHRl
cm4uaCJ9ID0gMTsKQEAgLTI3OSw2ICsyNjIsMzkgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQog
ICAgIH0KIH0KIAorc3ViIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyCit7CisgICAgbXkgJHR5
cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIG15ICRpc0NhbGxi
YWNrID0gQF8gPyBzaGlmdCA6IDA7CisgICAgCisgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBl
LCAkaXNDYWxsYmFjaywgXCVoZWFkZXJJbmNsdWRlcyk7Cit9CisKK3N1YiBBZGRJbmNsdWRlc0Zv
clR5cGUKK3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworICAgIG15ICRpc0NhbGxiYWNrID0gc2hp
ZnQ7CisgICAgbXkgJGluY2x1ZGVzUmVmID0gc2hpZnQ7CisKKyAgICAjIFdoZW4gd2UncmUgZmlu
aXNoZWQgd2l0aCB0aGUgb25lLWZpbGUtcGVyLWNsYXNzCisgICAgIyByZW9yZ2FuaXphdGlvbiwg
d2Ugd29uJ3QgbmVlZCB0aGVzZSBzcGVjaWFsIGNhc2VzLgorICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSBvciAkY29kZUdlbmVyYXRvci0+QXZvaWRJbmNsdXNp
b25PZlR5cGUoJHR5cGUpCisgICAgICAgIG9yICR0eXBlIGVxICJET01TdHJpbmciIG9yICR0eXBl
IGVxICJET01PYmplY3QiIG9yICR0eXBlIGVxICJBcnJheSIpIHsKKyAgICB9IGVsc2lmICgkdHlw
ZSA9fiAvU1ZHUGF0aFNlZy8pIHsKKyAgICAgICAgJGpvaW5lZE5hbWUgPSAkdHlwZTsKKyAgICAg
ICAgJGpvaW5lZE5hbWUgPX4gcy9BYnN8UmVsLy87CisgICAgICAgICRpbmNsdWRlc1JlZi0+eyIk
e2pvaW5lZE5hbWV9LmgifSA9IDE7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNv
bHZlciIpIHsKKyAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTWFBhdGhOU1Jlc29sdmVyLmgifSA9
IDE7CisgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oIn0g
PSAxOworICAgIH0gZWxzaWYgKCRpc0NhbGxiYWNrKSB7CisgICAgICAgICRpbmNsdWRlc1JlZi0+
eyJKUyR7dHlwZX0uaCJ9ID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICAjIGRlZmF1bHQsIGlu
Y2x1ZGUgdGhlIHNhbWUgbmFtZWQgZmlsZQorICAgICAgICAkaW5jbHVkZXNSZWYtPnsiJHt0eXBl
fS5oIn0gPSAxOworICAgIH0KK30KKwogIyBGSVhNRTogVGhpcyBtZXRob2Qgd2lsbCBnbyBhd2F5
IG9uY2UgYWxsIFNWRyBhbmltYXRlZCBwcm9wZXJ0aWVzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIG5l
dyBzY2hlbWUuCiBzdWIgQWRkSW5jbHVkZXNGb3JTVkdBbmltYXRlZFR5cGUKIHsKQEAgLTY3Miw3
ICs2ODgsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIk
aW1wbENsYXNzTmFtZS5oIn0gPSAxOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgSW1wbGVtZW50
YXRpb24gY2xhc3MgZm9yd2FyZCBkZWNsYXJhdGlvbgotICAgICAgICBBZGRDbGFzc0ZvcndhcmRJ
Zk5lZWRlZCgkaW1wbENsYXNzTmFtZSkgdW5sZXNzICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZTsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAg
ICAgICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgkaW1wbENsYXNzTmFtZSkgdW5sZXNzICRzdmdQ
cm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEFkZENs
YXNzRm9yd2FyZElmTmVlZGVkKCJKU0RPTVdpbmRvd1NoZWxsIikgaWYgJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyI7CkBAIC02ODAsMTUgKzY5OCwyNSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAjIENsYXNzIGRlY2xhcmF0aW9uCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNz
ICRjbGFzc05hbWUgOiBwdWJsaWMgJHBhcmVudENsYXNzTmFtZSB7XG4iKTsKICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHR5cGVkZWYgJHBhcmVudENsYXNzTmFtZSBCYXNlO1xuIik7Ci0g
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwogCi0gICAgIyBDb25zdHJ1Y3Rv
cgorICAgICMgU3RhdGljIGNyZWF0ZSBtZXRob2RzCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
InB1YmxpYzpcbiIpOwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpKU0dsb2Jh
bERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8JGltcGxUeXBlPiwgSlNET01XaW5k
b3dTaGVsbCopO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
ICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpTRE9NV2lu
ZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAge1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVy
biBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkpICR7
Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHdpbmRvd1NoZWxsKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6SlNHbG9i
YWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOworICAg
ICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJv
cGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1w
bClcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRl
Q2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgJGNsYXNz
TmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0KIAogICAgICMgUHJvdG90eXBlCkBA
IC04NzQsOCArOTAyLDE3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQg
PSAkbnVtQ2FjaGVkQXR0cmlidXRlcyArIEJhc2U6OkFub255bW91c1Nsb3RDb3VudDtcbiIpOwog
ICAgIH0KIAotICAgICMgc3RydWN0dXJlIGZsYWdzCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
InByb3RlY3RlZDpcbiIpOworICAgICMgQ29uc3RydWN0b3IKKyAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
Y2xhc3NOYW1lKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRy
PCRpbXBsVHlwZT4sIEpTRE9NV2luZG93U2hlbGwqKTtcbiIpOworICAgIH0gZWxzaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OkpTR2xvYmFsRGF0YSYs
IEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIp
OworICAgIH0KKworICAgICMgc3RydWN0dXJlIGZsYWdzCiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSAiKTsKICAgICBm
b3JlYWNoIG15ICRzdHJ1Y3R1cmVGbGFnIChrZXlzICVzdHJ1Y3R1cmVGbGFncykgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAkc3RydWN0dXJlRmxhZyAuICIgfCAiKTsKQEAgLTk2MCwx
MyArOTk3LDE1IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJjbGFzcyAke2NsYXNzTmFtZX1Qcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhH
bG9iYWxPYmplY3Qge1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0eXBlZGVm
IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7XG4iKTsKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAicHVibGljOlxuIik7Ci0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCk7XG4iKTsKLSAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTQzo6SlNHbG9iYWxEYXRhKik7
XG4iKTsKLSAgICB9IGVsc2UgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAiRE9NV2luZG93
IiAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0p
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOwogICAg
IH0KKworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpXG4iKTsK
KyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOworICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCR7Y2xhc3NOYW1l
fVByb3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9UHJvdG90eXBlKGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOworICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgfVxuXG4iKTsKKwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgIGlmICgkbnVtRnVuY3Rp
b25zID4gMCB8fCAkbnVtQ29uc3RhbnRzID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEZWxlZ2F0aW5nUHJvdG90eXBlR2V0T3duUHJvcGVydHlTbG90In0pIHsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTtcbiIpOwpAQCAtOTkxLDYgKzEwMzAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAjIEN1c3RvbSBkZWZpbmVHZXR0ZXIgZnVuY3Rpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tUHJvdG90eXBlRGVmaW5lR2V0dGVyIn07CiAKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiXG5wcml2YXRlOlxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkgeyB9XG4iKTsKIAogICAgICMgc3RydWN0dXJlIGZsYWdzCkBAIC0xMjU2
LDcgKzEyOTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICRpbXBsSW5jbHVk
ZXN7Ijx3dGYvR2V0UHRyLmg+In0gPSAxOwogICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5Lmg+In0gPSAxIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzQ3VzdG9tSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJIYXNOdW1lcmljSW5kZXhHZXR0ZXIifTsKIAotICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkaW50
ZXJmYWNlTmFtZSk7CisgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRpbnRlcmZhY2VOYW1l
KTsKIAogICAgIEBpbXBsQ29udGVudCA9ICgpOwogCkBAIC0xMzUxLDE3ICsxMzkxLDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9
IHsgXCIke3Zpc2libGVDbGFzc05hbWV9UHJvdG90eXBlXCIsICZKU0M6OkpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdDo6c19pbmZvLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUsIDAgfTtcblxu
Iik7CiAgICAgfQotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6b3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdGUoc2l6ZSk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidm9pZCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpvcGVyYXRvciBuZXco
c2l6ZV90IHNpemUsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSlcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0ZShzaXplKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoJGludGVyZmFj
ZU5hbWUgbmUgIkRPTVdpbmRvdyIgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IklzV29ya2VyQ29udGV4dCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmpl
Y3QqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3Rv
dHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKQEAgLTE0NDgsMTEg
KzE0NzgsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgQ29uc3RydWN0
b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgQWRk
SW5jbHVkZXNGb3JUeXBlKCJKU0RPTVdpbmRvd1NoZWxsIik7CisgICAgICAgIEFkZEluY2x1ZGVz
Rm9yVHlwZUluSW1wbCgiSlNET01XaW5kb3dTaGVsbCIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNET01X
aW5kb3dTaGVsbCogc2hlbGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
OiAkcGFyZW50Q2xhc3NOYW1lKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCwgc2hlbGwpXG4i
KTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtl
ckNvbnRleHQifSkgewotICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGludGVyZmFjZU5hbWUp
OworICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwoJGludGVyZmFjZU5hbWUpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBs
VHlwZT4gaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJl
bnRDbGFzc05hbWUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsKVxuIik7CiAgICAgfSBlbHNl
IHsKQEAgLTE0ODcsOSArMTUxNyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6Y3JlYXRlUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAoJGhhc1Bh
cmVudCAmJiAkcGFyZW50Q2xhc3NOYW1lIG5lICJKU0M6OkRPTU5vZGVGaWx0ZXIiKSB7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbmV3IChleGVjKSAke2NsYXNz
TmFtZX1Qcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NO
YW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtwYXJl
bnRDbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksICR7cGFy
ZW50Q2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xh
c3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpO1xuIik7CiAgICAg
ICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KQEAgLTE4
OTAsNyArMTkyMCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBGdW5jdGlv
bnMKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKICAgICAgICAgZm9yZWFjaCBteSAkZnVu
Y3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICBBZGRJbmNsdWRl
c0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgQWRkSW5j
bHVkZXNGb3JUeXBlSW5JbXBsKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKIAogICAgICAg
ICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFz
c05hbWUpIC4gIlByb3RvdHlwZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKIApAQCAtMjQxMSwxMiArMjQ0MSwxMiBAQCBz
dWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbmV4dDsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1w
bCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4g
IiAke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIik7CiAK
ICAgICAgICAgICAgIG15IEBhcmdzID0gKCk7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJh
bSAoQHBhcmFtcykgewotICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkcGFyYW0t
PnR5cGUsIDEpOworICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCgkcGFy
YW0tPnR5cGUsIDEpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3MsIEdldE5hdGl2ZVR5cGUo
JHBhcmFtLT50eXBlKSAuICIgIiAuICRwYXJhbS0+bmFtZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgam9pbigiLCAiLCBAYXJncykpOwpAQCAtMzAzMyw4
ICszMDYzLDE0IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBteSAk
Y2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9Owog
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY2xhc3MgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0g
OiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qge1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFy
cmF5LCAicHVibGljOlxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHJpdmF0ZTpcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTtcblxu
Iik7CisgICAgCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHVibGljOlxuIik7CisgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBuZXcg
KEpTQzo6YWxsb2NhdGVDZWxsPCRjb25zdHJ1Y3RvckNsYXNzTmFtZT4oKmV4ZWMtPmhlYXAoKSkp
ICRjb25zdHJ1Y3RvckNsYXNzTmFtZShleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4i
KTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJ
KHJldmlzaW9uIDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDE1IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmYKICN1bmRlZiBUSFVOS19H
RU5FUkFUT1IKIHN0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzLCAwIH07CiBjbGFzcyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciA6IHB1
YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Ci1wdWJsaWM6Citwcml2YXRlOgogICAgIEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOwogCitwdWJsaWM6CisgICAgc3RhdGljIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpA
QCAtMTQ0LDcgKzE1MCw3IEBAIEpTVGVzdEludGVyZmFjZTo6SlNUZXN0SW50ZXJmYWNlKFN0cnVj
dHUKIAogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZTo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gbmV3
IChleGVjKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CisgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKSkpOwogfQogCiBib29sIEpTVGVzdEludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiA5MTc1NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTggKzI0LDIxIEBACiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisjaW5jbHVkZSAiVGVzdEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVGVzdEludGVyZmFjZTsKLQogY2xhc3MgSlNUZXN0SW50ZXJmYWNlIDogcHVi
bGljIEpTRE9NV3JhcHBlciB7CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKIHB1Ymxp
YzoKLSAgICBKU1Rlc3RJbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4pOworICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZh
Y2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+IGltcGwpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2U+KGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2Uoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIGltcGwpOworICAgIH0KKwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKQEAgLTUyLDYgKzU1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWZQdHI8VGVz
dEludGVyZmFjZT4gbV9pbXBsOwogcHJvdGVjdGVkOgorICAgIEpTVGVzdEludGVyZmFjZShKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNl
Pik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CiAKQEAg
LTYyLDExICs2NiwxOCBAQCBjbGFzcyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJsaWMg
CiAgICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPihn
bG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQorCitwcml2YXRlOgogICAg
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKSB7IH0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDkxNzU2KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw5ICs2NCwxNSBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TWVkaWFRCiAjdW5kZWYgVEhVTktfR0VORVJB
VE9SCiBzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CiBjbGFzcyBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmpl
Y3QgewotcHVibGljOgorcHJpdmF0ZToKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAg
IH0KKwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC0xNDAsNyArMTQ2LDcgQEAgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6SlNUZXN0TWVkaQogCiBKU09iamVjdCogSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFs
T2JqZWN0LCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAog
Ym9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MiwxOCArMjIsMjEgQEAKICNkZWZpbmUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcl9oCiAK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI7Ci0KIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNl
OwogcHVibGljOgotICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI+KTsKKyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGltcGwpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgfQor
CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtNTAsNiArNTMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFJlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbV9p
bXBsOwogcHJvdGVjdGVkOgorICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI+KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogfTsKIApAQCAtNjAsNiArNjQsMTEgQEAgY2xhc3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdAogICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFz
ZTsKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8g
c19pbmZvOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtNjcsNiAr
NzYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQor
Citwcml2YXRlOgogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoSlND
OjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgeyB9CiBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCShyZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDE1
IEBAIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9iajo6Q09OU1RfVkEKIENPTVBJTEVfQVNT
RVJUKDB4MWFiYyA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xNCwgVGVzdE9iakVudW1DT05TVF9W
QUxVRV8xNElzV3JvbmdVc2VEb250Q2hlY2tFbnVtcyk7CiAKIGNsYXNzIEpTVGVzdE9iakNvbnN0
cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXB1YmxpYzoKK3ByaXZhdGU6
CiAgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgSlNUZXN0T2Jq
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iakNvbnN0cnVjdG9yPigq
ZXhlYy0+aGVhcCgpKSkgSlNUZXN0T2JqQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpOworICAgIH0KKwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYp
OwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC0yNjUsNyArMjcx
LDcgQEAgSlNUZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBzdHJ1Y3R1cgogCiBKU09iamVj
dCogSlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVGVzdE9ialBy
b3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0T2JqUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0T2JqUHJvdG90eXBl
OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdE9ialByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHJldmlzaW9uIDkxNzU2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiwxOCArMjIsMjEgQEAKICNkZWZpbmUgSlNUZXN0T2JqX2gKIAogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlIDxy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdFdpdGhH
bG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL09iamVjdFByb3RvdHlwZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRlc3RPYmo7Ci0KIGNsYXNzIEpTVGVzdE9iaiA6
IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CiBw
dWJsaWM6Ci0gICAgSlNUZXN0T2JqKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qq
LCBQYXNzUmVmUHRyPFRlc3RPYmo+KTsKKyAgICBzdGF0aWMgSlNUZXN0T2JqKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UGFzc1JlZlB0cjxUZXN0T2JqPiBpbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFw
KSkgSlNUZXN0T2JqKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC01OSw2ICs2Miw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgUmVmUHRyPFRlc3RPYmo+IG1faW1wbDsKIHByb3RlY3RlZDoKKyAgICBK
U1Rlc3RPYmooSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8
VGVzdE9iaj4pOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB9
OwogCkBAIC02OSw2ICs3MywxMSBAQCBjbGFzcyBKU1Rlc3RPYmpQcm90b3R5cGUgOiBwdWJsaWMg
SlNDOjpKCiAgICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwog
cHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU1Rlc3RPYmpQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqUHJvdG90eXBlPihnbG9iYWxE
YXRhLmhlYXApKSBKU1Rlc3RPYmpQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CkBAIC03Niw2ICs4NSw4
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CisKK3By
aXZhdGU6CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gOTE3NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsMTUg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFNlcmlhbAogI3VuZGVmIFRIVU5L
X0dFTkVSQVRPUgogc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMs
IDAgfTsKIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
OworICAgIH0KKwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0
YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC0xMzAsNyArMTM2LDcgQEAgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpKUwogCiBKU09iamVjdCogSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBuZXcg
KGV4ZWMpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZShleGVj
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKIGJvb2wgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmgJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxOCArMjQsMjEgQEAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PYmplY3RQcm90b3R5cGUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlOwotCiBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgOiBw
dWJsaWMgSlNET01XcmFwcGVyIHsKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwogcHVi
bGljOgotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlPik7CisgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZT4gaW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgfQorCiAgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtNTIsNiArNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFJlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBtX2ltcGw7CiBw
cm90ZWN0ZWQ6CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U+KTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogfTsKIApAQCAtNjIsMTEgKzY2LDE4IEBAIGNsYXNzIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmEKICAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0IEJhc2U7CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgfQor
CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICB9CisKK3ByaXZhdGU6CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlND
OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpIHsgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5oCShyZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIAogY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewog
cHVibGljOgorICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEJpbmRpbmdzOjpBcnJheSogYXJyYXkpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5KGV4ZWMs
IGFycmF5KTsKKyAgICB9CisKICAgICB0eXBlZGVmIEJpbmRpbmdzOjpBcnJheSBCaW5kaW5nc0Fy
cmF5OwotICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBCaW5kaW5nczo6QXJyYXkqKTsKICAg
ICB2aXJ0dWFsIH5SdW50aW1lQXJyYXkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
IG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKQEAgLTY3LDYgKzcxLDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0Fy
cmF5OjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKKyAgICBSdW50aW1lQXJyYXkoRXhlY1N0
YXRlKiwgQmluZGluZ3M6OkFycmF5Kik7CiAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICBzdGF0aWMgSlNW
YWx1ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCB1bnNpZ25lZCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDkxNzU2KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDExIEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIFJ1bnRpbWVP
YmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBS
dW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUGFz
c1JlZlB0cjxJbnN0YW5jZT4pOworICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAg
ICB9CisKICAgICB2aXJ0dWFsIH5SdW50aW1lT2JqZWN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC02Nyw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByb3RlY3RlZDoKKyAgICBSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4pOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YUFycmF5SlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2pzYy9KYXZhQXJyYXlKU0MuY3BwCShyZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgSlNWYWx1ZSBKYXZhQXJyYXk6OmNvbnZlcnRKT2JqZWN0VG9BcnJheQogICAg
IGlmICh0eXBlWzBdICE9ICdbJykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAg
ICByZXR1cm4gbmV3IChleGVjKSBSdW50aW1lQXJyYXkoZXhlYywgbmV3IEphdmFBcnJheShhbk9i
amVjdCwgdHlwZSwgcm9vdE9iamVjdCkpOworICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0
ZShleGVjLCBuZXcgSmF2YUFycmF5KGFuT2JqZWN0LCB0eXBlLCByb290T2JqZWN0KSk7CiB9CiAK
IEphdmFBcnJheTo6SmF2YUFycmF5KGpvYmplY3QgYXJyYXksIGNvbnN0IGNoYXIqIHR5cGUsIFBh
c3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qc2MvQnJpZGdlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5jcHAJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcg
QEAgUnVudGltZU9iamVjdCogSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplYwogCiAgICAgLy8gRklY
TUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmln
aHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgotICAgIHJldHVybiBuZXcgKGV4ZWMpIFJ1bnRpbWVP
YmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBXZWJDb3JlOjpkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKKyAgICByZXR1
cm4gUnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lT2JqZWN0PihleGVj
KSwgdGhpcyk7CiB9CiAKIHZvaWQgSW5zdGFuY2U6OndpbGxJbnZhbGlkYXRlUnVudGltZU9iamVj
dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCShy
ZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIEpTVmFsdWUgY29udmVydE9i
amNWYWx1ZVRvVmFsdWUoRXhlY1N0YXQKICAgICAgICAgICAgIGlmIChbb2JqIGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKFtv
YmogZG91YmxlVmFsdWVdKTsKICAgICAgICAgICAgIGlmIChbb2JqIGlzS2luZE9mQ2xhc3M6W05T
QXJyYXkgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBSdW50aW1l
QXJyYXkoZXhlYywgbmV3IE9iamNBcnJheShvYmosIHJvb3RPYmplY3QpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUnVudGltZUFycmF5OjpjcmVhdGUoZXhlYywgbmV3IE9iamNBcnJheShvYmos
IHJvb3RPYmplY3QpKTsKICAgICAgICAgICAgIGlmIChbb2JqIGlzS2luZE9mQ2xhc3M6d2ViU2Ny
aXB0T2JqZWN0Q2xhc3MoKV0pIHsKICAgICAgICAgICAgICAgICBKU09iamVjdCogaW1wID0gW29i
aiBfaW1wXTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW1wID8gaW1wIDoganNVbmRlZmluZWQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHJldmlzaW9u
IDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MTUsNyArOTE1LDcgQEAgSlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1Zh
bHVlKEV4ZWNTdGF0ZQogICAgICAgICBRQnl0ZUFycmF5IHF0Qnl0ZUFycmF5ID0gdmFyaWFudC52
YWx1ZTxRQnl0ZUFycmF5PigpOwogICAgICAgICBXVEY6OlJlZlB0cjxXVEY6OkJ5dGVBcnJheT4g
d3RmQnl0ZUFycmF5ID0gV1RGOjpCeXRlQXJyYXk6OmNyZWF0ZShxdEJ5dGVBcnJheS5sZW5ndGgo
KSk7CiAgICAgICAgIG1lbWNweSh3dGZCeXRlQXJyYXktPmRhdGEoKSwgcXRCeXRlQXJyYXkuY29u
c3REYXRhKCksIHF0Qnl0ZUFycmF5Lmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhl
YykgSlNDOjpKU0J5dGVBcnJheShleGVjLCBKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIHd0ZkJ5dGVBcnJheS5nZXQoKSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUoZXhlYywgSlNDOjpKU0J5dGVB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpLCB3dGZC
eXRlQXJyYXkuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICh0eXBlID09IFFNZXRhVHlwZTo6UU9i
amVjdFN0YXIgfHwgdHlwZSA9PSBRTWV0YVR5cGU6OlFXaWRnZXRTdGFyKSB7CkBAIC05NzMsMTYg
Kzk3MywxNiBAQCBKU1ZhbHVlIGNvbnZlcnRRVmFyaWFudFRvVmFsdWUoRXhlY1N0YXRlCiAgICAg
aWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRVmFyaWFudExpc3QpIHsKICAgICAgICAgUVZhcmlhbnRM
aXN0IHZsID0gdmFyaWFudC50b0xpc3QoKTsKICAgICAgICAgcUNvbnZEZWJ1ZygpIDw8ICJnb3Qg
YSAiIDw8IHZsLmNvdW50KCkgPDwgIiBsZW5ndGggbGlzdDoiIDw8IHZsOwotICAgICAgICByZXR1
cm4gbmV3IChleGVjKSBSdW50aW1lQXJyYXkoZXhlYywgbmV3IFF0QXJyYXk8UVZhcmlhbnQ+KHZs
LCBRTWV0YVR5cGU6OlZvaWQsIHJvb3QpKTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6
Y3JlYXRlKGV4ZWMsIG5ldyBRdEFycmF5PFFWYXJpYW50Pih2bCwgUU1ldGFUeXBlOjpWb2lkLCBy
b290KSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IFFNZXRhVHlwZTo6UVN0cmluZ0xpc3QpIHsK
ICAgICAgICAgUVN0cmluZ0xpc3Qgc2wgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmdMaXN0PigpOwot
ICAgICAgICByZXR1cm4gbmV3IChleGVjKSBSdW50aW1lQXJyYXkoZXhlYywgbmV3IFF0QXJyYXk8
UVN0cmluZz4oc2wsIFFNZXRhVHlwZTo6UVN0cmluZywgcm9vdCkpOworICAgICAgICByZXR1cm4g
UnVudGltZUFycmF5OjpjcmVhdGUoZXhlYywgbmV3IFF0QXJyYXk8UVN0cmluZz4oc2wsIFFNZXRh
VHlwZTo6UVN0cmluZywgcm9vdCkpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAoUU1ldGFUeXBl
OjpUeXBlKSBxTWV0YVR5cGVJZDxRT2JqZWN0TGlzdD4oKSkgewogICAgICAgICBRT2JqZWN0TGlz
dCBvbD0gdmFyaWFudC52YWx1ZTxRT2JqZWN0TGlzdD4oKTsKLSAgICAgICAgcmV0dXJuIG5ldyAo
ZXhlYykgUnVudGltZUFycmF5KGV4ZWMsIG5ldyBRdEFycmF5PFFPYmplY3QqPihvbCwgUU1ldGFU
eXBlOjpRT2JqZWN0U3Rhciwgcm9vdCkpOworICAgICAgICByZXR1cm4gUnVudGltZUFycmF5Ojpj
cmVhdGUoZXhlYywgbmV3IFF0QXJyYXk8UU9iamVjdCo+KG9sLCBRTWV0YVR5cGU6OlFPYmplY3RT
dGFyLCByb290KSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IChRTWV0YVR5cGU6OlR5cGUpcU1l
dGFUeXBlSWQ8UUxpc3Q8aW50PiA+KCkpIHsKICAgICAgICAgUUxpc3Q8aW50PiBpbD0gdmFyaWFu
dC52YWx1ZTxRTGlzdDxpbnQ+ID4oKTsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGlt
ZUFycmF5KGV4ZWMsIG5ldyBRdEFycmF5PGludD4oaWwsIFFNZXRhVHlwZTo6SW50LCByb290KSk7
CisgICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjLCBuZXcgUXRBcnJheTxp
bnQ+KGlsLCBRTWV0YVR5cGU6OkludCwgcm9vdCkpOwogICAgIH0KIAogICAgIGlmICh0eXBlID09
IChRTWV0YVR5cGU6OlR5cGUpcU1ldGFUeXBlSWQ8UVZhcmlhbnQ+KCkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>